diff --git a/.ci/Dockerfile b/.ci/Dockerfile index b2254c8fb1e057..ec7befe05f0d4d 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,7 +1,7 @@ # NOTE: This Dockerfile is ONLY used to run certain tasks in CI. It is not used to run Kibana or as a distributable. # If you're looking for the Kibana Docker image distributable, please see: src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts -ARG NODE_VERSION=12.19.1 +ARG NODE_VERSION=14.15.1 FROM node:${NODE_VERSION} AS base diff --git a/.ci/build_docker.sh b/.ci/build_docker.sh index 1f45182aad8408..07013f13cdae5e 100755 --- a/.ci/build_docker.sh +++ b/.ci/build_docker.sh @@ -7,4 +7,8 @@ cd "$(dirname "${0}")" cp /usr/local/bin/runbld ./ cp /usr/local/bin/bash_standard_lib.sh ./ -docker build -t kibana-ci -f ./Dockerfile . +if which docker >/dev/null; then + docker build -t kibana-ci -f ./Dockerfile . +else + echo "Docker binary is not available. Skipping the docker build this time." +fi diff --git a/.ci/es-snapshots/Jenkinsfile_verify_es b/.ci/es-snapshots/Jenkinsfile_verify_es index a6fe980242afe1..3c38d6279a0382 100644 --- a/.ci/es-snapshots/Jenkinsfile_verify_es +++ b/.ci/es-snapshots/Jenkinsfile_verify_es @@ -55,6 +55,7 @@ kibanaPipeline(timeoutMinutes: 150) { 'xpack-ciGroup8': kibanaPipeline.xpackCiGroupProcess(8), 'xpack-ciGroup9': kibanaPipeline.xpackCiGroupProcess(9), 'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10), + 'xpack-ciGroup11': kibanaPipeline.xpackCiGroupProcess(11), ]), ]) } diff --git a/.ci/jobs.yml b/.ci/jobs.yml index 3add92aadd2561..d4ec8a3d5a6997 100644 --- a/.ci/jobs.yml +++ b/.ci/jobs.yml @@ -31,6 +31,7 @@ JOB: - x-pack-ciGroup8 - x-pack-ciGroup9 - x-pack-ciGroup10 + - x-pack-ciGroup11 - x-pack-accessibility - x-pack-visualRegression diff --git a/.ci/packer_cache_for_branch.sh b/.ci/packer_cache_for_branch.sh index 0d9b22b04dbd0d..bc427bf927f116 100755 --- a/.ci/packer_cache_for_branch.sh +++ b/.ci/packer_cache_for_branch.sh @@ -49,7 +49,8 @@ tar -cf "$HOME/.kibana/bootstrap_cache/$branch.tar" \ .chromium \ .es \ .chromedriver \ - .geckodriver; + .geckodriver \ + .yarn-local-mirror; echo "created $HOME/.kibana/bootstrap_cache/$branch.tar" diff --git a/.ci/teamcity/tests/xpack_list_cyclic_dependency.sh b/.ci/teamcity/tests/xpack_list_cyclic_dependency.sh deleted file mode 100755 index 39f79f94744c70..00000000000000 --- a/.ci/teamcity/tests/xpack_list_cyclic_dependency.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source "$(dirname "${0}")/../util.sh" - -cd x-pack -checks-reporter-with-killswitch "X-Pack List cyclic dependency test" node plugins/lists/scripts/check_circular_deps diff --git a/.ci/teamcity/tests/xpack_siem_cyclic_dependency.sh b/.ci/teamcity/tests/xpack_siem_cyclic_dependency.sh deleted file mode 100755 index e3829c961fac8a..00000000000000 --- a/.ci/teamcity/tests/xpack_siem_cyclic_dependency.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source "$(dirname "${0}")/../util.sh" - -cd x-pack -checks-reporter-with-killswitch "X-Pack SIEM cyclic dependency test" node plugins/security_solution/scripts/check_circular_deps diff --git a/.eslintignore b/.eslintignore index 1d58aff7c6a828..c7f0b9640f8694 100644 --- a/.eslintignore +++ b/.eslintignore @@ -44,3 +44,4 @@ snapshots.js /packages/kbn-ui-framework/doc_site/build /packages/kbn-ui-framework/generator-kui/*/templates/ /packages/kbn-ui-shared-deps/flot_charts +/packages/kbn-monaco/src/painless/antlr diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 93d49dc18d417a..0993876f98a6a7 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -69,7 +69,8 @@ /x-pack/plugins/apm/ @elastic/apm-ui /x-pack/test/functional/apps/apm/ @elastic/apm-ui /src/plugins/apm_oss/ @elastic/apm-ui -/src/apm.js @watson @vigneshshanmugam +/src/apm.js @elastic/kibana-core @vigneshshanmugam +/packages/kbn-apm-config-loader/ @elastic/kibana-core @vigneshshanmugam #CC# /src/plugins/apm_oss/ @elastic/apm-ui #CC# /x-pack/plugins/observability/ @elastic/apm-ui @@ -132,7 +133,7 @@ /x-pack/test/functional_basic/apps/transform/ @elastic/ml-ui # Maps -/x-pack/plugins/maps/ @elastic/kibana-gis +#CC# /x-pack/plugins/maps/ @elastic/kibana-gis /x-pack/test/api_integration/apis/maps/ @elastic/kibana-gis /x-pack/test/functional/apps/maps/ @elastic/kibana-gis /x-pack/test/functional/es_archives/maps/ @elastic/kibana-gis @@ -141,9 +142,8 @@ #CC# /src/plugins/maps_oss/ @elastic/kibana-gis #CC# /x-pack/plugins/file_upload @elastic/kibana-gis #CC# /x-pack/plugins/maps_legacy_licensing @elastic/kibana-gis -#CC# /src/plugins/home/server/tutorials @elastic/kibana-gis -#CC# /src/plugins/tile_map/ @elastic/kibana-gis -#CC# /src/plugins/region_map/ @elastic/kibana-gis +/src/plugins/tile_map/ @elastic/kibana-gis +/src/plugins/region_map/ @elastic/kibana-gis # Operations /src/dev/ @elastic/kibana-operations @@ -187,6 +187,9 @@ /x-pack/test/saved_object_tagging/ @elastic/kibana-core /packages/kbn-config-schema/ @elastic/kibana-core /packages/kbn-std/ @elastic/kibana-core +/packages/kbn-config/ @elastic/kibana-core +/packages/kbn-logging/ @elastic/kibana-core +/packages/kbn-legacy-logging/ @elastic/kibana-core /src/legacy/server/config/ @elastic/kibana-core /src/legacy/server/http/ @elastic/kibana-core /src/legacy/server/logging/ @elastic/kibana-core @@ -204,6 +207,28 @@ #CC# /x-pack/plugins/features/ @elastic/kibana-core #CC# /x-pack/plugins/global_search/ @elastic/kibana-core +# Kibana Telemetry +/packages/kbn-analytics/ @elastic/kibana-core +/packages/kbn-telemetry-tools/ @elastic/kibana-core +/src/plugins/kibana_usage_collection/ @elastic/kibana-core +/src/plugins/newsfeed/ @elastic/kibana-core +/src/plugins/telemetry/ @elastic/kibana-core +/src/plugins/telemetry_collection_manager/ @elastic/kibana-core +/src/plugins/telemetry_management_section/ @elastic/kibana-core +/src/plugins/usage_collection/ @elastic/kibana-core +/x-pack/plugins/telemetry_collection_xpack/ @elastic/kibana-core +/.telemetryrc.json @elastic/kibana-core +/x-pack/.telemetryrc.json @elastic/kibana-core +src/plugins/telemetry/schema/legacy_oss_plugins.json @elastic/kibana-core +src/plugins/telemetry/schema/oss_plugins.json @elastic/kibana-core +x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kibana-core + +# Kibana Localization +/src/dev/i18n/ @elastic/kibana-localization @elastic/kibana-core +/src/core/public/i18n/ @elastic/kibana-localization @elastic/kibana-core +/packages/kbn-i18n/ @elastic/kibana-localization @elastic/kibana-core +#CC# /x-pack/plugins/translations/ @elastic/kibana-localization @elastic/kibana-core + # Security /src/core/server/csp/ @elastic/kibana-security @elastic/kibana-core /src/plugins/security_oss/ @elastic/kibana-security @@ -221,28 +246,6 @@ #CC# /x-pack/plugins/security_solution/ @elastic/kibana-security #CC# /x-pack/plugins/security/ @elastic/kibana-security -# Kibana Localization -/src/dev/i18n/ @elastic/kibana-localization -/src/core/public/i18n/ @elastic/kibana-localization -/packages/kbn-i18n/ @elastic/kibana-localization -#CC# /x-pack/plugins/translations/ @elastic/kibana-localization - -# Kibana Telemetry -/packages/kbn-analytics/ @elastic/kibana-telemetry -/packages/kbn-telemetry-tools/ @elastic/kibana-telemetry -/src/plugins/kibana_usage_collection/ @elastic/kibana-telemetry -/src/plugins/newsfeed/ @elastic/kibana-telemetry -/src/plugins/telemetry/ @elastic/kibana-telemetry -/src/plugins/telemetry_collection_manager/ @elastic/kibana-telemetry -/src/plugins/telemetry_management_section/ @elastic/kibana-telemetry -/src/plugins/usage_collection/ @elastic/kibana-telemetry -/x-pack/plugins/telemetry_collection_xpack/ @elastic/kibana-telemetry -/.telemetryrc.json @elastic/kibana-telemetry -/x-pack/.telemetryrc.json @elastic/kibana-telemetry -src/plugins/telemetry/schema/legacy_oss_plugins.json @elastic/kibana-telemetry -src/plugins/telemetry/schema/oss_plugins.json @elastic/kibana-telemetry -x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kibana-telemetry - # Kibana Alerting Services /x-pack/plugins/alerts/ @elastic/kibana-alerting-services /x-pack/plugins/actions/ @elastic/kibana-alerting-services @@ -259,8 +262,31 @@ x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @elastic/kib # Enterprise Search # Shared -/x-pack/plugins/enterprise_search/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/* @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/common/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/public/* @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/public/applications/* @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/public/applications/enterprise_search/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/public/applications/shared/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/public/applications/__mocks__/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/* @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/lib/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/__mocks__/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/collectors/enterprise_search/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/collectors/lib/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/routes/enterprise_search/ @elastic/enterprise-search-frontend +/x-pack/plugins/enterprise_search/server/saved_objects/enterprise_search/ @elastic/enterprise-search-frontend /x-pack/test/functional_enterprise_search/ @elastic/enterprise-search-frontend +# App Search +/x-pack/plugins/enterprise_search/public/applications/app_search/ @elastic/app-search-frontend +/x-pack/plugins/enterprise_search/server/routes/app_search/ @elastic/app-search-frontend +/x-pack/plugins/enterprise_search/server/collectors/app_search/ @elastic/app-search-frontend +/x-pack/plugins/enterprise_search/server/saved_objects/app_search/ @elastic/app-search-frontend +# Workplace Search +/x-pack/plugins/enterprise_search/public/applications/workplace_search/ @elastic/workplace-search-frontend +/x-pack/plugins/enterprise_search/server/routes/workplace_search/ @elastic/workplace-search-frontend +/x-pack/plugins/enterprise_search/server/collectors/workplace_search/ @elastic/workplace-search-frontend +/x-pack/plugins/enterprise_search/server/saved_objects/workplace_search/ @elastic/workplace-search-frontend # Elasticsearch UI /src/plugins/dev_tools/ @elastic/es-ui diff --git a/.gitignore b/.gitignore index 45034583cffbb3..b786a419383b99 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ report.asciidoc # TS incremental build cache *.tsbuildinfo + +# Yarn local mirror content +.yarn-local-mirror diff --git a/.i18nrc.json b/.i18nrc.json index 653c67b535bff7..b425dd99857dc3 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -27,6 +27,8 @@ "src/plugins/management" ], "maps_legacy": "src/plugins/maps_legacy", + "monaco": "packages/kbn-monaco/src", + "presentationUtil": "src/plugins/presentation_util", "indexPatternManagement": "src/plugins/index_pattern_management", "advancedSettings": "src/plugins/advanced_settings", "kibana_legacy": "src/plugins/kibana_legacy", diff --git a/.node-version b/.node-version index e9f788b12771f1..2f5ee741e0d770 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -12.19.1 +14.15.1 diff --git a/.nvmrc b/.nvmrc index e9f788b12771f1..2f5ee741e0d770 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -12.19.1 +14.15.1 diff --git a/.teamcity/src/builds/test/QuickTests.kt b/.teamcity/src/builds/test/QuickTests.kt index 1fdb1e366e83fb..cca10cc3f2aa2f 100644 --- a/.teamcity/src/builds/test/QuickTests.kt +++ b/.teamcity/src/builds/test/QuickTests.kt @@ -13,8 +13,6 @@ object QuickTests : BuildType({ val testScripts = mapOf( "Test Hardening" to ".ci/teamcity/tests/test_hardening.sh", - "X-Pack List cyclic dependency" to ".ci/teamcity/tests/xpack_list_cyclic_dependency.sh", - "X-Pack SIEM cyclic dependency" to ".ci/teamcity/tests/xpack_siem_cyclic_dependency.sh", "Test Projects" to ".ci/teamcity/tests/test_projects.sh", "Mocha Tests" to ".ci/teamcity/tests/mocha.sh" ) diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 00000000000000..eceec9ca34a22e --- /dev/null +++ b/.yarnrc @@ -0,0 +1,5 @@ +# Configure an offline yarn mirror in the data folder +yarn-offline-mirror ".yarn-local-mirror" + +# Always look into the cache first before fetching online +--install.prefer-offline true diff --git a/README.md b/README.md index b786d95ce29942..6977c198e904d7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Kibana is your window into the [Elastic Stack](https://www.elastic.co/products). If you just want to try Kibana out, check out the [Elastic Stack Getting Started Page](https://www.elastic.co/start) to give it a whirl. -If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the [Kibana Getting Started Page](https://www.elastic.co/guide/en/kibana/current/getting-started.html). +If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the [Kibana Getting Started Page](https://www.elastic.co/guide/en/kibana/current/get-started.html). ### Using a Kibana Release diff --git a/STYLEGUIDE.md b/STYLEGUIDE.md index 94bb40ab3ff2e1..cb75452a28cd29 100644 --- a/STYLEGUIDE.md +++ b/STYLEGUIDE.md @@ -589,6 +589,24 @@ Do not use setters, they cause more problems than they can solve. [sideeffect]: http://en.wikipedia.org/wiki/Side_effect_(computer_science) +### Avoid circular dependencies + +As part of a future effort to use correct and idempotent build tools we need our code to be +able to be represented as a directed acyclic graph. We must avoid having circular dependencies +both on code and type imports to achieve that. One of the most critical parts is the plugins +code. We've developed a tool to identify plugins with circular dependencies which +has allowed us to build a list of plugins who have circular dependencies +between each other. + +When building plugins we should avoid importing from plugins +who are known to have circular dependencies at the moment as well as introducing +new circular dependencies. You can run the same tool we use on our CI locally by +typing `node scripts/find_plugins_with_circular_deps --debug`. It will error out in +case new circular dependencies has been added with your changes +(which will also happen in the CI) as well as print out the current list of +the known circular dependencies which, as mentioned before, should not be imported +by your code until the circular dependencies on these have been solved. + ## SASS files When writing a new component, create a sibling SASS file of the same name and import directly into the **top** of the JS/TS component file. Doing so ensures the styles are never separated or lost on import and allows for better modularization (smaller individual plugin asset footprint). diff --git a/config/kibana.yml b/config/kibana.yml index ce9fe28dae9160..7c7378fb5d29d2 100644 --- a/config/kibana.yml +++ b/config/kibana.yml @@ -18,6 +18,10 @@ # default to `true` starting in Kibana 7.0. #server.rewriteBasePath: false +# Specifies the public URL at which Kibana is available for end users. If +# `server.basePath` is configured this URL should end with the same basePath. +#server.publicBaseUrl: "" + # The maximum payload size in bytes for incoming server requests. #server.maxPayloadBytes: 1048576 diff --git a/docs/api/logstash-configuration-management/create-logstash.asciidoc b/docs/api/logstash-configuration-management/create-logstash.asciidoc index b608f4ee698f74..9bd5a9028ee9af 100644 --- a/docs/api/logstash-configuration-management/create-logstash.asciidoc +++ b/docs/api/logstash-configuration-management/create-logstash.asciidoc @@ -20,9 +20,6 @@ experimental[] Create a centrally-managed Logstash pipeline, or update an existi [[logstash-configuration-management-api-create-request-body]] ==== Request body -`id`:: - (Required, string) The pipeline ID. - `description`:: (Optional, string) The pipeline description. diff --git a/docs/api/saved-objects/create.asciidoc b/docs/api/saved-objects/create.asciidoc index 50809a1bd5d4e2..d7a368034ef07f 100644 --- a/docs/api/saved-objects/create.asciidoc +++ b/docs/api/saved-objects/create.asciidoc @@ -9,11 +9,13 @@ experimental[] Create {kib} saved objects. [[saved-objects-api-create-request]] ==== Request -`POST :/api/saved_objects/` + +`POST :/api/saved_objects/` `POST :/api/saved_objects//` -`POST :/s//saved_objects/` +`POST :/s//api/saved_objects/` + +`POST :/s//api/saved_objects//` [[saved-objects-api-create-path-params]] ==== Path parameters diff --git a/docs/api/spaces-management/copy_saved_objects.asciidoc b/docs/api/spaces-management/copy_saved_objects.asciidoc index 853cca035a2914..1dd9cc9734a52e 100644 --- a/docs/api/spaces-management/copy_saved_objects.asciidoc +++ b/docs/api/spaces-management/copy_saved_objects.asciidoc @@ -51,9 +51,17 @@ You can request to overwrite any objects that already exist in the target space (Optional, boolean) When set to `true`, all saved objects related to the specified saved objects will also be copied into the target spaces. The default value is `false`. +`createNewCopies`:: + (Optional, boolean) Creates new copies of saved objects, regenerates each object ID, and resets the origin. When used, potential conflict + errors are avoided. The default value is `true`. ++ +NOTE: This cannot be used with the `overwrite` option. + `overwrite`:: (Optional, boolean) When set to `true`, all conflicts are automatically overidden. When a saved object with a matching `type` and `id` exists in the target space, that version is replaced with the version from the source space. The default value is `false`. ++ +NOTE: This cannot be used with the `createNewCopies` option. [role="child_attributes"] [[spaces-api-copy-saved-objects-response-body]] @@ -128,8 +136,7 @@ $ curl -X POST api/spaces/_copy_saved_objects "id": "my-dashboard" }], "spaces": ["marketing"], - "includeReferences": true, - "createNewcopies": true + "includeReferences": true } ---- // KIBANA @@ -193,7 +200,8 @@ $ curl -X POST api/spaces/_copy_saved_objects "id": "my-dashboard" }], "spaces": ["marketing"], - "includeReferences": true + "includeReferences": true, + "createNewCopies": false } ---- // KIBANA @@ -254,7 +262,8 @@ $ curl -X POST api/spaces/_copy_saved_objects "id": "my-dashboard" }], "spaces": ["marketing", "sales"], - "includeReferences": true + "includeReferences": true, + "createNewCopies": false } ---- // KIBANA @@ -405,7 +414,8 @@ $ curl -X POST api/spaces/_copy_saved_objects "id": "my-dashboard" }], "spaces": ["marketing"], - "includeReferences": true + "includeReferences": true, + "createNewCopies": false } ---- // KIBANA diff --git a/docs/api/spaces-management/resolve_copy_saved_objects_conflicts.asciidoc b/docs/api/spaces-management/resolve_copy_saved_objects_conflicts.asciidoc index 6d799ebb0014e6..1a0017fe167ab4 100644 --- a/docs/api/spaces-management/resolve_copy_saved_objects_conflicts.asciidoc +++ b/docs/api/spaces-management/resolve_copy_saved_objects_conflicts.asciidoc @@ -45,6 +45,10 @@ Execute the <>, w `includeReferences`:: (Optional, boolean) When set to `true`, all saved objects related to the specified saved objects are copied into the target spaces. The `includeReferences` must be the same values used during the failed <> operation. The default value is `false`. +`createNewCopies`:: + (Optional, boolean) Creates new copies of the saved objects, regenerates each object ID, and resets the origin. When enabled during the + initial copy, also enable when resolving copy errors. The default value is `true`. + `retries`:: (Required, object) The retry operations to attempt, which can specify how to resolve different types of errors. Object keys represent the target space IDs. @@ -148,6 +152,7 @@ $ curl -X POST api/spaces/_resolve_copy_saved_objects_errors "id": "my-dashboard" }], "includeReferences": true, + "createNewCopies": false, "retries": { "sales": [ { @@ -246,6 +251,7 @@ $ curl -X POST api/spaces/_resolve_copy_saved_objects_errors "id": "my-dashboard" }], "includeReferences": true, + "createNewCopies": false, "retries": { "marketing": [ { diff --git a/docs/api/using-api.asciidoc b/docs/api/using-api.asciidoc index c796aac3d6b271..d66718be4074a6 100644 --- a/docs/api/using-api.asciidoc +++ b/docs/api/using-api.asciidoc @@ -61,7 +61,7 @@ For all APIs, you must use a request header. The {kib} APIs support the `kbn-xsr By default, you must use `kbn-xsrf` for all API calls, except in the following scenarios: * The API endpoint uses the `GET` or `HEAD` operations -* The path is whitelisted using the <> setting +* The path is allowed using the <> setting * XSRF protections are disabled using the <> setting `Content-Type: application/json`:: diff --git a/docs/apm/api.asciidoc b/docs/apm/api.asciidoc index 01ba084b9e9e7a..d9a8d0558714f0 100644 --- a/docs/apm/api.asciidoc +++ b/docs/apm/api.asciidoc @@ -40,7 +40,7 @@ users interacting with APM APIs must have <> setting +* The path is allowed using the <> setting * XSRF protections are disabled using the <> setting `Content-Type: application/json`:: diff --git a/docs/apm/apm-alerts.asciidoc b/docs/apm/apm-alerts.asciidoc index 7bdfe80b421777..b4afc2788895ce 100644 --- a/docs/apm/apm-alerts.asciidoc +++ b/docs/apm/apm-alerts.asciidoc @@ -6,7 +6,6 @@ Create an alert ++++ -beta::[] The APM app integrates with Kibana's {kibana-ref}/alerting-getting-started.html[alerting and actions] feature. It provides a set of built-in **actions** and APM specific threshold **alerts** for you to use diff --git a/docs/developer/architecture/add-data-tutorials.asciidoc b/docs/developer/architecture/add-data-tutorials.asciidoc index 3891b87a00e64b..8b6f7d54483644 100644 --- a/docs/developer/architecture/add-data-tutorials.asciidoc +++ b/docs/developer/architecture/add-data-tutorials.asciidoc @@ -28,11 +28,11 @@ Then register the tutorial object by calling `home.tutorials.registerTutorial(tu String values can contain variables that are substituted when rendered. Variables are specified by `{}`. For example: `{config.docs.version}` is rendered as `6.2` when running the tutorial in {kib} 6.2. -link:{kib-repo}tree/{branch}/src/legacy/core_plugins/kibana/public/home/np_ready/components/tutorial/replace_template_strings.js#L23[Provided variables] +link:{kib-repo}tree/{branch}/src/plugins/home/public/application/components/tutorial/replace_template_strings.js[Provided variables] [discrete] ==== Markdown String values can contain limited Markdown syntax. -link:{kib-repo}tree/{branch}/src/legacy/core_plugins/kibana/public/home/components/tutorial/content.js#L8[Enabled Markdown grammars] +link:{kib-repo}tree/{branch}/src/legacy/core_plugins/kibana/public/home/components/tutorial/content.js[Enabled Markdown grammars] diff --git a/docs/developer/architecture/core/index.asciidoc b/docs/developer/architecture/core/index.asciidoc new file mode 100644 index 00000000000000..48595690f9784e --- /dev/null +++ b/docs/developer/architecture/core/index.asciidoc @@ -0,0 +1,451 @@ +[[kibana-platform-api]] +== {kib} Core API + +experimental[] + +{kib} Core provides a set of low-level API's required to run all {kib} plugins. +These API's are injected into your plugin's lifecycle methods and may be invoked during that lifecycle only: + +[source,typescript] +---- +import type { PluginInitializerContext, CoreSetup, CoreStart } from 'kibana/server'; + +export class MyPlugin { + constructor(initializerContext: PluginInitializerContext) {} + + public setup(core: CoreSetup) { + // called when plugin is setting up during Kibana's startup sequence + } + + public start(core: CoreStart) { + // called after all plugins are set up + } + + public stop() { + // called when plugin is torn down during Kibana's shutdown sequence + } +} +---- + +=== Server-side +[[configuration-service]] +==== Configuration service +{kib} provides `ConfigService` if a plugin developer may want to support +adjustable runtime behavior for their plugins. +Plugins can only read their own configuration values, it is not possible to access the configuration values from {kib} Core or other plugins directly. + +[source,js] +---- +// in Legacy platform +const basePath = config.get('server.basePath'); +// in Kibana Platform 'basePath' belongs to the http service +const basePath = core.http.basePath.get(request); +---- + +To have access to your plugin config, you _should_: + +* Declare plugin-specific `configPath` (will fallback to plugin `id` +if not specified) in {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`kibana.json`] manifest file. +* Export schema validation for the config from plugin's main file. Schema is +mandatory. If a plugin reads from the config without schema declaration, +`ConfigService` will throw an error. + +*my_plugin/server/index.ts* +[source,typescript] +---- +import { schema, TypeOf } from '@kbn/config-schema'; +export const plugin = … +export const config = { + schema: schema.object(…), +}; +export type MyPluginConfigType = TypeOf; +---- + +* Read config value exposed via `PluginInitializerContext`. +*my_plugin/server/index.ts* +[source,typescript] +---- +import type { PluginInitializerContext } from 'kibana/server'; +export class MyPlugin { + constructor(initializerContext: PluginInitializerContext) { + this.config$ = initializerContext.config.create(); + // or if config is optional: + this.config$ = initializerContext.config.createIfExists(); + } +---- + +If your plugin also has a client-side part, you can also expose +configuration properties to it using the configuration `exposeToBrowser` +allow-list property. + +*my_plugin/server/index.ts* +[source,typescript] +---- +import { schema, TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor } from 'kibana/server'; + +const configSchema = schema.object({ + secret: schema.string({ defaultValue: 'Only on server' }), + uiProp: schema.string({ defaultValue: 'Accessible from client' }), +}); + +type ConfigType = TypeOf; + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + uiProp: true, + }, + schema: configSchema, +}; +---- + +Configuration containing only the exposed properties will be then +available on the client-side using the plugin's `initializerContext`: + +*my_plugin/public/index.ts* +[source,typescript] +---- +interface ClientConfigType { + uiProp: string; +} + +export class MyPlugin implements Plugin { + constructor(private readonly initializerContext: PluginInitializerContext) {} + + public async setup(core: CoreSetup, deps: {}) { + const config = this.initializerContext.config.get(); + } +---- + +All plugins are considered enabled by default. If you want to disable +your plugin, you could declare the `enabled` flag in the plugin +config. This is a special {kib} Platform key. {kib} reads its +value and won’t create a plugin instance if `enabled: false`. + +[source,js] +---- +export const config = { + schema: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), +}; +---- +[[handle-plugin-configuration-deprecations]] +===== Handle plugin configuration deprecations +If your plugin has deprecated configuration keys, you can describe them using +the `deprecations` config descriptor field. +Deprecations are managed on a per-plugin basis, meaning you don’t need to specify +the whole property path, but use the relative path from your plugin’s +configuration root. + +*my_plugin/server/index.ts* +[source,typescript] +---- +import { schema, TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor } from 'kibana/server'; + +const configSchema = schema.object({ + newProperty: schema.string({ defaultValue: 'Some string' }), +}); + +type ConfigType = TypeOf; + +export const config: PluginConfigDescriptor = { + schema: configSchema, + deprecations: ({ rename, unused }) => [ + rename('oldProperty', 'newProperty'), + unused('someUnusedProperty'), + ], +}; +---- + +In some cases, accessing the whole configuration for deprecations is +necessary. For these edge cases, `renameFromRoot` and `unusedFromRoot` +are also accessible when declaring deprecations. + +*my_plugin/server/index.ts* +[source,typescript] +---- +export const config: PluginConfigDescriptor = { + schema: configSchema, + deprecations: ({ renameFromRoot, unusedFromRoot }) => [ + renameFromRoot('oldplugin.property', 'myplugin.property'), + unusedFromRoot('oldplugin.deprecated'), + ], +}; +---- +==== Logging service +Allows a plugin to provide status and diagnostic information. +For detailed instructions see the {kib-repo}blob/{branch}/src/core/server/logging/README.md[logging service documentation]. + +[source,typescript] +---- +import type { PluginInitializerContext, CoreSetup, Plugin, Logger } from 'kibana/server'; + +export class MyPlugin implements Plugin { + private readonly logger: Logger; + + constructor(initializerContext: PluginInitializerContext) { + this.logger = initializerContext.logger.get(); + } + + public setup(core: CoreSetup) { + try { + this.logger.debug('doing something...'); + // … + } catch (e) { + this.logger.error('failed doing something...'); + } + } +} +---- + +==== Elasticsearch service +`Elasticsearch service` provides `elasticsearch.client` program API to communicate with Elasticsearch server REST API. +`elasticsearch.client` interacts with Elasticsearch service on behalf of: + +- `kibana_system` user via `elasticsearch.client.asInternalUser.*` methods. +- a current end-user via `elasticsearch.client.asCurrentUser.*` methods. In this case Elasticsearch client should be given the current user credentials. +See <> and <>. + +{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md[Elasticsearch service API docs] + +[source,typescript] +---- +import { CoreStart, Plugin } from 'kibana/public'; + +export class MyPlugin implements Plugin { + public start(core: CoreStart) { + async function asyncTask() { + const result = await core.elasticsearch.client.asInternalUser.ping(…); + } + asyncTask(); + } +} +---- + +For advanced use-cases, such as a search, use {kib-repo}blob/{branch}/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md[Data plugin] + +include::saved-objects-service.asciidoc[leveloffset=+1] + +==== HTTP service +Allows plugins: + +* to extend the {kib} server with custom REST API. +* to execute custom logic on an incoming request or server response. +* implement custom authentication and authorization strategy. + +See {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md[HTTP service API docs] + +[source,typescript] +---- +import { schema } from '@kbn/config-schema'; +import type { CoreSetup, Plugin } from 'kibana/server'; + +export class MyPlugin implements Plugin { + public setup(core: CoreSetup) { + const router = core.http.createRouter(); + + const validate = { + params: schema.object({ + id: schema.string(), + }), + }; + + router.get({ + path: 'my_plugin/{id}', + validate + }, + async (context, request, response) => { + const data = await findObject(request.params.id); + if (!data) return response.notFound(); + return response.ok({ + body: data, + headers: { + 'content-type': 'application/json' + } + }); + }); + } +} +---- + +==== UI settings service +The program interface to <>. +It makes it possible for Kibana plugins to extend Kibana UI Settings Management with custom settings. + +See: + +- {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.register.md[UI settings service Setup API docs] +- {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.register.md[UI settings service Start API docs] + +[source,typescript] +---- +import { schema } from '@kbn/config-schema'; +import type { CoreSetup,Plugin } from 'kibana/server'; + +export class MyPlugin implements Plugin { + public setup(core: CoreSetup) { + core.uiSettings.register({ + custom: { + value: '42', + schema: schema.string(), + }, + }); + const router = core.http.createRouter(); + router.get({ + path: 'my_plugin/{id}', + validate: …, + }, + async (context, request, response) => { + const customSetting = await context.uiSettings.client.get('custom'); + … + }); + } +} + +---- + +=== Client-side +==== Application service +Kibana has migrated to be a Single Page Application. Plugins should use `Application service` API to instruct Kibana what an application should be loaded & rendered in the UI in response to user interactions. +[source,typescript] +---- +import { AppMountParameters, CoreSetup, Plugin, DEFAULT_APP_CATEGORIES } from 'kibana/public'; + +export class MyPlugin implements Plugin { + public setup(core: CoreSetup) { + core.application.register({ // <1> + category: DEFAULT_APP_CATEGORIES.kibana, + id: 'my-plugin', + title: 'my plugin title', + euiIconType: '/path/to/some.svg', + order: 100, + appRoute: '/app/my_plugin', // <2> + async mount(params: AppMountParameters) { // <3> + // Load application bundle + const { renderApp } = await import('./application'); + // Get start services + const [coreStart, depsStart] = await core.getStartServices(); // <4> + // Render the application + return renderApp(coreStart, depsStart, params); // <5> + }, + }); + } +} +---- +<1> See {kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md[application.register interface] +<2> Application specific URL. +<3> `mount` callback is invoked when a user navigates to the application-specific URL. +<4> `core.getStartServices` method provides API available during `start` lifecycle. +<5> `mount` method must return a function that will be called to unmount the application. + +NOTE:: you are free to use any UI library to render a plugin application in DOM. +However, we recommend using React and https://elastic.github.io/eui[EUI] for all your basic UI +components to create a consistent UI experience. + +==== HTTP service +Provides API to communicate with the {kib} server. Feel free to use another HTTP client library to request 3rd party services. + +[source,typescript] +---- +import { CoreStart } from 'kibana/public'; +interface ResponseType {…}; +async function fetchData(core: CoreStart) { + return await core.http.get<>( + '/api/my_plugin/', + { query: … }, + ); +} +---- +See {kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.httpsetup.md[for all available API]. + +==== Elasticsearch service +Not available in the browser. Use {kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md[Data plugin] instead. + +== Patterns +[[scoped-services]] +=== Scoped services +Whenever Kibana needs to get access to data saved in elasticsearch, it +should perform a check whether an end-user has access to the data. In +the legacy platform, Kibana requires binding elasticsearch related API +with an incoming request to access elasticsearch service on behalf of a +user. + +[source,js] +---- +async function handler(req, res) { + const dataCluster = server.plugins.elasticsearch.getCluster('data'); + const data = await dataCluster.callWithRequest(req, 'ping'); +} +---- + +The Kibana Platform introduced a handler interface on the server-side to perform that association +internally. Core services, that require impersonation with an incoming +request, are exposed via `context` argument of +{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.requesthandler.md[the +request handler interface.] The above example looks in the Kibana Platform +as + +[source,js] +---- +async function handler(context, req, res) { + const data = await context.core.elasticsearch.client.asCurrentUser('ping'); +} +---- + +The +{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md[request +handler context] exposed the next scoped *core* services: + +[width="100%",cols="30%,70%",options="header",] +|=== +|Legacy Platform |Kibana Platform +|`request.getSavedObjectsClient` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md[`context.savedObjects.client`] + +|`server.plugins.elasticsearch.getCluster('admin')` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md[`context.elasticsearch.client`] + +|`server.plugins.elasticsearch.getCluster('data')` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md[`context.elasticsearch.client`] + +|`request.getUiSettingsService` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md[`context.uiSettings.client`] +|=== + +==== Declare a custom scoped service + +Plugins can extend the handler context with a custom API that will be +available to the plugin itself and all dependent plugins. For example, +the plugin creates a custom elasticsearch client and wants to use it via +the request handler context: + +[source,typescript] +---- +import type { CoreSetup, IScopedClusterClient } from 'kibana/server'; + +export interface MyPluginContext { + client: IScopedClusterClient; +} + +// extend RequestHandlerContext when a dependent plugin imports MyPluginContext from the file +declare module 'kibana/server' { + interface RequestHandlerContext { + myPlugin?: MyPluginContext; + } +} + +class MyPlugin { + setup(core: CoreSetup) { + const client = core.elasticsearch.createClient('myClient'); + core.http.registerRouteHandlerContext('myPlugin', (context, req, res) => { + return { client: client.asScoped(req) }; + }); + const router = core.http.createRouter(); + router.get( + { path: '/api/my-plugin/', validate: … }, + async (context, req, res) => { + const data = await context.myPlugin.client.asCurrentUser('endpoint'); + } + ); + } +---- diff --git a/docs/developer/architecture/core/saved-objects-service.asciidoc b/docs/developer/architecture/core/saved-objects-service.asciidoc new file mode 100644 index 00000000000000..047c3dffa63583 --- /dev/null +++ b/docs/developer/architecture/core/saved-objects-service.asciidoc @@ -0,0 +1,311 @@ +[[saved-objects-service]] +== Saved Objects service + +`Saved Objects service` allows {kib} plugins to use {es} like a primary +database. Think of it as an Object Document Mapper for {es}. Once a +plugin has registered one or more Saved Object types, the Saved Objects client +can be used to query or perform create, read, update and delete operations on +each type. + +By using Saved Objects your plugin can take advantage of the following +features: + +* Migrations can evolve your document's schema by transforming documents and +ensuring that the field mappings on the index are always up to date. +* a <> is automatically exposed for each type (unless +`hidden=true` is specified). +* a Saved Objects client that can be used from both the server and the browser. +* Users can import or export Saved Objects using the Saved Objects management +UI or the Saved Objects import/export API. +* By declaring `references`, an object's entire reference graph will be +exported. This makes it easy for users to export e.g. a `dashboard` object and +have all the `visualization` objects required to display the dashboard +included in the export. +* When the X-Pack security and spaces plugins are enabled these transparently +provide RBAC access control and the ability to organize Saved Objects into +spaces. + +This document contains developer guidelines and best-practices for plugins +wanting to use Saved Objects. + +=== Registering a Saved Object type +Saved object type definitions should be defined in their own `my_plugin/server/saved_objects` directory. + +The folder should contain a file per type, named after the snake_case name of the type, and an `index.ts` file exporting all the types. + +.src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts +[source,typescript] +---- +import { SavedObjectsType } from 'src/core/server'; + +export const dashboardVisualization: SavedObjectsType = { + name: 'dashboard_visualization', // <1> + hidden: false, + namespaceType: 'single', + mappings: { + dynamic: false, + properties: { + description: { + type: 'text', + }, + hits: { + type: 'integer', + }, + }, + }, + migrations: { + '1.0.0': migratedashboardVisualizationToV1, + '2.0.0': migratedashboardVisualizationToV2, + }, +}; +---- +<1> Since the name of a Saved Object type forms part of the url path for the +public Saved Objects HTTP API, these should follow our API URL path convention +and always be written as snake case. + +.src/plugins/my_plugin/server/saved_objects/index.ts +[source,typescript] +---- +export { dashboardVisualization } from './dashboard_visualization'; +export { dashboard } from './dashboard'; +---- + +.src/plugins/my_plugin/server/plugin.ts +[source,typescript] +---- +import { dashboard, dashboardVisualization } from './saved_objects'; + +export class MyPlugin implements Plugin { + setup({ savedObjects }) { + savedObjects.registerType(dashboard); + savedObjects.registerType(dashboardVisualization); + } +} +---- + +=== Mappings +Each Saved Object type can define it's own {es} field mappings. +Because multiple Saved Object types can share the same index, mappings defined +by a type will be nested under a top-level field that matches the type name. + +For example, the mappings defined by the `dashboard_visualization` Saved +Object type: + +.src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts +[source,typescript] +---- +import { SavedObjectsType } from 'src/core/server'; + +export const dashboardVisualization: SavedObjectsType = { + name: 'dashboard_visualization', + ... + mappings: { + properties: { + dynamic: false, + description: { + type: 'text', + }, + hits: { + type: 'integer', + }, + }, + }, + migrations: { ... }, +}; +---- + +Will result in the following mappings being applied to the `.kibana` index: +[source,json] +---- +{ + "mappings": { + "dynamic": "strict", + "properties": { + ... + "dashboard_vizualization": { + "dynamic": false, + "properties": { + "description": { + "type": "text", + }, + "hits": { + "type": "integer", + }, + }, + } + } + } +} +---- + +Do not use field mappings like you would use data types for the columns of a +SQL database. Instead, field mappings are analogous to a SQL index. Only +specify field mappings for the fields you wish to search on or query. By +specifying `dynamic: false` in any level of your mappings, {es} will +accept and store any other fields even if they are not specified in your mappings. + +Since {es} has a default limit of 1000 fields per index, plugins +should carefully consider the fields they add to the mappings. Similarly, +Saved Object types should never use `dynamic: true` as this can cause an +arbitrary amount of fields to be added to the `.kibana` index. + +=== References +When a Saved Object declares `references` to other Saved Objects, the +Saved Objects Export API will automatically export the target object with all +of it's references. This makes it easy for users to export the entire +reference graph of an object. + +If a Saved Object can't be used on it's own, that is, it needs other objects +to exist for a feature to function correctly, that Saved Object should declare +references to all the objects it requires. For example, a `dashboard` +object might have panels for several `visualization` objects. When these +`visualization` objects don't exist, the dashboard cannot be rendered +correctly. The `dashboard` object should declare references to all it's +visualizations. + +However, `visualization` objects can continue to be rendered or embedded into +other dashboards even if the `dashboard` it was originally embedded into +doesn't exist. As a result, `visualization` objects should not declare +references to `dashboard` objects. + +For each referenced object, an `id`, `type` and `name` are added to the +`references` array: + +[source, typescript] +---- +router.get( + { path: '/some-path', validate: false }, + async (context, req, res) => { + const object = await context.core.savedObjects.client.create( + 'dashboard', + { + title: 'my dashboard', + panels: [ + { visualization: 'vis1' }, // <1> + ], + indexPattern: 'indexPattern1' + }, + { references: [ + { id: '...', type: 'visualization', name: 'vis1' }, + { id: '...', type: 'index_pattern', name: 'indexPattern1' }, + ] + } + ) + ... + } +); +---- +<1> Note how `dashboard.panels[0].visualization` stores the `name` property of +the reference (not the `id` directly) to be able to uniquely identify this +reference. This guarantees that the id the reference points to always remains +up to date. If a visualization `id` was directly stored in +`dashboard.panels[0].visualization` there is a risk that this `id` gets +updated without updating the reference in the references array. + +==== Writing Migrations + +Saved Objects support schema changes between Kibana versions, which we call +migrations. Migrations are applied when a Kibana installation is upgraded from +one version to the next, when exports are imported via the Saved Objects +Management UI, or when a new object is created via the HTTP API. + +Each Saved Object type may define migrations for its schema. Migrations are +specified by the Kibana version number, receive an input document, and must +return the fully migrated document to be persisted to Elasticsearch. + +Let's say we want to define two migrations: +- In version 1.1.0, we want to drop the `subtitle` field and append it to the + title +- In version 1.4.0, we want to add a new `id` field to every panel with a newly + generated UUID. + +First, the current `mappings` should always reflect the latest or "target" +schema. Next, we should define a migration function for each step in the schema +evolution: + +src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts +[source,typescript] +---- +import { SavedObjectsType, SavedObjectMigrationFn } from 'src/core/server'; +import uuid from 'uuid'; + +interface DashboardVisualizationPre110 { + title: string; + subtitle: string; + panels: Array<{}>; +} +interface DashboardVisualization110 { + title: string; + panels: Array<{}>; +} + +interface DashboardVisualization140 { + title: string; + panels: Array<{ id: string }>; +} + +const migrateDashboardVisualization110: SavedObjectMigrationFn< + DashboardVisualizationPre110, // <1> + DashboardVisualization110 +> = (doc) => { + const { subtitle, ...attributesWithoutSubtitle } = doc.attributes; + return { + ...doc, // <2> + attributes: { + ...attributesWithoutSubtitle, + title: `${doc.attributes.title} - ${doc.attributes.subtitle}`, + }, + }; +}; + +const migrateDashboardVisualization140: SavedObjectMigrationFn< + DashboardVisualization110, + DashboardVisualization140 +> = (doc) => { + const outPanels = doc.attributes.panels?.map((panel) => { + return { ...panel, id: uuid.v4() }; + }); + return { + ...doc, + attributes: { + ...doc.attributes, + panels: outPanels, + }, + }; +}; + +export const dashboardVisualization: SavedObjectsType = { + name: 'dashboard_visualization', // <1> + /** ... */ + migrations: { + // Takes a pre 1.1.0 doc, and converts it to 1.1.0 + '1.1.0': migrateDashboardVisualization110, + + // Takes a 1.1.0 doc, and converts it to 1.4.0 + '1.4.0': migrateDashboardVisualization140, // <3> + }, +}; +---- +<1> It is useful to define an interface for each version of the schema. This +allows TypeScript to ensure that you are properly handling the input and output +types correctly as the schema evolves. +<2> Returning a shallow copy is necessary to avoid type errors when using +different types for the input and output shape. +<3> Migrations do not have to be defined for every version. The version number +of a migration must always be the earliest Kibana version in which this +migration was released. So if you are creating a migration which will be +part of the v7.10.0 release, but will also be backported and released as +v7.9.3, the migration version should be: 7.9.3. + +Migrations should be written defensively, an exception in a migration function +will prevent a Kibana upgrade from succeeding and will cause downtime for our +users. Having said that, if a document is encountered that is not in the +expected shape, migrations are encouraged to throw an exception to abort the +upgrade. In most scenarios, it is better to fail an upgrade than to silently +ignore a corrupt document which can cause unexpected behaviour at some future +point in time. + +It is critical that you have extensive tests to ensure that migrations behave +as expected with all possible input documents. Given how simple it is to test +all the branch conditions in a migration function and the high impact of a bug +in this code, there's really no reason not to aim for 100% test code coverage. \ No newline at end of file diff --git a/docs/developer/architecture/development-plugin-saved-objects.asciidoc b/docs/developer/architecture/development-plugin-saved-objects.asciidoc deleted file mode 100644 index 0d31f5d90f6680..00000000000000 --- a/docs/developer/architecture/development-plugin-saved-objects.asciidoc +++ /dev/null @@ -1,311 +0,0 @@ -[[development-plugin-saved-objects]] -== Using Saved Objects - -Saved Objects allow {kib} plugins to use {es} like a primary -database. Think of it as an Object Document Mapper for {es}. Once a -plugin has registered one or more Saved Object types, the Saved Objects client -can be used to query or perform create, read, update and delete operations on -each type. - -By using Saved Objects your plugin can take advantage of the following -features: - -* Migrations can evolve your document's schema by transforming documents and -ensuring that the field mappings on the index are always up to date. -* a <> is automatically exposed for each type (unless -`hidden=true` is specified). -* a Saved Objects client that can be used from both the server and the browser. -* Users can import or export Saved Objects using the Saved Objects management -UI or the Saved Objects import/export API. -* By declaring `references`, an object's entire reference graph will be -exported. This makes it easy for users to export e.g. a `dashboard` object and -have all the `visualization` objects required to display the dashboard -included in the export. -* When the X-Pack security and spaces plugins are enabled these transparently -provide RBAC access control and the ability to organize Saved Objects into -spaces. - -This document contains developer guidelines and best-practices for plugins -wanting to use Saved Objects. - -=== Registering a Saved Object type -Saved object type definitions should be defined in their own `my_plugin/server/saved_objects` directory. - -The folder should contain a file per type, named after the snake_case name of the type, and an `index.ts` file exporting all the types. - -.src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts -[source,typescript] ----- -import { SavedObjectsType } from 'src/core/server'; - -export const dashboardVisualization: SavedObjectsType = { - name: 'dashboard_visualization', // <1> - hidden: false, - namespaceType: 'single', - mappings: { - dynamic: false, - properties: { - description: { - type: 'text', - }, - hits: { - type: 'integer', - }, - }, - }, - migrations: { - '1.0.0': migratedashboardVisualizationToV1, - '2.0.0': migratedashboardVisualizationToV2, - }, -}; ----- -<1> Since the name of a Saved Object type forms part of the url path for the -public Saved Objects HTTP API, these should follow our API URL path convention -and always be written as snake case. - -.src/plugins/my_plugin/server/saved_objects/index.ts -[source,typescript] ----- -export { dashboardVisualization } from './dashboard_visualization'; -export { dashboard } from './dashboard'; ----- - -.src/plugins/my_plugin/server/plugin.ts -[source,typescript] ----- -import { dashboard, dashboardVisualization } from './saved_objects'; - -export class MyPlugin implements Plugin { - setup({ savedObjects }) { - savedObjects.registerType(dashboard); - savedObjects.registerType(dashboardVisualization); - } -} ----- - -=== Mappings -Each Saved Object type can define it's own {es} field mappings. -Because multiple Saved Object types can share the same index, mappings defined -by a type will be nested under a top-level field that matches the type name. - -For example, the mappings defined by the `dashboard_visualization` Saved -Object type: - -.src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts -[source,typescript] ----- -import { SavedObjectsType } from 'src/core/server'; - -export const dashboardVisualization: SavedObjectsType = { - name: 'dashboard_visualization', - ... - mappings: { - properties: { - dynamic: false, - description: { - type: 'text', - }, - hits: { - type: 'integer', - }, - }, - }, - migrations: { ... }, -}; ----- - -Will result in the following mappings being applied to the `.kibana` index: -[source,json] ----- -{ - "mappings": { - "dynamic": "strict", - "properties": { - ... - "dashboard_vizualization": { - "dynamic": false, - "properties": { - "description": { - "type": "text", - }, - "hits": { - "type": "integer", - }, - }, - } - } - } -} ----- - -Do not use field mappings like you would use data types for the columns of a -SQL database. Instead, field mappings are analogous to a SQL index. Only -specify field mappings for the fields you wish to search on or query. By -specifying `dynamic: false` in any level of your mappings, {es} will -accept and store any other fields even if they are not specified in your mappings. - -Since {es} has a default limit of 1000 fields per index, plugins -should carefully consider the fields they add to the mappings. Similarly, -Saved Object types should never use `dynamic: true` as this can cause an -arbitrary amount of fields to be added to the `.kibana` index. - -=== References -When a Saved Object declares `references` to other Saved Objects, the -Saved Objects Export API will automatically export the target object with all -of it's references. This makes it easy for users to export the entire -reference graph of an object. - -If a Saved Object can't be used on it's own, that is, it needs other objects -to exist for a feature to function correctly, that Saved Object should declare -references to all the objects it requires. For example, a `dashboard` -object might have panels for several `visualization` objects. When these -`visualization` objects don't exist, the dashboard cannot be rendered -correctly. The `dashboard` object should declare references to all it's -visualizations. - -However, `visualization` objects can continue to be rendered or embedded into -other dashboards even if the `dashboard` it was originally embedded into -doesn't exist. As a result, `visualization` objects should not declare -references to `dashboard` objects. - -For each referenced object, an `id`, `type` and `name` are added to the -`references` array: - -[source, typescript] ----- -router.get( - { path: '/some-path', validate: false }, - async (context, req, res) => { - const object = await context.core.savedObjects.client.create( - 'dashboard', - { - title: 'my dashboard', - panels: [ - { visualization: 'vis1' }, // <1> - ], - indexPattern: 'indexPattern1' - }, - { references: [ - { id: '...', type: 'visualization', name: 'vis1' }, - { id: '...', type: 'index_pattern', name: 'indexPattern1' }, - ] - } - ) - ... - } -); ----- -<1> Note how `dashboard.panels[0].visualization` stores the `name` property of -the reference (not the `id` directly) to be able to uniquely identify this -reference. This guarantees that the id the reference points to always remains -up to date. If a visualization `id` was directly stored in -`dashboard.panels[0].visualization` there is a risk that this `id` gets -updated without updating the reference in the references array. - -==== Writing Migrations - -Saved Objects support schema changes between Kibana versions, which we call -migrations. Migrations are applied when a Kibana installation is upgraded from -one version to the next, when exports are imported via the Saved Objects -Management UI, or when a new object is created via the HTTP API. - -Each Saved Object type may define migrations for its schema. Migrations are -specified by the Kibana version number, receive an input document, and must -return the fully migrated document to be persisted to Elasticsearch. - -Let's say we want to define two migrations: -- In version 1.1.0, we want to drop the `subtitle` field and append it to the - title -- In version 1.4.0, we want to add a new `id` field to every panel with a newly - generated UUID. - -First, the current `mappings` should always reflect the latest or "target" -schema. Next, we should define a migration function for each step in the schema -evolution: - -src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts -[source,typescript] ----- -import { SavedObjectsType, SavedObjectMigrationFn } from 'src/core/server'; -import uuid from 'uuid'; - -interface DashboardVisualizationPre110 { - title: string; - subtitle: string; - panels: Array<{}>; -} -interface DashboardVisualization110 { - title: string; - panels: Array<{}>; -} - -interface DashboardVisualization140 { - title: string; - panels: Array<{ id: string }>; -} - -const migrateDashboardVisualization110: SavedObjectMigrationFn< - DashboardVisualizationPre110, // <1> - DashboardVisualization110 -> = (doc) => { - const { subtitle, ...attributesWithoutSubtitle } = doc.attributes; - return { - ...doc, // <2> - attributes: { - ...attributesWithoutSubtitle, - title: `${doc.attributes.title} - ${doc.attributes.subtitle}`, - }, - }; -}; - -const migrateDashboardVisualization140: SavedObjectMigrationFn< - DashboardVisualization110, - DashboardVisualization140 -> = (doc) => { - const outPanels = doc.attributes.panels?.map((panel) => { - return { ...panel, id: uuid.v4() }; - }); - return { - ...doc, - attributes: { - ...doc.attributes, - panels: outPanels, - }, - }; -}; - -export const dashboardVisualization: SavedObjectsType = { - name: 'dashboard_visualization', // <1> - /** ... */ - migrations: { - // Takes a pre 1.1.0 doc, and converts it to 1.1.0 - '1.1.0': migrateDashboardVisualization110, - - // Takes a 1.1.0 doc, and converts it to 1.4.0 - '1.4.0': migrateDashboardVisualization140, // <3> - }, -}; ----- -<1> It is useful to define an interface for each version of the schema. This -allows TypeScript to ensure that you are properly handling the input and output -types correctly as the schema evolves. -<2> Returning a shallow copy is necessary to avoid type errors when using -different types for the input and output shape. -<3> Migrations do not have to be defined for every version. The version number -of a migration must always be the earliest Kibana version in which this -migration was released. So if you are creating a migration which will be -part of the v7.10.0 release, but will also be backported and released as -v7.9.3, the migration version should be: 7.9.3. - -Migrations should be written defensively, an exception in a migration function -will prevent a Kibana upgrade from succeeding and will cause downtime for our -users. Having said that, if a document is encountered that is not in the -expected shape, migrations are encouraged to throw an exception to abort the -upgrade. In most scenarios, it is better to fail an upgrade than to silently -ignore a corrupt document which can cause unexpected behaviour at some future -point in time. - -It is critical that you have extensive tests to ensure that migrations behave -as expected with all possible input documents. Given how simple it is to test -all the branch conditions in a migration function and the high impact of a bug -in this code, there's really no reason not to aim for 100% test code coverage. \ No newline at end of file diff --git a/docs/developer/architecture/index.asciidoc b/docs/developer/architecture/index.asciidoc index dc15b90b69d1a6..7fa7d80ef97293 100644 --- a/docs/developer/architecture/index.asciidoc +++ b/docs/developer/architecture/index.asciidoc @@ -3,9 +3,15 @@ [IMPORTANT] ============================================== -{kib} developer services and apis are in a state of constant development. We cannot provide backwards compatibility at this time due to the high rate of change. +The {kib} Plugin APIs are in a state of +constant development. We cannot provide backwards compatibility at this time due +to the high rate of change. ============================================== +To begin plugin development, we recommend reading our overview of how plugins work: + +* <> + Our developer services are changing all the time. One of the best ways to discover and learn about them is to read the available READMEs from all the plugins inside our {kib-repo}tree/{branch}/src/plugins[open source plugins folder] and our {kib-repo}/tree/{branch}/x-pack/plugins[commercial plugins folder]. @@ -14,17 +20,17 @@ A few services also automatically generate api documentation which can be browse A few notable services are called out below. +* <> * <> -* <> * <> * <> -include::security/index.asciidoc[leveloffset=+1] +include::kibana-platform-plugin-api.asciidoc[leveloffset=+1] -include::development-plugin-saved-objects.asciidoc[leveloffset=+1] +include::core/index.asciidoc[leveloffset=+1] + +include::security/index.asciidoc[leveloffset=+1] include::add-data-tutorials.asciidoc[leveloffset=+1] include::development-visualize-index.asciidoc[leveloffset=+1] - - diff --git a/docs/developer/architecture/kibana-platform-plugin-api.asciidoc b/docs/developer/architecture/kibana-platform-plugin-api.asciidoc new file mode 100644 index 00000000000000..2005a90bb87bb8 --- /dev/null +++ b/docs/developer/architecture/kibana-platform-plugin-api.asciidoc @@ -0,0 +1,347 @@ +[[kibana-platform-plugin-api]] +== {kib} Plugin API + +experimental[] + +{kib} platform plugins are a significant step toward stabilizing {kib} architecture for all the developers. +We made sure plugins could continue to use most of the same technologies they use today, at least from a technical perspective. + +=== Anatomy of a plugin + +Plugins are defined as classes and present themselves to {kib} +through a simple wrapper function. A plugin can have browser-side code, +server-side code, or both. There is no architectural difference between +a plugin in the browser and a plugin on the server. +In both places, you describe your plugin similarly, and you interact with +Core and other plugins in the same way. + +The basic file structure of a {kib} plugin named `demo` that +has both client-side and server-side code would be: + +[source,tree] +---- +plugins/ + demo + kibana.json [1] + public + index.ts [2] + plugin.ts [3] + server + index.ts [4] + plugin.ts [5] +---- + +*[1] `kibana.json`* is a static manifest file that is used to identify the +plugin and to specify if this plugin has server-side code, browser-side code, or both: + +[source,json] +---- +{ + "id": "demo", + "version": "kibana", + "server": true, + "ui": true +} +---- + +Learn about the {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[manifest +file format]. + +NOTE: `package.json` files are irrelevant to and ignored by {kib} for discovering and loading plugins. + +*[2] `public/index.ts`* is the entry point into the client-side code of +this plugin. It must export a function named `plugin`, which will +receive {kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md[a standard set of core capabilities] as an argument. +It should return an instance of its plugin class for +{kib} to load. + +[source,typescript] +---- +import type { PluginInitializerContext } from 'kibana/server'; +import { MyPlugin } from './plugin'; + +export function plugin(initializerContext: PluginInitializerContext) { + return new MyPlugin(initializerContext); +} +---- + +*[3] `public/plugin.ts`* is the client-side plugin definition itself. +Technically speaking, it does not need to be a class or even a separate +file from the entry point, but _all plugins at Elastic_ should be +consistent in this way. See all {kib-repo}blob/{branch}/src/core/CONVENTIONS.md[conventions +for first-party Elastic plugins]. + +[source,typescript] +---- +import type { Plugin, PluginInitializerContext, CoreSetup, CoreStart } from 'kibana/server'; + +export class MyPlugin implements Plugin { + constructor(initializerContext: PluginInitializerContext) {} + + public setup(core: CoreSetup) { + // called when plugin is setting up during Kibana's startup sequence + } + + public start(core: CoreStart) { + // called after all plugins are set up + } + + public stop() { + // called when plugin is torn down during Kibana's shutdown sequence + } +} +---- + +*[4] `server/index.ts`* is the entry-point into the server-side code of +this plugin. {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md[It is identical] in almost every way to the client-side +entry-point: + + +[source,typescript] +---- +import type { PluginInitializerContext } from 'kibana/server'; +import { MyPlugin } from './plugin'; + +export function plugin(initializerContext: PluginInitializerContext) { + return new MyPlugin(initializerContext); +} +---- + +*[5] `server/plugin.ts`* is the server-side plugin definition. The +shape of this plugin is the same as it’s client-side counter-part: + +[source,typescript] +---- +import type { Plugin, PluginInitializerContext, CoreSetup, CoreStart } from 'kibana/server'; + +export class MyPlugin implements Plugin { + constructor(initializerContext: PluginInitializerContext) {} + + public setup(core: CoreSetup) { + // called when plugin is setting up during Kibana's startup sequence + } + + public start(core: CoreStart) { + // called after all plugins are set up + } + + public stop() { + // called when plugin is torn down during Kibana's shutdown sequence + } +} +---- + +{kib} does not impose any technical restrictions on how the +the internals of a plugin are architected, though there are certain +considerations related to how plugins integrate with core APIs +and APIs exposed by other plugins that may greatly impact how +they are built. +[[plugin-lifecycles]] +=== Lifecycles & Core Services + +The various independent domains that makeup `core` are represented by a +series of services and many of those services expose public interfaces +that are provided to all plugins. Services expose different features +at different parts of their lifecycle. We describe the lifecycle of +core services and plugins with specifically-named functions on the +service definition. + +{kib} has three lifecycles: `setup`, +`start`, and `stop`. Each plugin's `setup` functions is called sequentially +while Kibana is setting up on the server or when it is being loaded in +the browser. The `start` functions are called sequentially after `setup` +has been completed for all plugins. The `stop` functions are called +sequentially while Kibana is gracefully shutting down the server or +when the browser tab or window is being closed. + +The table below explains how each lifecycle relates to the state +of Kibana. + +[width="100%",cols="10%, 15%, 37%, 38%",options="header",] +|=== +|lifecycle | purpose| server |browser +|_setup_ +|perform "registration" work to setup environment for runtime +|configure REST API endpoint, register saved object types, etc. +|configure application routes in SPA, register custom UI elements in extension points, etc. + +|_start_ +|bootstrap runtime logic +|respond to an incoming request, request Elasticsearch server, etc. +|start polling Kibana server, update DOM tree in response to user interactions, etc. + +|_stop_ +|cleanup runtime +|dispose of active handles before the server shutdown. +|store session data in the LocalStorage when the user navigates away from {kib}, etc. +|=== + +There is no equivalent behavior to `start` or `stop` in legacy plugins. +Conversely, there is no equivalent to `uiExports` in Kibana Platform plugins. +As a general rule of thumb, features that were registered via `uiExports` are +now registered during the `setup` phase. Most of everything else should move +to the `start` phase. + +The lifecycle-specific contracts exposed by core services are always +passed as the first argument to the equivalent lifecycle function in a +plugin. For example, the core `http` service exposes a function +`createRouter` to all plugin `setup` functions. To use this function to register +an HTTP route handler, a plugin just accesses it off of the first argument: + +[source, typescript] +---- +import type { CoreSetup } from 'kibana/server'; + +export class MyPlugin { + public setup(core: CoreSetup) { + const router = core.http.createRouter(); + // handler is called when '/path' resource is requested with `GET` method + router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); + } +} +---- + +Different service interfaces can and will be passed to `setup`, `start`, and +`stop` because certain functionality makes sense in the context of a +running plugin while other types of functionality may have restrictions +or may only make sense in the context of a plugin that is stopping. + +For example, the `stop` function in the browser gets invoked as part of +the `window.onbeforeunload` event, which means you can’t necessarily +execute asynchronous code here reliably. For that reason, +`core` likely wouldn’t provide any asynchronous functions to plugin +`stop` functions in the browser. + +The current lifecycle function for all plugins will be executed before the next +lifecycle starts. That is to say that all `setup` functions are executed before +any `start` functions are executed. + +These are the contracts exposed by the core services for each lifecycle: + +[cols=",,",options="header",] +|=== +|lifecycle |server contract|browser contract +|_contructor_ +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md[PluginInitializerContext] +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md[PluginInitializerContext] + +|_setup_ +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.coresetup.md[CoreSetup] +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.coresetup.md[CoreSetup] + +|_start_ +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.corestart.md[CoreStart] +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.corestart.md[CoreStart] + +|_stop_ | +|=== + +=== Integrating with other plugins + +Plugins can expose public interfaces for other plugins to consume. Like +`core`, those interfaces are bound to the lifecycle functions `setup` +and/or `start`. + +Anything returned from `setup` or `start` will act as the interface, and +while not a technical requirement, all first-party Elastic plugins +will expose types for that interface as well. Third party plugins +wishing to allow other plugins to integrate with it are also highly +encouraged to expose types for their plugin interfaces. + +*foobar plugin.ts:* + +[source, typescript] +---- +import type { Plugin } from 'kibana/server'; +export interface FoobarPluginSetup { <1> + getFoo(): string; +} + +export interface FoobarPluginStart { <1> + getBar(): string; +} + +export class MyPlugin implements Plugin { + public setup(): FoobarPluginSetup { + return { + getFoo() { + return 'foo'; + }, + }; + } + + public start(): FoobarPluginStart { + return { + getBar() { + return 'bar'; + }, + }; + } +} +---- +<1> We highly encourage plugin authors to explicitly declare public interfaces for their plugins. + +Unlike core, capabilities exposed by plugins are _not_ automatically +injected into all plugins. Instead, if a plugin wishes to use the public +interface provided by another plugin, it must first declare that +plugin as a dependency in it's {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`kibana.json`] manifest file. + +*demo kibana.json:* + +[source,json] +---- +{ + "id": "demo", + "requiredPlugins": ["foobar"], + "server": true, + "ui": true +} +---- + +With that specified in the plugin manifest, the appropriate interfaces +are then available via the second argument of `setup` and/or `start`: + +*demo plugin.ts:* + +[source,typescript] +---- +import type { CoreSetup, CoreStart } from 'kibana/server'; +import type { FoobarPluginSetup, FoobarPluginStart } from '../../foobar/server'; + +interface DemoSetupPlugins { <1> + foobar: FoobarPluginSetup; +} + +interface DemoStartPlugins { + foobar: FoobarPluginStart; +} + +export class AnotherPlugin { + public setup(core: CoreSetup, plugins: DemoSetupPlugins) { <2> + const { foobar } = plugins; + foobar.getFoo(); // 'foo' + foobar.getBar(); // throws because getBar does not exist + } + + public start(core: CoreStart, plugins: DemoStartPlugins) { <3> + const { foobar } = plugins; + foobar.getFoo(); // throws because getFoo does not exist + foobar.getBar(); // 'bar' + } + + public stop() {} +} +---- +<1> The interface for plugin's dependencies must be manually composed. You can +do this by importing the appropriate type from the plugin and constructing an +interface where the property name is the plugin's ID. +<2> These manually constructed types should then be used to specify the type of +the second argument to the plugin. +<3> Notice that the type for the setup and start lifecycles are different. Plugin lifecycle +functions can only access the APIs that are exposed _during_ that lifecycle. + +=== Migrating legacy plugins + +In Kibana 7.10, support for legacy plugins was removed. See +<> for detailed information on how to convert existing +legacy plugins to this new API. diff --git a/docs/developer/best-practices/index.asciidoc b/docs/developer/best-practices/index.asciidoc index 42b379e606898e..b048e59e6c98cb 100644 --- a/docs/developer/best-practices/index.asciidoc +++ b/docs/developer/best-practices/index.asciidoc @@ -12,6 +12,8 @@ Are you planning with scalability in mind? * Consider data with many fields * Consider data with high cardinality fields * Consider large data sets, that span a long time range +* Are you loading a minimal amount of JS code in the browser? +** See <> for more guidance. * Do you make lots of requests to the server? ** If so, have you considered using the streaming {kib-repo}tree/{branch}/src/plugins/bfetch[bfetch service]? @@ -140,6 +142,8 @@ Review: * <> * <> +include::performance.asciidoc[leveloffset=+1] + include::navigation.asciidoc[leveloffset=+1] include::stability.asciidoc[leveloffset=+1] diff --git a/docs/developer/best-practices/performance.asciidoc b/docs/developer/best-practices/performance.asciidoc new file mode 100644 index 00000000000000..70f27005db372f --- /dev/null +++ b/docs/developer/best-practices/performance.asciidoc @@ -0,0 +1,101 @@ +[[plugin-performance]] +== Keep {kib} fast + +*tl;dr*: Load as much code lazily as possible. Everyone loves snappy +applications with a responsive UI and hates spinners. Users deserve the +best experience whether they run {kib} locally or +in the cloud, regardless of their hardware and environment. + +There are 2 main aspects of the perceived speed of an application: loading time +and responsiveness to user actions. {kib} loads and bootstraps *all* +the plugins whenever a user lands on any page. It means that +every new application affects the overall _loading performance_, as plugin code is +loaded _eagerly_ to initialize the plugin and provide plugin API to dependent +plugins. + +However, it’s usually not necessary that the whole plugin code should be loaded +and initialized at once. The plugin could keep on loading code covering API functionality +on {kib} bootstrap, but load UI related code lazily on-demand, when an +application page or management section is mounted. +Always prefer to import UI root components lazily when possible (such as in `mount` +handlers). Even if their size may seem negligible, they are likely using +some heavy-weight libraries that will also be removed from the initial +plugin bundle, therefore, reducing its size by a significant amount. + +[source,typescript] +---- +import type { Plugin, CoreSetup, AppMountParameters } from 'kibana/public'; +export class MyPlugin implements Plugin { + setup(core: CoreSetup, plugins: SetupDeps) { + core.application.register({ + id: 'app', + title: 'My app', + async mount(params: AppMountParameters) { + const { mountApp } = await import('./app/mount_app'); + return mountApp(await core.getStartServices(), params); + }, + }); + plugins.management.sections.section.kibana.registerApp({ + id: 'app', + title: 'My app', + order: 1, + async mount(params) { + const { mountManagementSection } = await import('./app/mount_management_section'); + return mountManagementSection(coreSetup, params); + }, + }); + return { + doSomething() {}, + }; + } +} +---- + +=== Understanding plugin bundle size + +{kib} Platform plugins are pre-built with `@kbn/optimizer` +and distributed as package artifacts. This means that it is no +longer necessary for us to include the `optimizer` in the +distributable version of {kib}. Every plugin artifact contains all +plugin dependencies required to run the plugin, except some +stateful dependencies shared across plugin bundles via +`@kbn/ui-shared-deps`. This means that plugin artifacts _tend to +be larger_ than they were in the legacy platform. To understand the +current size of your plugin artifact, run `@kbn/optimizer` with: + +[source,bash] +---- +node scripts/build_kibana_platform_plugins.js --dist --profile --focus=my_plugin +---- + +and check the output in the `target` sub-folder of your plugin folder: + +[source,bash] +---- +ls -lh plugins/my_plugin/target/public/ +# output +# an async chunk loaded on demand +... 262K 0.plugin.js +# eagerly loaded chunk +... 50K my_plugin.plugin.js +---- + +You might see at least one js bundle - `my_plugin.plugin.js`. This is +the _only_ artifact loaded by {kib} during bootstrap in the +browser. The rule of thumb is to keep its size as small as possible. +Other lazily loaded parts of your plugin will be present in the same folder as +separate chunks under `{number}.myplugin.js` names. If you want to +investigate what your plugin bundle consists of, you need to run +`@kbn/optimizer` with `--profile` flag to generate a +https://webpack.js.org/api/stats/[webpack stats file]. + +[source,bash] +---- +node scripts/build_kibana_platform_plugins.js --dist --no-examples --profile +---- + +Many OSS tools allow you to analyze the generated stats file: + +* http://webpack.github.io/analyse/#modules[An official tool] from +Webpack authors +* https://chrisbateman.github.io/webpack-visualizer/[webpack-visualizer] diff --git a/docs/developer/best-practices/typescript.asciidoc b/docs/developer/best-practices/typescript.asciidoc index 6d298f92b841eb..f6db3fdffcb6ad 100644 --- a/docs/developer/best-practices/typescript.asciidoc +++ b/docs/developer/best-practices/typescript.asciidoc @@ -19,7 +19,7 @@ More details are available in the https://www.typescriptlang.org/docs/handbook/p ==== Caveats This architecture imposes several limitations to which we must comply: -- Projects cannot have circular dependencies. Even though the Kibana platform doesn't support circular dependencies between Kibana plugins, TypeScript (and ES6 modules) does allow circular imports between files. So in theory, you may face a problem when migrating to the TS project references and you will have to resolve this circular dependency. https://github.com/elastic/kibana/issues/78162 is going to provide a tool to find such problem places. +- Projects cannot have circular dependencies. Even though the Kibana platform doesn't support circular dependencies between Kibana plugins, TypeScript (and ES6 modules) does allow circular imports between files. So in theory, you may face a problem when migrating to the TS project references and you will have to resolve this circular dependency. We've built a tool that can be used to find such problems. Please read the prerequisites section below to know how to use it. - A project must emit its type declaration. It's not always possible to generate a type declaration if the compiler cannot infer a type. There are two basic cases: 1. Your plugin exports a type inferring an internal type declared in Kibana codebase. In this case, you'll have to either export an internal type or to declare an exported type explicitly. @@ -30,6 +30,8 @@ This architecture imposes several limitations to which we must comply: Since project refs rely on generated `d.ts` files, the migration order does matter. You can migrate your plugin only when all the plugin dependencies already have migrated. It creates a situation where commonly used plugins (such as `data` or `kibana_react`) have to migrate first. Run `node scripts/find_plugins_without_ts_refs.js --id your_plugin_id` to get a list of plugins that should be switched to TS project refs to unblock your plugin migration. +Additionally, in order to migrate into project refs, you also need to make sure your plugin doesn't have circular dependencies with other plugins both on code and type imports. We run a job in the CI for each PR trying to find if new circular dependencies are being added which runs our tool with `node scripts/find_plugins_with_circular_deps`. However there are also a couple of circular dependencies already identified and that are in an allowed list to be solved. You also need to make sure your plugin don't rely in any other plugin into that allowed list. For a complete overview of the circular dependencies both found and in the allowed list as well as the complete circular dependencies path please run the following script locally with the debug flag `node scripts/find_plugins_with_circular_deps --debug` . + [discrete] ==== Implementation - Make sure all the plugins listed as dependencies in *requiredPlugins*, *optionalPlugins* & *requiredBundles* properties of `kibana.json` manifest file have migrated to TS project references. diff --git a/docs/developer/contributing/development-ci-metrics.asciidoc b/docs/developer/contributing/development-ci-metrics.asciidoc index 485b7af6a62211..9c54ef9c8a916c 100644 --- a/docs/developer/contributing/development-ci-metrics.asciidoc +++ b/docs/developer/contributing/development-ci-metrics.asciidoc @@ -75,7 +75,7 @@ In order to prevent the page load bundles from growing unexpectedly large we lim In most cases the limit should be high enough that PRs shouldn't trigger overages, but when they do make sure it's clear what is cuasing the overage by trying the following: -1. Run the optimizer locally with the `--profile` flag to produce webpack `stats.json` files for bundles which can be inspected using a number of different online tools. Focus on the chunk named `{pluginId}.plugin.js`; the `*.chunk.js` chunks make up the `async chunks size` metric which is currently unlimited and is the main way that we {kib-repo}blob/{branch}/src/core/MIGRATION.md#keep-kibana-fast[reduce the size of page load chunks]. +1. Run the optimizer locally with the `--profile` flag to produce webpack `stats.json` files for bundles which can be inspected using a number of different online tools. Focus on the chunk named `{pluginId}.plugin.js`; the `*.chunk.js` chunks make up the `async chunks size` metric which is currently unlimited and is the main way that we <>. + [source,shell] ----------- @@ -111,7 +111,7 @@ prettier -w {pluginDir}/target/public/{pluginId}.plugin.js 6. If all else fails reach out to Operations for help. -Once you've identified the files which were added to the build you likely just need to stick them behind an async import as described in {kib-repo}blob/{branch}/src/core/MIGRATION.md#keep-kibana-fast[the MIGRATION.md docs]. +Once you've identified the files which were added to the build you likely just need to stick them behind an async import as described in <>. In the case that the bundle size is not being bloated by anything obvious, but it's still larger than the limit, you can raise the limit in your PR. Do this either by editting the {kib-repo}blob/{branch}/packages/kbn-optimizer/limits.yml[`limits.yml` file] manually or by running the following to have the limit updated to the current size + 15kb diff --git a/docs/developer/contributing/development-unit-tests.asciidoc b/docs/developer/contributing/development-unit-tests.asciidoc index 5322106b17ac14..d5f5bc76b3302f 100644 --- a/docs/developer/contributing/development-unit-tests.asciidoc +++ b/docs/developer/contributing/development-unit-tests.asciidoc @@ -20,11 +20,13 @@ yarn test:mocha == Jest Jest tests are stored in the same directory as source code files with the `.test.{js,mjs,ts,tsx}` suffix. -*Running Jest Unit Tests* +Each plugin and package contains it's own `jest.config.js` file to define its root, and any overrides +to the jest-preset provided by `@kbn/test`. When working on a single plugin or package, you will find +it's more efficient to supply the Jest configuration file when running. ["source","shell"] ----------- -yarn test:jest +yarn jest --config src/plugins/discover/jest.config.js ----------- [discrete] diff --git a/docs/developer/getting-started/debugging.asciidoc b/docs/developer/getting-started/debugging.asciidoc index a3fb12ec1f6a32..5ddc5dbb861b7f 100644 --- a/docs/developer/getting-started/debugging.asciidoc +++ b/docs/developer/getting-started/debugging.asciidoc @@ -15,7 +15,17 @@ For information about how to debug unit tests, refer to <> https://github.com/elastic/apm-agent-nodejs[Elastic APM Node.js Agent] built-in for debugging purposes. -Its default configuration is meant to be used by core {kib} developers +With an application as varied and complex as Kibana has become, it's not practical or scalable to craft all possible performance measurements by hand ahead of time. As such, we need to rely on tooling to help us catch things we may otherwise have missed. + +For example, say you implement a brand new feature, plugin or service but don't quite know how it will impact Kibana's performance as a whole. APM allows us to not only spot that something is slow, but also hints at why it might be performing slowly. For example, if a function is slow on specific types of inputs, we can see where the time is spent by viewing the trace for that function call in the APM UI. + +image::images/apm_example_trace.png[] + +The net of metrics captured by APM are both a wide and deep because the entire application is instrumented at runtime and we simply take a sample of these metrics. This means that we don't have to know what we need to measure ahead of time, we'll instead just get (most) of the data we're likely going to need by default. + +This type of data can help us identify unknown bottlenecks, spot when a performance regression may have been introduced, and inform how the performance of Kibana is changing between releases. Using APM allows us to be proactive in getting ahead of potential performance regressions before they are released. + +The default APM configuration is meant to be used by core {kib} developers only, but it can easily be re-configured to your needs. In its default configuration it’s disabled and will, once enabled, send APM data to a centrally managed {es} cluster accessible only to Elastic @@ -27,11 +37,8 @@ APM config option. To activate the APM agent, use the https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuration.html#active[`active`] APM config option. -All config options can be set either via environment variables, or by -creating an appropriate config file under `config/apm.dev.js`. For -more information about configuring the APM agent, please refer to -https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuring-the-agent.html[the -documentation]. +All config options can be set by +creating an appropriate config file under `config/apm.dev.js`. Example `config/apm.dev.js` file: @@ -56,4 +63,70 @@ ELASTIC_APM_ACTIVE=true yarn start Once the agent is active, it will trace all incoming HTTP requests to {kib}, monitor for errors, and collect process-level metrics. The collected data will be sent to the APM Server and is viewable in the APM -UI in {kib}. \ No newline at end of file +UI in {kib}. + +[discrete] +=== Running Kibana with the APM Agent Locally + +The easiest and recommended way of running Kibana with the APM agent locally is to use the solution provided by the https://github.com/elastic/apm-integration-testing[apm-integration-testing] repo. You’ll need https://www.docker.com/community-edition[Docker] and https://docs.docker.com/compose/install/[Docker Compose] to use the tool. + +[discrete] +==== Quick start guide + +. Clone the https://github.com/elastic/apm-integration-testing[elastic/apm-integration-testing] repo. +. Change into the apm-integration-testing repo: ++ +[source,bash] +---- +cd apm-integration-testing +---- + +. Run {es} and the APM servers without running Kibana: ++ +[source,bash] +---- +./scripts/compose.py start master --no-kibana +---- + +. Change into the {kib} repo: ++ +[source,bash] +---- +cd ../kibana +---- + +. Change the elasticsearch credentials in your `kibana.yml` configuration file to match those needed by elasticsearch and the APM server (see the apm-integration-testing repo's https://github.com/elastic/apm-integration-testing#logging-in[README] for users provided to test different scenarios). +. Make sure that the APM agent is active and points to the local APM server by adding the following configuration settings to to a config file under `config/apm.dev.js`: ++ +Example `config/apm.dev.js` file: ++ +[source,js] +---- +module.exports = { + active: true, + serverUrl: 'http://127.0.0.1:8200', // supports `http://localhost:8200` + centralConfig: false, + breakdownMetrics: false, + transactionSampleRate: 0.1, + metricsInterval: '120s' +}; +---- + +. Start Kibana with APM active using: ++ +[source,bash] +---- +yarn start +---- + +. After Kibana starts up, navigate to the APM app, where you should see some transactions. + +image::images/apm_ui_transactions.png[] + +You can now continue doing what you want to in Kibana (e.g. install sample data sets, issue queries in dashboards, build new visualizations etc). +Once you're finished, you can stop Kibana normally, then stop the {es} and APM servers in the apm-integration-testing clone with the following script: + +[source,bash] +---- +./scripts/compose.py stop +---- diff --git a/docs/developer/getting-started/development-plugin-resources.asciidoc b/docs/developer/getting-started/development-plugin-resources.asciidoc index 1fe211c87c6605..863a67f3c42f04 100644 --- a/docs/developer/getting-started/development-plugin-resources.asciidoc +++ b/docs/developer/getting-started/development-plugin-resources.asciidoc @@ -51,8 +51,9 @@ but not in the distributable version of {kib}. If you use the [discrete] === {kib} platform migration guide -{kib-repo}blob/{branch}/src/core/MIGRATION.md#migrating-legacy-plugins-to-the-new-platform[This guide] -provides an action plan for moving a legacy plugin to the new platform. +<> +provides an action plan for moving a legacy plugin to the new platform. +<> migration examples for the legacy core services. [discrete] === Externally developed plugins diff --git a/docs/developer/getting-started/index.asciidoc b/docs/developer/getting-started/index.asciidoc index 9b334a55c4203c..1f078509095652 100644 --- a/docs/developer/getting-started/index.asciidoc +++ b/docs/developer/getting-started/index.asciidoc @@ -110,6 +110,20 @@ View all available options by running `yarn start --help` Read about more advanced options for <>. +[discrete] +=== Install pre-commit hook (optional) + +In case you want to run a couple of checks like linting or check the file casing of the files to commit, we provide +a way to install a pre-commit hook. To configure it you just need to run the following: + +[source,bash] +---- +node scripts/register_git_hook +---- + +After the script completes the pre-commit hook will be created within the file `.git/hooks/pre-commit`. +If you choose to not install it, don't worry, we still run a quick ci check to provide feedback earliest as we can about the same checks. + [discrete] === Code away! diff --git a/docs/developer/images/apm_example_trace.png b/docs/developer/images/apm_example_trace.png new file mode 100644 index 00000000000000..ec29f72e0b70a5 Binary files /dev/null and b/docs/developer/images/apm_example_trace.png differ diff --git a/docs/developer/images/apm_ui_transactions.png b/docs/developer/images/apm_ui_transactions.png new file mode 100644 index 00000000000000..b2ee4d4b5ef665 Binary files /dev/null and b/docs/developer/images/apm_ui_transactions.png differ diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 5ee71316105840..e32984f911d97d 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -47,7 +47,7 @@ as uiSettings within the code. - Adds a dashboard embeddable that can be used in other applications. -|{kib-repo}blob/{branch}/src/plugins/data/README.md[data] +|{kib-repo}blob/{branch}/src/plugins/data/README.mdx[data] |The data plugin provides common data access services, such as search and query, for solutions and application developers. @@ -160,6 +160,10 @@ It also provides a stateful version of it on the start contract. Content is fetched from the remote (https://feeds.elastic.co and https://feeds-staging.elastic.co in dev mode) once a day, with periodic checks if the content needs to be refreshed. All newsfeed content is hosted remotely. +|{kib-repo}blob/{branch}/src/plugins/presentation_util/README.md[presentationUtil] +|Utilities and components used by the presentation-related plugins + + |{kib-repo}blob/{branch}/src/plugins/region_map/README.md[regionMap] |Create choropleth maps. Display the results of a term-aggregation as e.g. countries, zip-codes, states. @@ -507,8 +511,8 @@ Kibana. |or -|{kib-repo}blob/{branch}/x-pack/plugins/spaces[spaces] -|WARNING: Missing README. +|{kib-repo}blob/{branch}/x-pack/plugins/spaces/README.md[spaces] +|See Configuring Kibana Spaces. |{kib-repo}blob/{branch}/x-pack/plugins/stack_alerts/README.md[stackAlerts] diff --git a/docs/developer/plugin/index.asciidoc b/docs/developer/plugin/index.asciidoc index dd83cf234dea45..c74e4c91ef2781 100644 --- a/docs/developer/plugin/index.asciidoc +++ b/docs/developer/plugin/index.asciidoc @@ -9,34 +9,16 @@ The {kib} plugin interfaces are in a state of constant development. We cannot p Most developers who contribute code directly to the {kib} repo are writing code inside plugins, so our <> docs are the best place to start. However, there are a few differences when developing plugins outside the {kib} repo. These differences are covered here. -[discrete] -[[automatic-plugin-generator]] -=== Automatic plugin generator - -We recommend that you kick-start your plugin by generating it with the {kib-repo}tree/{branch}/packages/kbn-plugin-generator[Kibana Plugin Generator]. Run the following in the {kib} repo, and you will be asked a couple questions, see some progress bars, and have a freshly generated plugin ready for you to play with in {kib}'s `plugins` folder. - -["source","shell"] ------------ -node scripts/generate_plugin my_plugin_name # replace "my_plugin_name" with your desired plugin name ------------ - -[discrete] -=== Plugin location - -The {kib} directory must be named `kibana`, and your plugin directory should be located in the root of `kibana` in a `plugins` directory, for example: - -["source","shell"] ----- -. -└── kibana - └── plugins - ├── foo-plugin - └── bar-plugin ----- - +* <> +* <> +* <> * <> * <> +* <> +include::plugin-tooling.asciidoc[leveloffset=+1] +include::migrating-legacy-plugins.asciidoc[leveloffset=+1] +include::migrating-legacy-plugins-examples.asciidoc[leveloffset=+1] include::external-plugin-functional-tests.asciidoc[leveloffset=+1] - include::external-plugin-localization.asciidoc[leveloffset=+1] +include::testing-kibana-plugin.asciidoc[leveloffset=+1] diff --git a/docs/developer/plugin/migrating-legacy-plugins-examples.asciidoc b/docs/developer/plugin/migrating-legacy-plugins-examples.asciidoc new file mode 100644 index 00000000000000..a033bbd26a1a78 --- /dev/null +++ b/docs/developer/plugin/migrating-legacy-plugins-examples.asciidoc @@ -0,0 +1,1258 @@ +[[migrating-legacy-plugins-examples]] +== Migration Examples + +This document is a list of examples of how to migrate plugin code from +legacy APIs to their {kib} Platform equivalents. + +[[config-migration]] +=== Configuration +==== Declaring config schema + +Declaring the schema of your configuration fields is similar to the +Legacy Platform, but uses the `@kbn/config-schema` package instead of +Joi. This package has full TypeScript support out-of-the-box. + +*Legacy config schema* +[source,typescript] +---- +import Joi from 'joi'; + +new kibana.Plugin({ + config() { + return Joi.object({ + enabled: Joi.boolean().default(true), + defaultAppId: Joi.string().default('home'), + index: Joi.string().default('.kibana'), + disableWelcomeScreen: Joi.boolean().default(false), + autocompleteTerminateAfter: Joi.number().integer().min(1).default(100000), + }) + } +}); +---- + +*{kib} Platform equivalent* +[source,typescript] +---- +import { schema, TypeOf } from '@kbn/config-schema'; + +export const config = { + schema: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + defaultAppId: schema.string({ defaultValue: true }), + index: schema.string({ defaultValue: '.kibana' }), + disableWelcomeScreen: schema.boolean({ defaultValue: false }), + autocompleteTerminateAfter: schema.duration({ min: 1, defaultValue: 100000 }), + }) +}; + +// @kbn/config-schema is written in TypeScript, so you can use your schema +// definition to create a type to use in your plugin code. +export type MyPluginConfig = TypeOf; +---- + +==== Using {kib} config in a new plugin + +After setting the config schema for your plugin, you might want to read +configuration values from your plugin. It is provided as part of the +{kib-repo}/tree/{branch}/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md[PluginInitializerContext] +in the _constructor_ of the plugin: + +*plugins/my_plugin/(public|server)/index.ts* +[source,typescript] +---- +import type { PluginInitializerContext } from 'kibana/server'; +import { MyPlugin } from './plugin'; + +export function plugin(initializerContext: PluginInitializerContext) { + return new MyPlugin(initializerContext); +} +---- + +*plugins/my_plugin/(public|server)/plugin.ts* +[source,typescript] +---- +import type { Observable } from 'rxjs'; +import { first } from 'rxjs/operators'; +import { CoreSetup, Logger, Plugin, PluginInitializerContext, PluginName } from 'kibana/server'; +import type { MyPluginConfig } from './config'; + +export class MyPlugin implements Plugin { + private readonly config$: Observable; + private readonly log: Logger; + + constructor(private readonly initializerContext: PluginInitializerContext) { + this.log = initializerContext.logger.get(); + this.config$ = initializerContext.config.create(); + } + + public async setup(core: CoreSetup, deps: Record) { + const isEnabled = await this.config$.pipe(first()).toPromise(); + } +} +---- + +Additionally, some plugins need to access the runtime env configuration. + +[source,typescript] +---- +export class MyPlugin implements Plugin { + public async setup(core: CoreSetup, deps: Record) { + const { mode: { dev }, packageInfo: { version } } = this.initializerContext.env + } +---- + +=== Creating a {kib} Platform plugin + +For example, if you want to move the legacy `demoplugin` plugin's +configuration to the {kib} Platform, you could create the {kib} Platform plugin with the +same name in `plugins/demoplugin` with the following files: + +*plugins/demoplugin/kibana.json* +[source,json5] +---- +{ + "id": "demoplugin", + "server": true +} +---- + +*plugins/demoplugin/server/index.ts* +[source,typescript] +---- +import { schema, TypeOf } from '@kbn/config-schema'; +import type { PluginInitializerContext } from 'kibana/server'; +import { DemoPlugin } from './plugin'; + +export const config = { + schema: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }); +} + +export const plugin = (initContext: PluginInitializerContext) => new DemoPlugin(initContext); + +export type DemoPluginConfig = TypeOf; +export { DemoPluginSetup } from './plugin'; +---- + +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +import type { PluginInitializerContext, Plugin, CoreSetup } from 'kibana/server'; +import type { DemoPluginConfig } from '.'; +export interface DemoPluginSetup {}; + +export class DemoPlugin implements Plugin { + constructor(private readonly initContext: PluginInitializerContext) {} + + public setup(core: CoreSetup) { + return {}; + } + + public start() {} + public stop() {} +} +---- + +[[http-routes-migration]] +=== HTTP Routes + +In the legacy platform, plugins have direct access to the Hapi `server` +object, which gives full access to all of Hapi’s API. In the New +Platform, plugins have access to the +{kib-repo}/tree/{branch}/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md[HttpServiceSetup] +interface, which is exposed via the +{kib-repo}/tree/{branch}/docs/development/core/server/kibana-plugin-core-server.coresetup.md[CoreSetup] +object injected into the `setup` method of server-side plugins. + +This interface has a different API with slightly different behaviors. + +* All input (body, query parameters, and URL parameters) must be +validated using the `@kbn/config-schema` package. If no validation +schema is provided, these values will be empty objects. +* All exceptions thrown by handlers result in 500 errors. If you need a +specific HTTP error code, catch any exceptions in your handler and +construct the appropriate response using the provided response factory. +While you can continue using the `Boom` module internally in your +plugin, the framework does not have native support for converting Boom +exceptions into HTTP responses. + +Migrate legacy route registration: +*legacy/plugins/demoplugin/index.ts* +[source,typescript] +---- +import Joi from 'joi'; + +new kibana.Plugin({ + init(server) { + server.route({ + path: '/api/demoplugin/search', + method: 'POST', + options: { + validate: { + payload: Joi.object({ + field1: Joi.string().required(), + }), + } + }, + handler(req, h) { + return { message: `Received field1: ${req.payload.field1}` }; + } + }); + } +}); +---- +to the {kib} platform format: +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +import { schema } from '@kbn/config-schema'; +import type { CoreSetup } from 'kibana/server'; + +export class DemoPlugin { + public setup(core: CoreSetup) { + const router = core.http.createRouter(); + router.post( + { + path: '/api/demoplugin/search', + validate: { + body: schema.object({ + field1: schema.string(), + }), + } + }, + (context, req, res) => { + return res.ok({ + body: { + message: `Received field1: ${req.body.field1}` + } + }); + } + ) + } +} +---- + +If your plugin still relies on throwing Boom errors from routes, you can +use the `router.handleLegacyErrors` as a temporary solution until error +migration is complete: + +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +import { schema } from '@kbn/config-schema'; +import { CoreSetup } from 'kibana/server'; +import Boom from '@hapi/boom'; + +export class DemoPlugin { + public setup(core: CoreSetup) { + const router = core.http.createRouter(); + router.post( + { + path: '/api/demoplugin/search', + validate: { + body: schema.object({ + field1: schema.string(), + }), + } + }, + router.handleLegacyErrors((context, req, res) => { + throw Boom.notFound('not there'); // will be converted into proper Platform error + }) + ) + } +} +---- + +=== Accessing Services + +Services in the Legacy Platform were typically available via methods on +either `server.plugins.*`, `server.*`, or `req.*`. In the {kib} Platform, +all services are available via the `context` argument to the route +handler. The type of this argument is the +{kib-repo}/tree/{branch}/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md[RequestHandlerContext]. +The APIs available here will include all Core services and any services registered by plugins this plugin depends on. + +*legacy/plugins/demoplugin/index.ts* +[source,typescript] +---- +new kibana.Plugin({ + init(server) { + const { callWithRequest } = server.plugins.elasticsearch.getCluster('data'); + + server.route({ + path: '/api/my-plugin/my-route', + method: 'POST', + async handler(req, h) { + const results = await callWithRequest(req, 'search', query); + return { results }; + } + }); + } +}); +---- + +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +export class DemoPlugin { + public setup(core) { + const router = core.http.createRouter(); + router.post( + { + path: '/api/my-plugin/my-route', + }, + async (context, req, res) => { + const results = await context.core.elasticsearch.client.asCurrentUser.search(query); + return res.ok({ + body: { results } + }); + } + ) + } +} +---- + +=== Migrating Hapi pre-handlers + +In the Legacy Platform, routes could provide a `pre` option in their +config to register a function that should be run before the route +handler. These `pre` handlers allow routes to share some business +logic that may do some pre-work or validation. In {kib}, these are +often used for license checks. + +The {kib} Platform’s HTTP interface does not provide this +functionality. However, it is simple enough to port over using +a higher-order function that can wrap the route handler. + +==== Simple example + +In this simple example, a pre-handler is used to either abort the +request with an error or continue as normal. This is a simple +`gate-keeping` pattern. + +[source,typescript] +---- +// Legacy pre-handler +const licensePreRouting = (request) => { + const licenseInfo = getMyPluginLicenseInfo(request.server.plugins.xpack_main); + if (!licenseInfo.isOneOf(['gold', 'platinum', 'trial'])) { + throw Boom.forbidden(`You don't have the right license for MyPlugin!`); + } +} + +server.route({ + method: 'GET', + path: '/api/my-plugin/do-something', + config: { + pre: [{ method: licensePreRouting }] + }, + handler: (req) => { + return doSomethingInteresting(); + } +}) +---- + +In the {kib} Platform, the same functionality can be achieved by +creating a function that takes a route handler (or factory for a route +handler) as an argument and either successfully invokes it or +returns an error response. + +This a `high-order handler` similar to the `high-order +component` pattern common in the React ecosystem. + +[source,typescript] +---- +// Kibana Platform high-order handler +const checkLicense = ( + handler: RequestHandler +): RequestHandler => { + return (context, req, res) => { + const licenseInfo = getMyPluginLicenseInfo(context.licensing.license); + + if (licenseInfo.hasAtLeast('gold')) { + return handler(context, req, res); + } else { + return res.forbidden({ body: `You don't have the right license for MyPlugin!` }); + } + } +} + +router.get( + { path: '/api/my-plugin/do-something', validate: false }, + checkLicense(async (context, req, res) => { + const results = doSomethingInteresting(); + return res.ok({ body: results }); + }), +) +---- + +==== Full Example + +In some cases, the route handler may need access to data that the +pre-handler retrieves. In this case, you can utilize a handler _factory_ +rather than a raw handler. + +[source,typescript] +---- +// Legacy pre-handler +const licensePreRouting = (request) => { + const licenseInfo = getMyPluginLicenseInfo(request.server.plugins.xpack_main); + if (licenseInfo.isOneOf(['gold', 'platinum', 'trial'])) { + // In this case, the return value of the pre-handler is made available on + // whatever the 'assign' option is in the route config. + return licenseInfo; + } else { + // In this case, the route handler is never called and the user gets this + // error message + throw Boom.forbidden(`You don't have the right license for MyPlugin!`); + } +} + +server.route({ + method: 'GET', + path: '/api/my-plugin/do-something', + config: { + pre: [{ method: licensePreRouting, assign: 'licenseInfo' }] + }, + handler: (req) => { + const licenseInfo = req.pre.licenseInfo; + return doSomethingInteresting(licenseInfo); + } +}) +---- + +In many cases, it may be simpler to duplicate the function call to +retrieve the data again in the main handler. In other cases, you +can utilize a handler _factory_ rather than a raw handler as the +argument to your high-order handler. This way, the high-order handler can +pass arbitrary arguments to the route handler. + +[source,typescript] +---- +// Kibana Platform high-order handler +const checkLicense = ( + handlerFactory: (licenseInfo: MyPluginLicenseInfo) => RequestHandler +): RequestHandler => { + return (context, req, res) => { + const licenseInfo = getMyPluginLicenseInfo(context.licensing.license); + + if (licenseInfo.hasAtLeast('gold')) { + const handler = handlerFactory(licenseInfo); + return handler(context, req, res); + } else { + return res.forbidden({ body: `You don't have the right license for MyPlugin!` }); + } + } +} + +router.get( + { path: '/api/my-plugin/do-something', validate: false }, + checkLicense(licenseInfo => async (context, req, res) => { + const results = doSomethingInteresting(licenseInfo); + return res.ok({ body: results }); + }), +) +---- + +=== Chrome + +In the Legacy Platform, the `ui/chrome` import contained APIs for a very +wide range of features. In the {kib} Platform, some of these APIs have +changed or moved elsewhere. See <>. + +==== Updating an application navlink + +In the legacy platform, the navlink could be updated using +`chrome.navLinks.update`. + +[source,typescript] +---- +uiModules.get('xpack/ml').run(() => { + const showAppLink = xpackInfo.get('features.ml.showLinks', false); + const isAvailable = xpackInfo.get('features.ml.isAvailable', false); + + const navLinkUpdates = { + // hide by default, only show once the xpackInfo is initialized + hidden: !showAppLink, + disabled: !showAppLink || (showAppLink && !isAvailable), + }; + + npStart.core.chrome.navLinks.update('ml', navLinkUpdates); +}); +---- + +In the {kib} Platform, navlinks should not be updated directly. Instead, +it is now possible to add an `updater` when registering an application +to change the application or the navlink state at runtime. + +[source,typescript] +---- +// my_plugin has a required dependencie to the `licensing` plugin +interface MyPluginSetupDeps { + licensing: LicensingPluginSetup; +} + +export class MyPlugin implements Plugin { + setup({ application }, { licensing }: MyPluginSetupDeps) { + const updater$ = licensing.license$.pipe( + map(license => { + const { hidden, disabled } = calcStatusFor(license); + if (hidden) return { navLinkStatus: AppNavLinkStatus.hidden }; + if (disabled) return { navLinkStatus: AppNavLinkStatus.disabled }; + return { navLinkStatus: AppNavLinkStatus.default }; + }) + ); + + application.register({ + id: 'my-app', + title: 'My App', + updater$, + async mount(params) { + const { renderApp } = await import('./application'); + return renderApp(params); + }, + }); + } +---- + +=== Chromeless Applications + +In {kib}, a `chromeless` application is one where the primary {kib} +UI components such as header or navigation can be hidden. In the legacy +platform, these were referred to as `hidden` applications and were set +via the `hidden` property in a {kib} plugin. Chromeless applications +are also not displayed in the left navbar. + +To mark an application as chromeless, specify `chromeless: false` when +registering your application to hide the chrome UI when the application +is mounted: + +[source,typescript] +---- +application.register({ + id: 'chromeless', + chromeless: true, + async mount(context, params) { + /* ... */ + }, +}); +---- + +If you wish to render your application at a route that does not follow +the `/app/${appId}` pattern, this can be done via the `appRoute` +property. Doing this currently requires you to register a server route +where you can return a bootstrapped HTML page for your application +bundle. + +[source,typescript] +---- +application.register({ + id: 'chromeless', + appRoute: '/chromeless', + chromeless: true, + async mount(context, params) { + /* ... */ + }, +}); +---- + +[[render-html-migration]] +=== Render HTML Content + +You can return a blank HTML page bootstrapped with the core application +bundle from an HTTP route handler via the `httpResources` service. You +may wish to do this if you are rendering a chromeless application with a +custom application route or have other custom rendering needs. + +[source,typescript] +---- +httpResources.register( + { path: '/chromeless', validate: false }, + (context, request, response) => { + //... some logic + return response.renderCoreApp(); + } +); +---- + +You can also exclude user data from the bundle metadata. User +data comprises all UI Settings that are _user provided_, then injected +into the page. You may wish to exclude fetching this data if not +authorized or to slim the page size. + +[source,typescript] +---- +httpResources.register( + { path: '/', validate: false, options: { authRequired: false } }, + (context, request, response) => { + //... some logic + return response.renderAnonymousCoreApp(); + } +); +---- + +[[saved-objects-migration]] +=== Saved Objects types + +In the legacy platform, saved object types were registered using static +definitions in the `uiExports` part of the plugin manifest. + +In the {kib} Platform, all these registrations are performed +programmatically during your plugin’s `setup` phase, using the core +`savedObjects`’s `registerType` setup API. + +The most notable difference is that in the {kib} Platform, the type +registration is performed in a single call to `registerType`, passing a +new `SavedObjectsType` structure that is a superset of the legacy +`schema`, `migrations` `mappings` and `savedObjectsManagement`. + +==== Concrete example + +Suppose you have the following in a legacy plugin: + +*legacy/plugins/demoplugin/index.ts* +[source,js] +---- +import mappings from './mappings.json'; +import { migrations } from './migrations'; + +new kibana.Plugin({ + init(server){ + // [...] + }, + uiExports: { + mappings, + migrations, + savedObjectSchemas: { + 'first-type': { + isNamespaceAgnostic: true, + }, + 'second-type': { + isHidden: true, + }, + }, + savedObjectsManagement: { + 'first-type': { + isImportableAndExportable: true, + icon: 'myFirstIcon', + defaultSearchField: 'title', + getTitle(obj) { + return obj.attributes.title; + }, + getEditUrl(obj) { + return `/some-url/${encodeURIComponent(obj.id)}`; + }, + }, + 'second-type': { + isImportableAndExportable: false, + icon: 'mySecondIcon', + getTitle(obj) { + return obj.attributes.myTitleField; + }, + getInAppUrl(obj) { + return { + path: `/some-url/${encodeURIComponent(obj.id)}`, + uiCapabilitiesPath: 'myPlugin.myType.show', + }; + }, + }, + }, + }, +}) +---- + +*legacy/plugins/demoplugin/mappings.json* +[source,json] +---- +{ + "first-type": { + "properties": { + "someField": { + "type": "text" + }, + "anotherField": { + "type": "text" + } + } + }, + "second-type": { + "properties": { + "textField": { + "type": "text" + }, + "boolField": { + "type": "boolean" + } + } + } +} +---- +*legacy/plugins/demoplugin/migrations.js* +[source,js] +---- +export const migrations = { + 'first-type': { + '1.0.0': migrateFirstTypeToV1, + '2.0.0': migrateFirstTypeToV2, + }, + 'second-type': { + '1.5.0': migrateSecondTypeToV15, + } +} +---- + +To migrate this, you have to regroup the declaration per-type. + +First type: +*plugins/demoplugin/server/saved_objects/first_type.ts* +[source,typescript] +---- +import type { SavedObjectsType } from 'kibana/server'; + +export const firstType: SavedObjectsType = { + name: 'first-type', + hidden: false, + namespaceType: 'agnostic', + mappings: { + properties: { + someField: { + type: 'text', + }, + anotherField: { + type: 'text', + }, + }, + }, + migrations: { + '1.0.0': migrateFirstTypeToV1, + '2.0.0': migrateFirstTypeToV2, + }, + management: { + importableAndExportable: true, + icon: 'myFirstIcon', + defaultSearchField: 'title', + getTitle(obj) { + return obj.attributes.title; + }, + getEditUrl(obj) { + return `/some-url/${encodeURIComponent(obj.id)}`; + }, + }, +}; +---- + +Second type: +*plugins/demoplugin/server/saved_objects/second_type.ts* +[source,typescript] +---- +import type { SavedObjectsType } from 'kibana/server'; + +export const secondType: SavedObjectsType = { + name: 'second-type', + hidden: true, + namespaceType: 'single', + mappings: { + properties: { + textField: { + type: 'text', + }, + boolField: { + type: 'boolean', + }, + }, + }, + migrations: { + '1.5.0': migrateSecondTypeToV15, + }, + management: { + importableAndExportable: false, + icon: 'mySecondIcon', + getTitle(obj) { + return obj.attributes.myTitleField; + }, + getInAppUrl(obj) { + return { + path: `/some-url/${encodeURIComponent(obj.id)}`, + uiCapabilitiesPath: 'myPlugin.myType.show', + }; + }, + }, +}; +---- + +Registration in the plugin’s setup phase: +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +import { firstType, secondType } from './saved_objects'; + +export class DemoPlugin implements Plugin { + setup({ savedObjects }) { + savedObjects.registerType(firstType); + savedObjects.registerType(secondType); + } +} +---- + +==== Changes in structure compared to legacy + +The {kib} Platform `registerType` expected input is very close to the legacy format. +However, there are some minor changes: + +* The `schema.isNamespaceAgnostic` property has been renamed: +`SavedObjectsType.namespaceType`. It no longer accepts a boolean but +instead an enum of `single`, `multiple`, or `agnostic` (see +{kib-repo}/tree/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md[SavedObjectsNamespaceType]). +* The `schema.indexPattern` was accepting either a `string` or a +`(config: LegacyConfig) => string`. `SavedObjectsType.indexPattern` only +accepts a string, as you can access the configuration during your +plugin’s setup phase. +* The `savedObjectsManagement.isImportableAndExportable` property has +been renamed: `SavedObjectsType.management.importableAndExportable`. +* The migration function signature has changed: In legacy, it used to be +[source,typescript] +---- +`(doc: SavedObjectUnsanitizedDoc, log: SavedObjectsMigrationLogger) => SavedObjectUnsanitizedDoc;` +---- +In {kib} Platform, it is +[source,typescript] +---- +`(doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext) => SavedObjectUnsanitizedDoc;` +---- + +With context being: + +[source,typescript] +---- +export interface SavedObjectMigrationContext { + log: SavedObjectsMigrationLogger; +} +---- + +The changes is very minor though. The legacy migration: + +[source,js] +---- +const migration = (doc, log) => {...} +---- + +Would be converted to: + +[source,typescript] +---- +const migration: SavedObjectMigrationFn = (doc, { log }) => {...} +---- + +=== UiSettings + +UiSettings defaults registration performed during `setup` phase via +`core.uiSettings.register` API. + +*legacy/plugins/demoplugin/index.js* +[source,js] +---- +uiExports: { + uiSettingDefaults: { + 'my-plugin:my-setting': { + name: 'just-work', + value: true, + description: 'make it work', + category: ['my-category'], + }, + } +} +---- + +*plugins/demoplugin/server/plugin.ts* +[source,typescript] +---- +setup(core: CoreSetup){ + core.uiSettings.register({ + 'my-plugin:my-setting': { + name: 'just-work', + value: true, + description: 'make it work', + category: ['my-category'], + schema: schema.boolean(), + }, + }) +} +---- + +=== Elasticsearch client + +The new elasticsearch client is a thin wrapper around +`@elastic/elasticsearch`’s `Client` class. Even if the API is quite +close to the legacy client {kib} was previously using, there are some +subtle changes to take into account during migration. + +https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html[Official +client documentation] + +==== Client API Changes + +Refer to the +https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/breaking-changes.html[Breaking +changes list] for more information about the changes between the legacy +and new client. + +The most significant changes on the Kibana side for the consumers are the following: + +===== User client accessor +Internal /current user client accessors has been renamed and are now +properties instead of functions: + +* `callAsInternalUser('ping')` -> `asInternalUser.ping()` +* `callAsCurrentUser('ping')` -> `asCurrentUser.ping()` +* the API now reflects the `Client`’s instead of leveraging the +string-based endpoint names the `LegacyAPICaller` was using. + +Before: + +[source,typescript] +---- +const body = await client.callAsInternalUser('indices.get', { index: 'id' }); +---- + +After: + +[source,typescript] +---- +const { body } = await client.asInternalUser.indices.get({ index: 'id' }); +---- + +===== Response object +Calling any ES endpoint now returns the whole response object instead +of only the body payload. + +Before: + +[source,typescript] +---- +const body = await legacyClient.callAsInternalUser('get', { id: 'id' }); +---- + +After: + +[source,typescript] +---- +const { body } = await client.asInternalUser.get({ id: 'id' }); +---- + +Note that more information from the ES response is available: + +[source,typescript] +---- +const { + body, // response payload + statusCode, // http status code of the response + headers, // response headers + warnings, // warnings returned from ES + meta // meta information about the request, such as request parameters, number of attempts and so on +} = await client.asInternalUser.get({ id: 'id' }); +---- + +===== Response Type +All API methods are now generic to allow specifying the response body. +type + +Before: + +[source,typescript] +---- +const body: GetResponse = await legacyClient.callAsInternalUser('get', { id: 'id' }); +---- + +After: + +[source,typescript] +---- +// body is of type `GetResponse` +const { body } = await client.asInternalUser.get({ id: 'id' }); +// fallback to `Record` if unspecified +const { body } = await client.asInternalUser.get({ id: 'id' }); +---- + +The new client doesn’t provide exhaustive typings for the response +object yet. You might have to copy response type definitions from the +Legacy Elasticsearch library until the additional announcements. + +[source,typescript] +---- +// Kibana provides a few typings for internal purposes +import type { SearchResponse } from 'kibana/server'; +type SearchSource = {...}; +type SearchBody = SearchResponse; +const { body } = await client.search(...); +interface Info {...} +const { body } = await client.info(...); +---- + +===== Errors +The returned error types changed. + +There are no longer specific errors for every HTTP status code (such as +`BadRequest` or `NotFound`). A generic `ResponseError` with the specific +`statusCode` is thrown instead. + +Before: + +[source,typescript] +---- +import { errors } from 'elasticsearch'; +try { + await legacyClient.callAsInternalUser('ping'); +} catch(e) { + if(e instanceof errors.NotFound) { + // do something + } + if(e.status === 401) {} +} +---- + +After: + +[source,typescript] +---- +import { errors } from '@elastic/elasticsearch'; +try { + await client.asInternalUser.ping(); +} catch(e) { + if(e instanceof errors.ResponseError && e.statusCode === 404) { + // do something + } + // also possible, as all errors got a name property with the name of the class, + // so this slightly better in term of performances + if(e.name === 'ResponseError' && e.statusCode === 404) { + // do something + } + if(e.statusCode === 401) {...} +} +---- + +===== Parameter naming format +The parameter property names changed from camelCase to snake_case + +Even if technically, the JavaScript client accepts both formats, the +TypeScript definitions are only defining snake_case properties. + +Before: + +[source,typescript] +---- +legacyClient.callAsCurrentUser('get', { + id: 'id', + storedFields: ['some', 'fields'], +}) +---- + +After: + +[source,typescript] +---- +client.asCurrentUser.get({ + id: 'id', + stored_fields: ['some', 'fields'], +}) +---- + +===== Request abortion +The request abortion API changed + +All promises returned from the client API calls now have an `abort` +method that can be used to cancel the request. + +Before: + +[source,typescript] +---- +const controller = new AbortController(); +legacyClient.callAsCurrentUser('ping', {}, { + signal: controller.signal, +}) +// later +controller.abort(); +---- + +After: + +[source,typescript] +---- +const request = client.asCurrentUser.ping(); +// later +request.abort(); +---- + +===== Headers +It is now possible to override headers when performing specific API +calls. + +Note that doing so is strongly discouraged due to potential side effects +with the ES service internal behavior when scoping as the internal or as +the current user. + +[source,typescript] +---- +const request = client.asCurrentUser.ping({}, { + headers: { + authorization: 'foo', + custom: 'bar', + } +}); +---- + +===== Functional tests +Functional tests are subject to migration to the new client as well. + +Before: + +[source,typescript] +---- +const client = getService('legacyEs'); +---- + +After: + +[source,typescript] +---- +const client = getService('es'); +---- + +==== Accessing the client from a route handler + +Apart from the API format change, accessing the client from within a +route handler did not change. As it was done for the legacy client, a +preconfigured <> bound to an incoming request is accessible using +the `core` context provider: + +[source,typescript] +---- +router.get( + { + path: '/my-route', + }, + async (context, req, res) => { + const { client } = context.core.elasticsearch; + // call as current user + const res = await client.asCurrentUser.ping(); + // call as internal user + const res2 = await client.asInternalUser.search(options); + return res.ok({ body: 'ok' }); + } +); +---- + +==== Accessing the client from a collector's `fetch` method + +At the moment, the `fetch` method's context receives preconfigured +<> for Elasticsearch and SavedObjects. +To help in the transition, both, the legacy (`callCluster`) and new clients are provided, +but we strongly discourage using the deprecated legacy ones for any new implementation. + +[source,typescript] +---- +usageCollection.makeUsageCollector({ + type: 'my-collector', + isReady: async () => true, // Logic to confirm the `fetch` method is ready to be called + schema: {...}, + async fetch(context) { + const { callCluster, esClient, soClient } = context; + + // Before: + const result = callCluster('search', options) + + // After: + const { body: result } = esClient.search(options); + + return result; + } +}); +---- + +Regarding the `soClient`, it is encouraged to use it instead of the plugin's owned SavedObject's repository +as we used to do in the past. + +Before: + +[source,typescript] +---- +function getUsageCollector( + usageCollection: UsageCollectionSetup, + getSavedObjectsRepository: () => ISavedObjectsRepository | undefined +) { + usageCollection.makeUsageCollector({ + type: 'my-collector', + isReady: () => typeof getSavedObjectsRepository() !== 'undefined', + schema: {...}, + async fetch() { + const savedObjectsRepository = getSavedObjectsRepository(); + + const { attributes: result } = await savedObjectsRepository.get('my-so-type', 'my-so-id'); + + return result; + } + }); +} +---- + +After: + +[source,typescript] +---- +function getUsageCollector(usageCollection: UsageCollectionSetup) { + usageCollection.makeUsageCollector({ + type: 'my-collector', + isReady: () => true, + schema: {...}, + async fetch({ soClient }) { + const { attributes: result } = await soClient.get('my-so-type', 'my-so-id'); + + return result; + } + }); +} +---- + +==== Creating a custom client + +Note that the `plugins` option is no longer available on the new +client. As the API is now exhaustive, adding custom endpoints using +plugins should no longer be necessary. + +The API to create custom clients did not change much: + +Before: + +[source,typescript] +---- +const customClient = coreStart.elasticsearch.legacy.createClient('my-custom-client', customConfig); +// do something with the client, such as +await customClient.callAsInternalUser('ping'); +// custom client are closable +customClient.close(); +---- + +After: + +[source,typescript] +---- +const customClient = coreStart.elasticsearch.createClient('my-custom-client', customConfig); +// do something with the client, such as +await customClient.asInternalUser.ping(); +// custom client are closable +customClient.close(); +---- + +If, for any reasons, you still need to reach an endpoint not listed on +the client API, using `request.transport` is still possible: + +[source,typescript] +---- +const { body } = await client.asCurrentUser.transport.request({ + method: 'get', + path: '/my-custom-endpoint', + body: { my: 'payload'}, + querystring: { param: 'foo' } +}) +---- diff --git a/docs/developer/plugin/migrating-legacy-plugins.asciidoc b/docs/developer/plugin/migrating-legacy-plugins.asciidoc new file mode 100644 index 00000000000000..337d02b11ee916 --- /dev/null +++ b/docs/developer/plugin/migrating-legacy-plugins.asciidoc @@ -0,0 +1,608 @@ +[[migrating-legacy-plugins]] +== Migrating legacy plugins to the {kib} Platform + +[IMPORTANT] +============================================== +In {kib} 7.10, support for legacy-style {kib} plugins was completely removed. +Moving forward, all plugins must be built on the new {kib} Platform Plugin API. +This guide is intended to assist plugin authors in migrating their legacy plugin +to the {kib} Platform Plugin API. +============================================== + +Make no mistake, it is going to take a lot of work to move certain +plugins to the {kib} Platform. + +The goal of this document is to guide developers through the recommended +process of migrating at a high level. Every plugin is different, so +developers should tweak this plan based on their unique requirements. + +First, we recommend you read <> to get an overview +of how plugins work in the {kib} Platform. Then continue here to follow our +generic plan of action that can be applied to any legacy plugin. + +=== Challenges to overcome with legacy plugins + +{kib} Platform plugins have an identical architecture in the browser and on +the server. Legacy plugins have one architecture that they use in the +browser and an entirely different architecture that they use on the +server. + +This means that there are unique sets of challenges for migrating to the +{kib} Platform, depending on whether the legacy plugin code is on the +server or in the browser. + +==== Challenges on the server + +The general architecture of legacy server-side code is similar to +the {kib} Platform architecture in one important way: most legacy +server-side plugins define an `init` function where the bulk of their +business logic begins, and they access both `core` and +`plugin-provided` functionality through the arguments given to `init`. +Rarely does legacy server-side code share stateful services via import +statements. + +Although not exactly the same, legacy plugin `init` functions behave +similarly today as {kib} Platform `setup` functions. `KbnServer` also +exposes an `afterPluginsInit` method, which behaves similarly to `start`. +There is no corresponding legacy concept of `stop`. + +Despite their similarities, server-side plugins pose a formidable +challenge: legacy core and plugin functionality is retrieved from either +the hapi.js `server` or `request` god objects. Worse, these objects are +often passed deeply throughout entire plugins, which directly couples +business logic with hapi. And the worst of it all is, these objects are +mutable at any time. + +The key challenge to overcome with legacy server-side plugins will +decoupling from hapi. + +==== Challenges in the browser + +The legacy plugin system in the browser is fundamentally incompatible +with the {kib} Platform. There is no client-side plugin definition. There +are no services that get passed to plugins at runtime. There really +isn’t even a concrete notion of `core`. + +When a legacy browser plugin needs to access functionality from another +plugin, say to register a UI section to render within another plugin, it +imports a stateful (global singleton) JavaScript module and performs +some sort of state mutation. Sometimes this module exists inside the +plugin itself, and it gets imported via the `plugin/` webpack alias. +Sometimes this module exists outside the context of plugins entirely and +gets imported via the `ui/` webpack alias. Neither of these concepts +exists in the {kib} Platform. + +Legacy browser plugins rely on the feature known as `uiExports/`, which +integrates directly with our build system to ensure that plugin code is +bundled together in such a way to enable that global singleton module +state. There is no corresponding feature in the {kib} Platform, and in +the fact we intend down the line to build {kib} Platform plugins as immutable +bundles that can not share state in this way. + +The key challenge to overcome with legacy browser-side plugins will be +converting all imports from `plugin/`, `ui/`, `uiExports`, and relative +imports from other plugins into a set of services that originate at +runtime during plugin initialization and get passed around throughout +the business logic of the plugin as function arguments. + +==== Plan of action + +To move a legacy plugin to the new plugin system, the +challenges on the server and in the browser must be addressed. + +The approach and level of effort varies significantly between server and +browser plugins, but at a high level, the approach is the same. + +First, decouple your plugin’s business logic from the dependencies that +are not exposed through the {kib} Platform, hapi.js, and Angular.js. Then +introduce plugin definitions that more accurately reflect how plugins +are defined in the {kib} Platform. Finally, replace the functionality you +consume from the core and other plugins with their {kib} Platform equivalents. + +Once those things are finished for any given plugin, it can officially +be switched to the new plugin system. + +=== Server-side plan of action + +Legacy server-side plugins access functionality from the core and other +plugins at runtime via function arguments, which is similar to how they +must be architected to use the new plugin system. This greatly +simplifies the plan of action for migrating server-side plugins. +The main challenge here is to de-couple plugin logic from hapi.js server and request objects. + +For migration examples, see <>. + +=== Browser-side plan of action + +It is generally a much greater challenge preparing legacy browser-side +code for the {kib} Platform than it is server-side, and as such there are +a few more steps. The level of effort here is proportional to the extent +to which a plugin is dependent on Angular.js. + +To complicate matters further, a significant amount of the business +logic in {kib} client-side code exists inside the `ui/public` +directory (aka ui modules), and all of that must be migrated as well. + +Because the usage of Angular and `ui/public` modules varies widely between +legacy plugins, there is no `one size fits all` solution to migrating +your browser-side code to the {kib} Platform. + +For migration examples, see <>. + +=== Frequently asked questions + +==== Do plugins need to be converted to TypeScript? + +No. That said, the migration process will require a lot of refactoring, +and TypeScript will make this dramatically easier and less risky. + +Although it's not strictly necessary, we encourage any plugin that exposes an extension point to do so +with first-class type support so downstream plugins that _are_ using +TypeScript can depend on those types. + +==== How can I avoid passing core services deeply within my UI component tree? + +Some core services are purely presentational, for example +`core.overlays.openModal()`, where UI +code does need access to these deeply within your application. However, +passing these services down as props throughout your application leads +to lots of boilerplate. To avoid this, you have three options: + +* Use an abstraction layer, like Redux, to decouple your UI code from +core (*this is the highly preferred option*). +* https://github.com/reduxjs/redux-thunk#injecting-a-custom-argument[redux-thunk] +and +https://redux-saga.js.org/docs/api/#createsagamiddlewareoptions[redux-saga] +already have ways to do this. +* Use React Context to provide these services to large parts of your +React tree. +* Create a high-order-component that injects core into a React +component. +* This would be a stateful module that holds a reference to core, but +provides it as props to components with a `withCore(MyComponent)` +interface. This can make testing components simpler. (Note: this module +cannot be shared across plugin boundaries, see above). +* Create a global singleton module that gets imported into each module +that needs it. This module cannot be shared across plugin +boundaries. +https://gist.github.com/epixa/06c8eeabd99da3c7545ab295e49acdc3[Example]. + +If you find that you need many different core services throughout your +application, this might indicate a problem in your code and could lead to pain down the +road. For instance, if you need access to an HTTP Client or +SavedObjectsClient in many places in your React tree, it’s likely that a +data layer abstraction (like Redux) could make developing your plugin +much simpler. + +Without such an abstraction, you will need to mock out core services +throughout your test suite and will couple your UI code very tightly to +core. However, if you can contain all of your integration points with +core to Redux middleware and reducers, you only need to mock core +services once and benefit from being able to change those integrations +with core in one place rather than many. This will become incredibly +handy when core APIs have breaking changes. + +==== How is the 'common' code shared on both the client and the server? + +There is no formal notion of `common` code that can safely be imported +from either client-side or server-side code. However, if a plugin author +wishes to maintain a set of code in their plugin in a single place and +then expose it to both server-side and client-side code, they can do so +by exporting the index files for both the `server` and `public` +directories. + +Plugins _should not_ ever import code from deeply inside another plugin +(e.g. `my_plugin/public/components`) or from other top-level directories +(e.g. `my_plugin/common/constants`) as these are not checked for breaking +changes and are considered unstable and subject to change at any time. +You can have other top-level directories like `my_plugin/common`, but +our tooling will not treat these as a stable API, and linter rules will +prevent importing from these directories _from outside the plugin_. + +The benefit of this approach is that the details of where code lives and +whether it is accessible in multiple runtimes is an implementation +detail of the plugin itself. A plugin consumer that is writing +client-side code only ever needs to concern themselves with the +client-side contracts being exposed, and the same can be said for +server-side contracts on the server. + +A plugin author, who decides some set of code should diverge from having +a single `common` definition, can now safely change the implementation +details without impacting downstream consumers. + +==== How do I find {kib} Platform services? + +Most of the utilities you used to build legacy plugins are available +in the {kib} Platform or {kib} Platform plugins. To help you find the new +home for new services, use the tables below to find where the {kib} +Platform equivalent lives. + +===== Client-side +====== Core services + +In client code, `core` can be imported in legacy plugins via the +`ui/new_platform` module. + +[[client-side-core-migration-table]] +[width="100%",cols="15%,85%",options="header",] +|=== +|Legacy Platform |{kib} Platform +|`chrome.addBasePath` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.ibasepath.md[`core.http.basePath.prepend`] + +|`chrome.breadcrumbs.set` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md[`core.chrome.setBreadcrumbs`] + +|`chrome.getUiSettingsClient` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.corestart.uisettings.md[`core.uiSettings`] + +|`chrome.helpExtension.set` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md[`core.chrome.setHelpExtension`] + +|`chrome.setVisible` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md[`core.chrome.setIsVisible`] + +|`chrome.getInjected` +| Request Data with your plugin REST HTTP API. + +|`chrome.setRootTemplate` / `chrome.setRootController` +|Use application mounting via {kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md[`core.application.register`] + +|`chrome.navLinks.update` +|{kib-repo}/tree/{branch}/docs/development/core/public/kibana-plugin-core-public.app.updater_.md[`core.appbase.updater`]. Use the `updater$` property when registering your application via +`core.application.register` + +|`import { recentlyAccessed } from 'ui/persisted_log'` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md[`core.chrome.recentlyAccessed`] + +|`ui/capabilities` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.capabilities.md[`core.application.capabilities`] + +|`ui/documentation_links` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md[`core.docLinks`] + +|`ui/kfetch` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.httpsetup.md[`core.http`] + +|`ui/notify` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.notificationsstart.md[`core.notifications`] +and +{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.overlaystart.md[`core.overlays`]. Toast messages are in `notifications`, banners are in `overlays`. + +|`ui/routes` +|There is no global routing mechanism. Each app +{kib-repo}blob/{branch}/rfcs/text/0004_application_service_mounting.md#complete-example[configures +its own routing]. + +|`ui/saved_objects` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md[`core.savedObjects`] + +|`ui/doc_title` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md[`core.chrome.docTitle`] + +|`uiExports/injectedVars` / `chrome.getInjected` +|<>. Can only be used to expose configuration properties +|=== + +_See also: +{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.corestart.md[Public’s +CoreStart API Docs]_ + +====== Plugins for shared application services + +In client code, we have a series of plugins that house shared +application services, which are not technically part of `core`, but are +often used in {kib} plugins. + +This table maps some of the most commonly used legacy items to their {kib} +Platform locations. For the API provided by {kib} Plugins see <>. + +[width="100%",cols="15,85",options="header"] +|=== +|Legacy Platform |{kib} Platform +|`import 'ui/apply_filters'` |N/A. Replaced by triggering an +{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.action_global_apply_filter.md[APPLY_FILTER_TRIGGER trigger]. Directive is deprecated. + +|`import 'ui/filter_bar'` +|`import { FilterBar } from 'plugins/data/public'`. Directive is deprecated. + +|`import 'ui/query_bar'` +|`import { QueryStringInput } from 'plugins/data/public'` {kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinput.md[QueryStringInput]. Directives are deprecated. + +|`import 'ui/search_bar'` +|`import { SearchBar } from 'plugins/data/public'` {kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginstartui.searchbar.md[SearchBar]. Directive is deprecated. + +|`import 'ui/kbn_top_nav'` +|`import { TopNavMenu } from 'plugins/navigation/public'`. Directive was removed. + +|`ui/saved_objects/saved_object_finder` +|`import { SavedObjectFinder } from 'plugins/saved_objects/public'` + +|`core_plugins/interpreter` +|{kib-repo}blob/{branch}/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md[`plugins.data.expressions`] + +|`ui/courier` +|{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.datapublicpluginsetup.search.md[`plugins.data.search`] + +|`ui/agg_types` +|{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.aggs.md[`plugins.data.search.aggs`]. Most code is available for +static import. Stateful code is part of the `search` service. + +|`ui/embeddable` +|{kib-repo}blob/{branch}/docs/development/plugins/embeddable/public/kibana-plugin-plugins-embeddable-public.embeddablesetup.md[`plugins.embeddables`] + +|`ui/filter_manager` +|`import { FilterManager } from 'plugins/data/public'` {kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.filtermanager.md[`FilterManager`] + +|`ui/index_patterns` +|`import { IndexPatternsService } from 'plugins/data/public'` {kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md[IndexPatternsService] + +|`import 'ui/management'` +|`plugins.management.sections`. Management plugin `setup` contract. + +|`import 'ui/registry/field_format_editors'` +|`plugins.indexPatternManagement.fieldFormatEditors` indexPatternManagement plugin `setup` contract. + +|`ui/registry/field_formats` +|{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformats.md[`plugins.data.fieldFormats`] + +|`ui/registry/feature_catalogue` +|`plugins.home.featureCatalogue.register` home plugin `setup` contract + +|`ui/registry/vis_types` +|`plugins.visualizations` + +|`ui/vis` +|`plugins.visualizations` + +|`ui/share` +|`plugins.share`. share plugin `start` contract. `showShareContextMenu` is now called +`toggleShareContextMenu`, `ShareContextMenuExtensionsRegistryProvider` +is now called `register` + +|`ui/vis/vis_factory` +|`plugins.visualizations` + +|`ui/vis/vis_filters` +|`plugins.visualizations.filters` + +|`ui/utils/parse_es_interval` +|`import { search: { aggs: { parseEsInterval } } } from 'plugins/data/public'`. `parseEsInterval`, `ParsedInterval`, `InvalidEsCalendarIntervalError`, +`InvalidEsIntervalFormatError` items were moved to the `Data Plugin` as +a static code +|=== + +===== Server-side + +====== Core services + +In server code, `core` can be accessed from either `server.newPlatform` +or `kbnServer.newPlatform`: + +[width="100%",cols="17, 83",options="header"] +|=== +|Legacy Platform |{kib} Platform +|`server.config()` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md[`initializerContext.config.create()`]. Must also define schema. See <> + +|`server.route` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md[`core.http.createRouter`]. See <>. + +|`server.renderApp()` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md[`response.renderCoreApp()`]. See <>. + +|`server.renderAppWithDefaultConfig()` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md[`response.renderAnonymousCoreApp()`]. See <>. + +|`request.getBasePath()` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md[`core.http.basePath.get`] + +|`server.plugins.elasticsearch.getCluster('data')` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md[`context.core.elasticsearch.client`] + +|`server.plugins.elasticsearch.getCluster('admin')` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md[`context.core.elasticsearch.client`] + +|`server.plugins.elasticsearch.createCluster(...)` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.createclient.md[`core.elasticsearch.createClient`] + +|`server.savedObjects.setScopedSavedObjectsClientFactory` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md[`core.savedObjects.setClientFactoryProvider`] + +|`server.savedObjects.addScopedSavedObjectsClientWrapperFactory` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md[`core.savedObjects.addClientWrapper`] + +|`server.savedObjects.getSavedObjectsRepository` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md[`core.savedObjects.createInternalRepository`] +{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md[`core.savedObjects.createScopedRepository`] + +|`server.savedObjects.getScopedSavedObjectsClient` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md[`core.savedObjects.getScopedClient`] + +|`request.getSavedObjectsClient` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md[`context.core.savedObjects.client`] + +|`request.getUiSettingsService` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md[`context.core.uiSettings.client`] + +|`kibana.Plugin.deprecations` +|<> and {kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md[`PluginConfigDescriptor.deprecations`]. Deprecations from {kib} Platform are not applied to legacy configuration + +|`kibana.Plugin.savedObjectSchemas` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`kibana.Plugin.mappings` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`]. Learn more in <>. + +|`kibana.Plugin.migrations` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`]. Learn more in <>. + +|`kibana.Plugin.savedObjectsManagement` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`]. Learn more in <>. +|=== + +_See also: +{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.coresetup.md[Server’s +CoreSetup API Docs]_ + +====== Plugin services + +[width="100%",cols="50%,50%",options="header",] +|=== +|Legacy Platform |{kib} Platform +|`xpack_main.registerFeature` +|{kib-repo}blob/{branch}/x-pack/plugins/features/server/plugin.ts[`plugins.features.registerKibanaFeature`] + +|`xpack_main.feature(pluginID).registerLicenseCheckResultsGenerator` +|{kib-repo}blob/{branch}/x-pack/plugins/licensing/README.md[`x-pack licensing plugin`] +|=== + +===== UI Exports + +The legacy platform used a set of `uiExports` to inject modules from +one plugin into other plugins. This mechanism is not necessary for the +{kib} Platform because _all plugins are executed on the page at once_, +though only one application is rendered at a time. + +This table shows where these uiExports have moved to in the {kib} +Platform. + +[width="100%",cols="15%,85%",options="header"] +|=== +|Legacy Platform |{kib} Platform +|`aliases` +|`N/A`. + +|`app` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md[`core.application.register`] + +|`canvas` +|{kib-repo}blob/{branch}/x-pack/plugins/canvas/README.md[Canvas plugin API] + +|`chromeNavControls` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md[`core.chrome.navControls.register{Left,Right}`] + +|`docViews` +|{kib-repo}blob/{branch}/src/plugins/discover/public/[`discover.docViews.addDocView`] + +|`embeddableActions` +|{kib-repo}blob/{branch}/src/plugins/embeddable/README.asciidoc[`embeddable plugin`] + +|`embeddableFactories` +|{kib-repo}blob/{branch}/src/plugins/embeddable/README.asciidoc[`embeddable plugin`], {kib-repo}blob/{branch}/docs/development/plugins/embeddable/server/kibana-plugin-plugins-embeddable-server.embeddablesetup.registerembeddablefactory.md[`embeddable.registerEmbeddableFactory`] + +|`fieldFormatEditors`, `fieldFormats` +|{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldformats.md[`data.fieldFormats`] + +|`hacks` +|`N/A`. Just run the code in your plugin’s `start` method. + +|`home` +|{kib-repo}blob/{branch}/src/plugins/embeddable/README.asciidoc[`home plugin`] {kib-repo}blob/{branch}/src/plugins/home/public/services/feature_catalogue[`home.featureCatalogue.register`] + +|`indexManagement` +|{kib-repo}blob/{branch}/x-pack/plugins/index_management/README.md[`index management plugin`] + +|`injectDefaultVars` +|`N/A`. Plugins will only be able to allow config values for the frontend. See<> + +|`inspectorViews` +|{kib-repo}blob/{branch}/src/plugins/inspector/README.md[`inspector plugin`] + +|`interpreter` +|{kib-repo}blob/{branch}/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.md[`plugins.data.expressions`] + +|`links` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md[`core.application.register`] + +|`managementSections` +|{kib-repo}blob/{branch}/src/plugins/management/README.md[`plugins.management.sections.register`] + +|`mappings` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`migrations` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`navbarExtensions` +|`N/A`. Deprecated. + +|`savedObjectSchemas` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`savedObjectsManagement` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`savedObjectTypes` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`search` +|{kib-repo}blob/{branch}/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search.md[`data.search`] + +|`shareContextMenuExtensions` +|{kib-repo}blob/{branch}/src/plugins/share/README.md[`plugins.share`] + +|`taskDefinitions` +|{kib-repo}blob/{branch}/x-pack/plugins/task_manager/README.md[`taskManager plugin`] + +|`uiCapabilities` +|{kib-repo}blob/{branch}/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md[`core.application.register`] + +|`uiSettingDefaults` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md[`core.uiSettings.register`] + +|`validations` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md[`core.savedObjects.registerType`] + +|`visEditorTypes` +|{kib-repo}blob/{branch}/src/plugins/visualizations[`visualizations plugin`] + +|`visTypeEnhancers` +|{kib-repo}blob/{branch}/src/plugins/visualizations[`visualizations plugin`] + +|`visTypes` +|{kib-repo}blob/{branch}/src/plugins/visualizations[`visualizations plugin`] + +|`visualize` +|{kib-repo}blob/{branch}/src/plugins/visualize/README.md[`visualize plugin`] +|=== + +===== Plugin Spec + +[width="100%",cols="22%,78%",options="header",] +|=== +|Legacy Platform |{kib} Platform +|`id` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`manifest.id`] + +|`require` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`manifest.requiredPlugins`] + +|`version` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`manifest.version`] + +|`kibanaVersion` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`manifest.kibanaVersion`] + +|`configPrefix` +|{kib-repo}blob/{branch}/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md[`manifest.configPath`] + +|`config` +|<> + +|`deprecations` +|<> + +|`uiExports` +|`N/A`. Use platform & plugin public contracts + +|`publicDir` +|`N/A`. {kib} Platform serves static assets from `/public/assets` folder under `/plugins/{id}/assets/{path*}` URL. + +|`preInit`, `init`, `postInit` +|`N/A`. Use {kib} Platform <> +|=== + +=== See also + +For examples on how to migrate from specific legacy APIs, see <>. diff --git a/docs/developer/plugin/plugin-tooling.asciidoc b/docs/developer/plugin/plugin-tooling.asciidoc new file mode 100644 index 00000000000000..0b33a585863a4f --- /dev/null +++ b/docs/developer/plugin/plugin-tooling.asciidoc @@ -0,0 +1,50 @@ +[[plugin-tooling]] +== Plugin tooling + +[discrete] +[[automatic-plugin-generator]] +=== Automatic plugin generator + +We recommend that you kick-start your plugin by generating it with the {kib-repo}tree/{branch}/packages/kbn-plugin-generator[{kib} Plugin Generator]. Run the following in the {kib} repo, and you will be asked a couple of questions, see some progress bars, and have a freshly generated plugin ready for you to play with in {kib}'s `plugins` folder. + +["source","shell"] +----------- +node scripts/generate_plugin my_plugin_name # replace "my_plugin_name" with your desired plugin name +----------- + +[discrete] +=== Plugin location + +The {kib} directory must be named `kibana`, and your plugin directory should be located in the root of `kibana` in a `plugins` directory, for example: + +["source","shell"] +---- +. +└── kibana + └── plugins + ├── foo-plugin + └── bar-plugin +---- + +=== Build plugin distributable +WARNING: {kib} distributable is not shipped with `@kbn/optimizer` anymore. You need to pre-build your plugin for use in production. + +You can leverage {kib-repo}blob/{branch}/packages/kbn-plugin-helpers[@kbn/plugin-helpers] to build a distributable archive for your plugin. +The package transpiles the plugin code, adds polyfills, and links necessary js modules in the runtime. +You don't need to install the `plugin-helpers`: the `package.json` is already pre-configured if you created your plugin with `node scripts/generate_plugin` script. +To build your plugin run within your plugin folder: +["source","shell"] +----------- +yarn build +----------- +It will output a`zip` archive in `kibana/plugins/my_plugin_name/build/` folder. + +=== Install a plugin from archive +See <>. + +=== Run {kib} with your plugin in dev mode +Run `yarn start` in the {kib} root folder. Make sure {kib} found and bootstrapped your plugin: +["source","shell"] +----------- +[info][plugins-system] Setting up […] plugins: […, myPluginName, …] +----------- diff --git a/docs/developer/plugin/testing-kibana-plugin.asciidoc b/docs/developer/plugin/testing-kibana-plugin.asciidoc new file mode 100644 index 00000000000000..6e856d2e2578a7 --- /dev/null +++ b/docs/developer/plugin/testing-kibana-plugin.asciidoc @@ -0,0 +1,63 @@ +[[testing-kibana-plugin]] +== Testing {kib} Plugins +=== Writing tests +Learn about <>. + +=== Mock {kib} Core services in tests + +Core services already provide mocks to simplify testing and make sure +plugins always rely on valid public contracts: + +*my_plugin/server/plugin.test.ts* +[source,typescript] +---- +import { configServiceMock } from 'kibana/server/mocks'; + +const configService = configServiceMock.create(); +configService.atPath.mockReturnValue(config$); +… +const plugin = new MyPlugin({ configService }, …); +---- + +Or if you need to get the whole core `setup` or `start` contracts: + +*my_plugin/server/plugin.test.ts* +[source,typescript] +---- +import { coreMock } from 'kibana/public/mocks'; + +const coreSetup = coreMock.createSetup(); +coreSetup.uiSettings.get.mockImplementation((key: string) => { + … +}); +… +const plugin = new MyPlugin(coreSetup, ...); +---- + +=== Writing mocks for your plugin +Although it isn’t mandatory, we strongly recommended you export your +plugin mocks as well, in order for dependent plugins to use them in +tests. Your plugin mocks should be exported from the root `/server` and +`/public` directories in your plugin: + +*my_plugin/(server|public)/mocks.ts* +[source,typescript] +---- +const createSetupContractMock = () => { + const startContract: jest.Mocked= { + isValid: jest.fn(), + } + // here we already type check as TS infers to the correct type declared above + startContract.isValid.mockReturnValue(true); + return startContract; +} + +export const myPluginMocks = { + createSetup: createSetupContractMock, + createStart: … +} +---- + +Plugin mocks should consist of mocks for _public APIs only_: +`setup`, `start` & `stop` contracts. Mocks aren’t necessary for pure functions as +other plugins can call the original implementation in tests. diff --git a/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md b/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md index d1e0be17a92b24..eb050b62c7d43b 100644 --- a/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md +++ b/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md @@ -18,7 +18,7 @@ exactRoute?: boolean; ```ts core.application.register({ id: 'my_app', - title: 'My App' + title: 'My App', exactRoute: true, mount: () => { ... }, }) diff --git a/docs/development/core/public/kibana-plugin-core-public.app.md b/docs/development/core/public/kibana-plugin-core-public.app.md index 7bdee9dc4c53eb..8e8bae5ad9c586 100644 --- a/docs/development/core/public/kibana-plugin-core-public.app.md +++ b/docs/development/core/public/kibana-plugin-core-public.app.md @@ -27,6 +27,7 @@ export interface App | [mount](./kibana-plugin-core-public.app.mount.md) | AppMount<HistoryLocationState> | AppMountDeprecated<HistoryLocationState> | A mount function called when the user navigates to this app's route. May have signature of [AppMount](./kibana-plugin-core-public.appmount.md) or [AppMountDeprecated](./kibana-plugin-core-public.appmountdeprecated.md). | | [navLinkStatus](./kibana-plugin-core-public.app.navlinkstatus.md) | AppNavLinkStatus | The initial status of the application's navLink. Defaulting to visible if status is accessible and hidden if status is inaccessible See [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) | | [order](./kibana-plugin-core-public.app.order.md) | number | An ordinal used to sort nav links relative to one another for display. | +| [searchDeepLinks](./kibana-plugin-core-public.app.searchdeeplinks.md) | AppSearchDeepLink[] | Array of links that represent secondary in-app locations for the app. | | [status](./kibana-plugin-core-public.app.status.md) | AppStatus | The initial status of the application. Defaulting to accessible | | [title](./kibana-plugin-core-public.app.title.md) | string | The title of the application. | | [tooltip](./kibana-plugin-core-public.app.tooltip.md) | string | A tooltip shown when hovering over app link. | diff --git a/docs/development/core/public/kibana-plugin-core-public.app.searchdeeplinks.md b/docs/development/core/public/kibana-plugin-core-public.app.searchdeeplinks.md new file mode 100644 index 00000000000000..667fddbc212a55 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.app.searchdeeplinks.md @@ -0,0 +1,42 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [searchDeepLinks](./kibana-plugin-core-public.app.searchdeeplinks.md) + +## App.searchDeepLinks property + +Array of links that represent secondary in-app locations for the app. + +Signature: + +```typescript +searchDeepLinks?: AppSearchDeepLink[]; +``` + +## Remarks + +Used to populate navigational search results (where available). Can be updated using the [App.updater$](./kibana-plugin-core-public.app.updater_.md) observable. See for more details. + +## Example + +The `path` property on deep links should not include the application's `appRoute`: + +```ts +core.application.register({ + id: 'my_app', + title: 'My App', + searchDeepLinks: [ + { id: 'sub1', title: 'Sub1', path: '/sub1' }, + { + id: 'sub2', + title: 'Sub2', + searchDeepLinks: [ + { id: 'subsub', title: 'SubSub', path: '/sub2/sub' } + ] + } + ], + mount: () => { ... }, +}) + +``` +Will produce deep links on these paths: - `/app/my_app/sub1` - `/app/my_app/sub2/sub` + diff --git a/docs/development/core/public/kibana-plugin-core-public.appsearchdeeplink.md b/docs/development/core/public/kibana-plugin-core-public.appsearchdeeplink.md new file mode 100644 index 00000000000000..7e5ccf7d06ed19 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.appsearchdeeplink.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppSearchDeepLink](./kibana-plugin-core-public.appsearchdeeplink.md) + +## AppSearchDeepLink type + +Input type for registering secondary in-app locations for an application. + +Deep links must include at least one of `path` or `searchDeepLinks`. A deep link that does not have a `path` represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. + +Signature: + +```typescript +export declare type AppSearchDeepLink = { + id: string; + title: string; +} & ({ + path: string; + searchDeepLinks?: AppSearchDeepLink[]; +} | { + path?: string; + searchDeepLinks: AppSearchDeepLink[]; +}); +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md b/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md index 1232b7f9402552..b6f404c3d11aa3 100644 --- a/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md +++ b/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md @@ -9,5 +9,5 @@ Defines the list of fields that can be updated via an [AppUpdater](./kibana-plug Signature: ```typescript -export declare type AppUpdatableFields = Pick; +export declare type AppUpdatableFields = Pick; ``` diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md index 9da31bb16b56b6..fde40cca38fa21 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.links.md @@ -101,6 +101,12 @@ readonly links: { readonly dateMath: string; }; readonly management: Record; + readonly ml: { + readonly guide: string; + readonly anomalyDetection: string; + readonly anomalyDetectionJobs: string; + readonly dataFrameAnalytics: string; + }; readonly visualize: Record; }; ``` diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md index 01504aafe3bae9..46437f7ccdc21e 100644 --- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md +++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md @@ -17,5 +17,5 @@ export interface DocLinksStart | --- | --- | --- | | [DOC\_LINK\_VERSION](./kibana-plugin-core-public.doclinksstart.doc_link_version.md) | string | | | [ELASTIC\_WEBSITE\_URL](./kibana-plugin-core-public.doclinksstart.elastic_website_url.md) | string | | -| [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
readonly drilldownsTriggerPicker: string;
readonly urlDrilldownTemplateSyntax: string;
readonly urlDrilldownVariables: string;
};
readonly filebeat: {
readonly base: string;
readonly installation: string;
readonly configuration: string;
readonly elasticsearchOutput: string;
readonly startup: string;
readonly exportedFields: string;
};
readonly auditbeat: {
readonly base: string;
};
readonly metricbeat: {
readonly base: string;
};
readonly heartbeat: {
readonly base: string;
};
readonly logstash: {
readonly base: string;
};
readonly functionbeat: {
readonly base: string;
};
readonly winlogbeat: {
readonly base: string;
};
readonly aggs: {
readonly date_histogram: string;
readonly date_range: string;
readonly filter: string;
readonly filters: string;
readonly geohash_grid: string;
readonly histogram: string;
readonly ip_range: string;
readonly range: string;
readonly significant_terms: string;
readonly terms: string;
readonly avg: string;
readonly avg_bucket: string;
readonly max_bucket: string;
readonly min_bucket: string;
readonly sum_bucket: string;
readonly cardinality: string;
readonly count: string;
readonly cumulative_sum: string;
readonly derivative: string;
readonly geo_bounds: string;
readonly geo_centroid: string;
readonly max: string;
readonly median: string;
readonly min: string;
readonly moving_avg: string;
readonly percentile_ranks: string;
readonly serial_diff: string;
readonly std_dev: string;
readonly sum: string;
readonly top_hits: string;
};
readonly scriptedFields: {
readonly scriptFields: string;
readonly scriptAggs: string;
readonly painless: string;
readonly painlessApi: string;
readonly painlessSyntax: string;
readonly luceneExpressions: string;
};
readonly indexPatterns: {
readonly loadingData: string;
readonly introduction: string;
};
readonly addData: string;
readonly kibana: string;
readonly siem: {
readonly guide: string;
readonly gettingStarted: string;
};
readonly query: {
readonly eql: string;
readonly luceneQuerySyntax: string;
readonly queryDsl: string;
readonly kueryQuerySyntax: string;
};
readonly date: {
readonly dateMath: string;
};
readonly management: Record<string, string>;
readonly visualize: Record<string, string>;
} | | +| [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
readonly drilldownsTriggerPicker: string;
readonly urlDrilldownTemplateSyntax: string;
readonly urlDrilldownVariables: string;
};
readonly filebeat: {
readonly base: string;
readonly installation: string;
readonly configuration: string;
readonly elasticsearchOutput: string;
readonly startup: string;
readonly exportedFields: string;
};
readonly auditbeat: {
readonly base: string;
};
readonly metricbeat: {
readonly base: string;
};
readonly heartbeat: {
readonly base: string;
};
readonly logstash: {
readonly base: string;
};
readonly functionbeat: {
readonly base: string;
};
readonly winlogbeat: {
readonly base: string;
};
readonly aggs: {
readonly date_histogram: string;
readonly date_range: string;
readonly filter: string;
readonly filters: string;
readonly geohash_grid: string;
readonly histogram: string;
readonly ip_range: string;
readonly range: string;
readonly significant_terms: string;
readonly terms: string;
readonly avg: string;
readonly avg_bucket: string;
readonly max_bucket: string;
readonly min_bucket: string;
readonly sum_bucket: string;
readonly cardinality: string;
readonly count: string;
readonly cumulative_sum: string;
readonly derivative: string;
readonly geo_bounds: string;
readonly geo_centroid: string;
readonly max: string;
readonly median: string;
readonly min: string;
readonly moving_avg: string;
readonly percentile_ranks: string;
readonly serial_diff: string;
readonly std_dev: string;
readonly sum: string;
readonly top_hits: string;
};
readonly scriptedFields: {
readonly scriptFields: string;
readonly scriptAggs: string;
readonly painless: string;
readonly painlessApi: string;
readonly painlessSyntax: string;
readonly luceneExpressions: string;
};
readonly indexPatterns: {
readonly loadingData: string;
readonly introduction: string;
};
readonly addData: string;
readonly kibana: string;
readonly siem: {
readonly guide: string;
readonly gettingStarted: string;
};
readonly query: {
readonly eql: string;
readonly luceneQuerySyntax: string;
readonly queryDsl: string;
readonly kueryQuerySyntax: string;
};
readonly date: {
readonly dateMath: string;
};
readonly management: Record<string, string>;
readonly ml: {
readonly guide: string;
readonly anomalyDetection: string;
readonly anomalyDetectionJobs: string;
readonly dataFrameAnalytics: string;
};
readonly visualize: Record<string, string>;
} | | diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.md index 7407c8a89da8e8..3afce9fee2a7cd 100644 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.md +++ b/docs/development/core/public/kibana-plugin-core-public.ibasepath.md @@ -18,6 +18,7 @@ export interface IBasePath | --- | --- | --- | | [get](./kibana-plugin-core-public.ibasepath.get.md) | () => string | Gets the basePath string. | | [prepend](./kibana-plugin-core-public.ibasepath.prepend.md) | (url: string) => string | Prepends path with the basePath. | +| [publicBaseUrl](./kibana-plugin-core-public.ibasepath.publicbaseurl.md) | string | The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [IBasePath.serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md). | | [remove](./kibana-plugin-core-public.ibasepath.remove.md) | (url: string) => string | Removes the prepended basePath from the path. | | [serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md) | string | Returns the server's root basePath as configured, without any namespace prefix.See for getting the basePath value for a specific request | diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md new file mode 100644 index 00000000000000..f45cc6eba29593 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [publicBaseUrl](./kibana-plugin-core-public.ibasepath.publicbaseurl.md) + +## IBasePath.publicBaseUrl property + +The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [IBasePath.serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md). + +Signature: + +```typescript +readonly publicBaseUrl?: string; +``` + +## Remarks + +Should be used for generating external URL links back to this Kibana instance. + diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md index 6a90fd49f1d667..5f656b9ca510d6 100644 --- a/docs/development/core/public/kibana-plugin-core-public.md +++ b/docs/development/core/public/kibana-plugin-core-public.md @@ -138,6 +138,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) | A handler that will be executed before leaving the application, either when going to another application or when closing the browser tab or manually changing the url. Should return confirm to to prompt a message to the user before leaving the page, or default to keep the default behavior (doing nothing).See [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) for detailed usage examples. | | [AppMount](./kibana-plugin-core-public.appmount.md) | A mount function called when the user navigates to this app's route. | | [AppMountDeprecated](./kibana-plugin-core-public.appmountdeprecated.md) | A mount function called when the user navigates to this app's route. | +| [AppSearchDeepLink](./kibana-plugin-core-public.appsearchdeeplink.md) | Input type for registering secondary in-app locations for an application.Deep links must include at least one of path or searchDeepLinks. A deep link that does not have a path represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. | | [AppUnmount](./kibana-plugin-core-public.appunmount.md) | A function called when an application should be unmounted from the page. This function should be synchronous. | | [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) | Defines the list of fields that can be updated via an [AppUpdater](./kibana-plugin-core-public.appupdater.md). | | [AppUpdater](./kibana-plugin-core-public.appupdater.md) | Updater for applications. see [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) | @@ -160,6 +161,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [PluginInitializer](./kibana-plugin-core-public.plugininitializer.md) | The plugin export at the root of a plugin's public directory should conform to this interface. | | [PluginOpaqueId](./kibana-plugin-core-public.pluginopaqueid.md) | | | [PublicAppInfo](./kibana-plugin-core-public.publicappinfo.md) | Public information about a registered [application](./kibana-plugin-core-public.app.md) | +| [PublicAppSearchDeepLinkInfo](./kibana-plugin-core-public.publicappsearchdeeplinkinfo.md) | Public information about a registered app's [searchDeepLinks](./kibana-plugin-core-public.appsearchdeeplink.md) | | [PublicUiSettingsParams](./kibana-plugin-core-public.publicuisettingsparams.md) | A sub-set of [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) exposed to the client-side. | | [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) | Type definition for a Saved Object attribute value | | [SavedObjectAttributeSingle](./kibana-plugin-core-public.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) | diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md new file mode 100644 index 00000000000000..4f582e746191f6 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [maxWidth](./kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md) + +## OverlayFlyoutOpenOptions.maxWidth property + +Signature: + +```typescript +maxWidth?: boolean | number | string; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md index 5945bca01f55fd..6665ebde295bc5 100644 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md +++ b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md @@ -18,5 +18,7 @@ export interface OverlayFlyoutOpenOptions | ["data-test-subj"](./kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md) | string | | | [className](./kibana-plugin-core-public.overlayflyoutopenoptions.classname.md) | string | | | [closeButtonAriaLabel](./kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md) | string | | +| [maxWidth](./kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md) | boolean | number | string | | | [ownFocus](./kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md) | boolean | | +| [size](./kibana-plugin-core-public.overlayflyoutopenoptions.size.md) | EuiFlyoutSize | | diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md new file mode 100644 index 00000000000000..3754242dc7c260 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [size](./kibana-plugin-core-public.overlayflyoutopenoptions.size.md) + +## OverlayFlyoutOpenOptions.size property + +Signature: + +```typescript +size?: EuiFlyoutSize; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md b/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md index 3717dc847db25b..d56b0ac58cd9b1 100644 --- a/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md +++ b/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md @@ -9,9 +9,10 @@ Public information about a registered [application](./kibana-plugin-core-public. Signature: ```typescript -export declare type PublicAppInfo = Omit & { +export declare type PublicAppInfo = Omit & { status: AppStatus; navLinkStatus: AppNavLinkStatus; appRoute: string; + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; }; ``` diff --git a/docs/development/core/public/kibana-plugin-core-public.publicappsearchdeeplinkinfo.md b/docs/development/core/public/kibana-plugin-core-public.publicappsearchdeeplinkinfo.md new file mode 100644 index 00000000000000..9814f0408d0474 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.publicappsearchdeeplinkinfo.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PublicAppSearchDeepLinkInfo](./kibana-plugin-core-public.publicappsearchdeeplinkinfo.md) + +## PublicAppSearchDeepLinkInfo type + +Public information about a registered app's [searchDeepLinks](./kibana-plugin-core-public.appsearchdeeplink.md) + +Signature: + +```typescript +export declare type PublicAppSearchDeepLinkInfo = Omit & { + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; +}; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md index 4a9fc940c596ff..2cc149e2e2a79f 100644 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md +++ b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md @@ -19,7 +19,7 @@ export interface UiSettingsParams | [category](./kibana-plugin-core-public.uisettingsparams.category.md) | string[] | used to group the configured setting in the UI | | [deprecation](./kibana-plugin-core-public.uisettingsparams.deprecation.md) | DeprecationSettings | optional deprecation information. Used to generate a deprecation warning. | | [description](./kibana-plugin-core-public.uisettingsparams.description.md) | string | description provided to a user in UI | -| [metric](./kibana-plugin-core-public.uisettingsparams.metric.md) | {
type: UiStatsMetricType;
name: string;
} | Metric to track once this property changes | +| [metric](./kibana-plugin-core-public.uisettingsparams.metric.md) | {
type: UiCounterMetricType;
name: string;
} | Metric to track once this property changes | | [name](./kibana-plugin-core-public.uisettingsparams.name.md) | string | title in the UI | | [optionLabels](./kibana-plugin-core-public.uisettingsparams.optionlabels.md) | Record<string, string> | text labels for 'select' type UI element | | [options](./kibana-plugin-core-public.uisettingsparams.options.md) | string[] | array of permitted values for this setting | diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md index 0855cfd77a46b4..c6d288ec8f5422 100644 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md +++ b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md @@ -15,7 +15,7 @@ Metric to track once this property changes ```typescript metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; ``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.md b/docs/development/core/server/kibana-plugin-core-server.basepath.md index a5e09e34759a87..54ab029d987a78 100644 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.md +++ b/docs/development/core/server/kibana-plugin-core-server.basepath.md @@ -22,6 +22,7 @@ The constructor for this class is marked as internal. Third-party code should no | --- | --- | --- | --- | | [get](./kibana-plugin-core-server.basepath.get.md) | | (request: KibanaRequest | LegacyRequest) => string | returns basePath value, specific for an incoming request. | | [prepend](./kibana-plugin-core-server.basepath.prepend.md) | | (path: string) => string | Prepends path with the basePath. | +| [publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md) | | string | The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [BasePath.serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md). | | [remove](./kibana-plugin-core-server.basepath.remove.md) | | (path: string) => string | Removes the prepended basePath from the path. | | [serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md) | | string | returns the server's basePathSee [BasePath.get](./kibana-plugin-core-server.basepath.get.md) for getting the basePath value for a specific request | | [set](./kibana-plugin-core-server.basepath.set.md) | | (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => void | sets basePath value, specific for an incoming request. | diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md b/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md new file mode 100644 index 00000000000000..65842333ac2463 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md) + +## BasePath.publicBaseUrl property + +The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [BasePath.serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md). + +Signature: + +```typescript +readonly publicBaseUrl?: string; +``` + +## Remarks + +Should be used for generating external URL links back to this Kibana instance. + diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md index 3541824a2e81ed..890bfaa834dc56 100644 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md +++ b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md @@ -4,6 +4,7 @@ ## HttpServerInfo interface +Information about what hostname, port, and protocol the server process is running on. Note that this may not match the URL that end-users access Kibana at. For the public URL, see [BasePath.publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md index 2e235485711c6e..7c8cc18d24e299 100644 --- a/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md +++ b/docs/development/core/server/kibana-plugin-core-server.legacyclusterclient.callasinternaluser.md @@ -4,6 +4,11 @@ ## LegacyClusterClient.callAsInternalUser property +> Warning: This API is now obsolete. +> +> Use [IClusterClient.asInternalUser](./kibana-plugin-core-server.iclusterclient.asinternaluser.md). +> + Calls specified endpoint with provided clientParams on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md index 9130f9adde76e0..7517acc59ac801 100644 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md +++ b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callascurrentuser.md @@ -4,6 +4,11 @@ ## LegacyScopedClusterClient.callAsCurrentUser() method +> Warning: This API is now obsolete. +> +> Use [IScopedClusterClient.asCurrentUser](./kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md). +> + Calls specified `endpoint` with provided `clientParams` on behalf of the user initiated request to the Kibana server (via HTTP request headers). See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md index bf95782299e720..b683d3945f9ff0 100644 --- a/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md +++ b/docs/development/core/server/kibana-plugin-core-server.legacyscopedclusterclient.callasinternaluser.md @@ -4,6 +4,11 @@ ## LegacyScopedClusterClient.callAsInternalUser() method +> Warning: This API is now obsolete. +> +> Use [IScopedClusterClient.asInternalUser](./kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md). +> + Calls specified `endpoint` with provided `clientParams` on behalf of the Kibana internal user. See [LegacyAPICaller](./kibana-plugin-core-server.legacyapicaller.md). Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md index adbb2460dc80aa..1a4209ff87c5b4 100644 --- a/docs/development/core/server/kibana-plugin-core-server.md +++ b/docs/development/core/server/kibana-plugin-core-server.md @@ -86,7 +86,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [HttpResourcesRenderOptions](./kibana-plugin-core-server.httpresourcesrenderoptions.md) | Allows to configure HTTP response parameters | | [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) | Extended set of [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) helpers used to respond with HTML or JS resource. | | [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) | HTTP response parameters | -| [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) | | +| [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) | Information about what hostname, port, and protocol the server process is running on. Note that this may not match the URL that end-users access Kibana at. For the public URL, see [BasePath.publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md). | | [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) | Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to hapi server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. | | [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) | | | [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) | | @@ -177,6 +177,7 @@ The plugin integrates with the core system via lifecycle events: `setup` | [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) | Represents a successful import. | | [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) | Represents a failure to import due to an unknown reason. | | [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md) | Represents a failure to import due to having an unsupported saved object type. | +| [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) | | | [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) | | | [SavedObjectsMappingProperties](./kibana-plugin-core-server.savedobjectsmappingproperties.md) | Describe the fields of a [saved object type](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md). | | [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) | | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md new file mode 100644 index 00000000000000..44c3ab18fea61b --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) > [fieldName](./kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md) + +## SavedObjectsIncrementCounterField.fieldName property + +The field name to increment the counter by. + +Signature: + +```typescript +fieldName: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md new file mode 100644 index 00000000000000..dc6f8b114c1c5c --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) > [incrementBy](./kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md) + +## SavedObjectsIncrementCounterField.incrementBy property + +The number to increment the field by (defaults to 1). + +Signature: + +```typescript +incrementBy?: number; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md new file mode 100644 index 00000000000000..10615c7da4c34c --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) + +## SavedObjectsIncrementCounterField interface + + +Signature: + +```typescript +export interface SavedObjectsIncrementCounterField +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [fieldName](./kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md) | string | The field name to increment the counter by. | +| [incrementBy](./kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md) | number | The number to increment the field by (defaults to 1). | + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md new file mode 100644 index 00000000000000..61091306d0dbc8 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) > [initialize](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md) + +## SavedObjectsIncrementCounterOptions.initialize property + +(default=false) If true, sets all the counter fields to 0 if they don't already exist. Existing fields will be left as-is and won't be incremented. + +Signature: + +```typescript +initialize?: boolean; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md index 6077945ddd376c..68e9bb09456cd5 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md @@ -15,6 +15,7 @@ export interface SavedObjectsIncrementCounterOptions extends SavedObjectsBaseOpt | Property | Type | Description | | --- | --- | --- | -| [migrationVersion](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md) | SavedObjectsMigrationVersion | | -| [refresh](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md) | MutatingOperationRefreshSetting | The Elasticsearch Refresh setting for this operation | +| [initialize](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md) | boolean | (default=false) If true, sets all the counter fields to 0 if they don't already exist. Existing fields will be left as-is and won't be incremented. | +| [migrationVersion](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md) | SavedObjectsMigrationVersion | [SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) | +| [refresh](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md) | MutatingOperationRefreshSetting | (default='wait\_for') The Elasticsearch refresh setting for this operation. See [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md index 417db99fd5a27a..aff80138d61cf3 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md @@ -4,6 +4,8 @@ ## SavedObjectsIncrementCounterOptions.migrationVersion property +[SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) + Signature: ```typescript diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md index 31d957ca30a3e4..4f217cc223d46e 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md @@ -4,7 +4,7 @@ ## SavedObjectsIncrementCounterOptions.refresh property -The Elasticsearch Refresh setting for this operation +(default='wait\_for') The Elasticsearch refresh setting for this operation. See [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) Signature: diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md index f3a2ee38cbdbd7..92f5f4e2aff24e 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md @@ -4,26 +4,53 @@ ## SavedObjectsRepository.incrementCounter() method -Increases a counter field by one. Creates the document if one doesn't exist for the given id. +Increments all the specified counter fields (by one by default). Creates the document if one doesn't exist for the given id. Signature: ```typescript -incrementCounter(type: string, id: string, counterFieldName: string, options?: SavedObjectsIncrementCounterOptions): Promise; +incrementCounter(type: string, id: string, counterFields: Array, options?: SavedObjectsIncrementCounterOptions): Promise>; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| type | string | | -| id | string | | -| counterFieldName | string | | -| options | SavedObjectsIncrementCounterOptions | | +| type | string | The type of saved object whose fields should be incremented | +| id | string | The id of the document whose fields should be incremented | +| counterFields | Array<string | SavedObjectsIncrementCounterField> | An array of field names to increment or an array of [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) | +| options | SavedObjectsIncrementCounterOptions | [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) | Returns: -`Promise` +`Promise>` -{promise} +The saved object after the specified fields were incremented + +## Remarks + +When supplying a field name like `stats.api.counter` the field name will be used as-is to create a document like: `{attributes: {'stats.api.counter': 1}}` It will not create a nested structure like: `{attributes: {stats: {api: {counter: 1}}}}` + +When using incrementCounter for collecting usage data, you need to ensure that usage collection happens on a best-effort basis and doesn't negatively affect your plugin or users. See https://github.com/elastic/kibana/blob/master/src/plugins/usage\_collection/README.md\#tracking-interactions-with-incrementcounter) + +## Example + + +```ts +const repository = coreStart.savedObjects.createInternalRepository(); + +// Initialize all fields to 0 +repository + .incrementCounter('dashboard_counter_type', 'counter_id', [ + 'stats.apiCalls', + 'stats.sampleDataInstalled', + ], {initialize: true}); + +// Increment the apiCalls field counter +repository + .incrementCounter('dashboard_counter_type', 'counter_id', [ + 'stats.apiCalls', + ]) + +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md index 6a56f0bee718b6..c7e5b0476bad46 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md @@ -26,7 +26,7 @@ export declare class SavedObjectsRepository | [deleteFromNamespaces(type, id, namespaces, options)](./kibana-plugin-core-server.savedobjectsrepository.deletefromnamespaces.md) | | Removes one or more namespaces from a given multi-namespace saved object. If no namespaces remain, the saved object is deleted entirely. This method and \[addToNamespaces\][SavedObjectsRepository.addToNamespaces()](./kibana-plugin-core-server.savedobjectsrepository.addtonamespaces.md) are the only ways to change which Spaces a multi-namespace saved object is shared to. | | [find(options)](./kibana-plugin-core-server.savedobjectsrepository.find.md) | | | | [get(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.get.md) | | Gets a single object | -| [incrementCounter(type, id, counterFieldName, options)](./kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md) | | Increases a counter field by one. Creates the document if one doesn't exist for the given id. | +| [incrementCounter(type, id, counterFields, options)](./kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md) | | Increments all the specified counter fields (by one by default). Creates the document if one doesn't exist for the given id. | | [removeReferencesTo(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md) | | Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. | | [update(type, id, attributes, options)](./kibana-plugin-core-server.savedobjectsrepository.update.md) | | Updates an object | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md index e86d7cbb36435a..a9dfd84cf0b427 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md @@ -9,7 +9,7 @@ Given a saved object type and id, generates the compound id that is stored in th Signature: ```typescript -generateRawId(namespace: string | undefined, type: string, id?: string): string; +generateRawId(namespace: string | undefined, type: string, id: string): string; ``` ## Parameters diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md new file mode 100644 index 00000000000000..f0951844849927 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [generateId](./kibana-plugin-core-server.savedobjectsutils.generateid.md) + +## SavedObjectsUtils.generateId() method + +Generates a random ID for a saved objects. + +Signature: + +```typescript +static generateId(): string; +``` +Returns: + +`string` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md new file mode 100644 index 00000000000000..7bfb1bcbd8cd79 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [isRandomId](./kibana-plugin-core-server.savedobjectsutils.israndomid.md) + +## SavedObjectsUtils.isRandomId() method + +Validates that a saved object ID matches UUID format. + +Signature: + +```typescript +static isRandomId(id: string | undefined): boolean; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| id | string | undefined | | + +Returns: + +`boolean` + diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md index 83831f65bd41a7..7b774e14b640f0 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md @@ -19,3 +19,10 @@ export declare class SavedObjectsUtils | [namespaceIdToString](./kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md) | static | (namespace?: string | undefined) => string | Converts a given saved object namespace ID to its string representation. All namespace IDs have an identical string representation, with the exception of the undefined namespace ID (which has a namespace string of 'default'). | | [namespaceStringToId](./kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md) | static | (namespace: string) => string | undefined | Converts a given saved object namespace string to its ID representation. All namespace strings have an identical ID representation, with the exception of the 'default' namespace string (which has a namespace ID of undefined). | +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [generateId()](./kibana-plugin-core-server.savedobjectsutils.generateid.md) | static | Generates a random ID for a saved objects. | +| [isRandomId(id)](./kibana-plugin-core-server.savedobjectsutils.israndomid.md) | static | Validates that a saved object ID matches UUID format. | + diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md index 7bcb996e98e167..4dfde5200e7e9f 100644 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md +++ b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md @@ -19,7 +19,7 @@ export interface UiSettingsParams | [category](./kibana-plugin-core-server.uisettingsparams.category.md) | string[] | used to group the configured setting in the UI | | [deprecation](./kibana-plugin-core-server.uisettingsparams.deprecation.md) | DeprecationSettings | optional deprecation information. Used to generate a deprecation warning. | | [description](./kibana-plugin-core-server.uisettingsparams.description.md) | string | description provided to a user in UI | -| [metric](./kibana-plugin-core-server.uisettingsparams.metric.md) | {
type: UiStatsMetricType;
name: string;
} | Metric to track once this property changes | +| [metric](./kibana-plugin-core-server.uisettingsparams.metric.md) | {
type: UiCounterMetricType;
name: string;
} | Metric to track once this property changes | | [name](./kibana-plugin-core-server.uisettingsparams.name.md) | string | title in the UI | | [optionLabels](./kibana-plugin-core-server.uisettingsparams.optionlabels.md) | Record<string, string> | text labels for 'select' type UI element | | [options](./kibana-plugin-core-server.uisettingsparams.options.md) | string[] | array of permitted values for this setting | diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md index 4d54bf9ae472b8..8491de9a8f5dc4 100644 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md +++ b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md @@ -15,7 +15,7 @@ Metric to track once this property changes ```typescript metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md new file mode 100644 index 00000000000000..883dbcfe289cb2 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.exporters.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [exporters](./kibana-plugin-plugins-data-public.exporters.md) + +## exporters variable + +Signature: + +```typescript +exporters: { + datatableToCSV: typeof datatableToCSV; + CSV_MIME_TYPE: string; +} +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md index 26276a809a6131..3ef42968d85cda 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.deletefieldformat.md @@ -7,5 +7,5 @@ Signature: ```typescript -deleteFieldFormat: (fieldName: string) => void; +readonly deleteFieldFormat: (fieldName: string) => void; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md index 0c1fbe7d0d1b65..a0b54c6de50c9d 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md @@ -8,8 +8,6 @@ ```typescript getFieldAttrs: () => { - [x: string]: { - customLabel: string; - }; + [x: string]: FieldAttrSet; }; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md index 3383116f404b20..179148265e68d3 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md @@ -27,7 +27,7 @@ export declare class IndexPattern implements IIndexPattern | [flattenHit](./kibana-plugin-plugins-data-public.indexpattern.flattenhit.md) | | (hit: Record<string, any>, deep?: boolean) => Record<string, any> | | | [formatField](./kibana-plugin-plugins-data-public.indexpattern.formatfield.md) | | FormatFieldFn | | | [formatHit](./kibana-plugin-plugins-data-public.indexpattern.formathit.md) | | {
(hit: Record<string, any>, type?: string): any;
formatField: FormatFieldFn;
} | | -| [getFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md) | | () => {
[x: string]: {
customLabel: string;
};
} | | +| [getFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.getfieldattrs.md) | | () => {
[x: string]: FieldAttrSet;
} | | | [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-public.indexpattern.getoriginalsavedobjectbody.md) | | () => {
fieldAttrs?: string | undefined;
title?: string | undefined;
timeFieldName?: string | undefined;
intervalName?: string | undefined;
fields?: string | undefined;
sourceFilters?: string | undefined;
fieldFormatMap?: string | undefined;
typeMeta?: string | undefined;
type?: string | undefined;
} | Get last saved saved object fields | | [id](./kibana-plugin-plugins-data-public.indexpattern.id.md) | | string | | | [intervalName](./kibana-plugin-plugins-data-public.indexpattern.intervalname.md) | | string | undefined | | @@ -59,5 +59,8 @@ export declare class IndexPattern implements IIndexPattern | [isTimeBased()](./kibana-plugin-plugins-data-public.indexpattern.istimebased.md) | | | | [isTimeNanosBased()](./kibana-plugin-plugins-data-public.indexpattern.istimenanosbased.md) | | | | [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | +| [setFieldAttrs(fieldName, attrName, value)](./kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md) | | | +| [setFieldCount(fieldName, count)](./kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md) | | | +| [setFieldCustomLabel(fieldName, customLabel)](./kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md) | | | | [toSpec()](./kibana-plugin-plugins-data-public.indexpattern.tospec.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md new file mode 100644 index 00000000000000..034081be71cb74 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldAttrs](./kibana-plugin-plugins-data-public.indexpattern.setfieldattrs.md) + +## IndexPattern.setFieldAttrs() method + +Signature: + +```typescript +protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| attrName | K | | +| value | FieldAttrSet[K] | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md new file mode 100644 index 00000000000000..c0783a6b132708 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldCount](./kibana-plugin-plugins-data-public.indexpattern.setfieldcount.md) + +## IndexPattern.setFieldCount() method + +Signature: + +```typescript +setFieldCount(fieldName: string, count: number | undefined | null): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| count | number | undefined | null | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md new file mode 100644 index 00000000000000..174041ba9736ac --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [setFieldCustomLabel](./kibana-plugin-plugins-data-public.indexpattern.setfieldcustomlabel.md) + +## IndexPattern.setFieldCustomLabel() method + +Signature: + +```typescript +setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| customLabel | string | undefined | null | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md index 9774fc8c7308cf..1a705659e8c431 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.setfieldformat.md @@ -7,5 +7,5 @@ Signature: ```typescript -setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; +readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md new file mode 100644 index 00000000000000..015894d4cdd259 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [deleteCount](./kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md) + +## IndexPatternField.deleteCount() method + +Signature: + +```typescript +deleteCount(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md index caf7d374161ddc..c8118770ed3944 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md @@ -43,6 +43,7 @@ export declare class IndexPatternField implements IFieldType | Method | Modifiers | Description | | --- | --- | --- | +| [deleteCount()](./kibana-plugin-plugins-data-public.indexpatternfield.deletecount.md) | | | | [toJSON()](./kibana-plugin-plugins-data-public.indexpatternfield.tojson.md) | | | | [toSpec({ getFormatterForField, })](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md index 39c8b0a700c8a3..4934672d75f31b 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatterns.md @@ -16,7 +16,6 @@ indexPatterns: { isFilterable: typeof isFilterable; isNestedField: typeof isNestedField; validate: typeof validateIndexPattern; - getFromSavedObject: typeof getFromSavedObject; flattenHitWrapper: typeof flattenHitWrapper; formatHitProvider: typeof formatHitProvider; } diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md new file mode 100644 index 00000000000000..f642965c5da80f --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.find.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternsService](./kibana-plugin-plugins-data-public.indexpatternsservice.md) > [find](./kibana-plugin-plugins-data-public.indexpatternsservice.find.md) + +## IndexPatternsService.find property + +Signature: + +```typescript +find: (search: string, size?: number) => Promise; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md index 48019fe410b975..30ce1fa1de386b 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternsservice.md @@ -23,6 +23,7 @@ export declare class IndexPatternsService | [clearCache](./kibana-plugin-plugins-data-public.indexpatternsservice.clearcache.md) | | (id?: string | undefined) => void | Clear index pattern list cache | | [ensureDefaultIndexPattern](./kibana-plugin-plugins-data-public.indexpatternsservice.ensuredefaultindexpattern.md) | | EnsureDefaultIndexPattern | | | [fieldArrayToMap](./kibana-plugin-plugins-data-public.indexpatternsservice.fieldarraytomap.md) | | (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record<string, FieldSpec> | Converts field array to map | +| [find](./kibana-plugin-plugins-data-public.indexpatternsservice.find.md) | | (search: string, size?: number) => Promise<IndexPattern[]> | | | [get](./kibana-plugin-plugins-data-public.indexpatternsservice.get.md) | | (id: string) => Promise<IndexPattern> | Get an index pattern by id. Cache optimized | | [getCache](./kibana-plugin-plugins-data-public.indexpatternsservice.getcache.md) | | () => Promise<SavedObject<IndexPatternSavedObjectAttrs>[] | null | undefined> | | | [getDefault](./kibana-plugin-plugins-data-public.indexpatternsservice.getdefault.md) | | () => Promise<IndexPattern | null> | Get default index pattern | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md index b2f8e83d8e6545..a370c67f460f4e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.md @@ -17,6 +17,7 @@ export interface ISearchSetup | Property | Type | Description | | --- | --- | --- | | [aggs](./kibana-plugin-plugins-data-public.isearchsetup.aggs.md) | AggsSetup | | -| [session](./kibana-plugin-plugins-data-public.isearchsetup.session.md) | ISessionService | session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | +| [session](./kibana-plugin-plugins-data-public.isearchsetup.session.md) | ISessionService | Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | +| [sessionsClient](./kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md) | ISessionsClient | Background search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | | [usageCollector](./kibana-plugin-plugins-data-public.isearchsetup.usagecollector.md) | SearchUsageCollector | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md index 739fdfdeb5fc36..451dbc86b86b66 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.session.md @@ -4,7 +4,7 @@ ## ISearchSetup.session property -session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) +Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) Signature: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md new file mode 100644 index 00000000000000..d9af202cf1018f --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) > [sessionsClient](./kibana-plugin-plugins-data-public.isearchsetup.sessionsclient.md) + +## ISearchSetup.sessionsClient property + +Background search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) + +Signature: + +```typescript +sessionsClient: ISessionsClient; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md index dba60c7bdf147d..a27e155dda1117 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.md @@ -19,6 +19,7 @@ export interface ISearchStart | [aggs](./kibana-plugin-plugins-data-public.isearchstart.aggs.md) | AggsStart | agg config sub service [AggsStart](./kibana-plugin-plugins-data-public.aggsstart.md) | | [search](./kibana-plugin-plugins-data-public.isearchstart.search.md) | ISearchGeneric | low level search [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) | | [searchSource](./kibana-plugin-plugins-data-public.isearchstart.searchsource.md) | ISearchStartSearchSource | high level search [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) | -| [session](./kibana-plugin-plugins-data-public.isearchstart.session.md) | ISessionService | session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | +| [session](./kibana-plugin-plugins-data-public.isearchstart.session.md) | ISessionService | Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | +| [sessionsClient](./kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md) | ISessionsClient | Background search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | | [showError](./kibana-plugin-plugins-data-public.isearchstart.showerror.md) | (e: Error) => void | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md index 1ad194a9bec868..892b0fa6acb607 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.session.md @@ -4,7 +4,7 @@ ## ISearchStart.session property -session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) +Current session management [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) Signature: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md new file mode 100644 index 00000000000000..9c3210d2ec4175 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) > [sessionsClient](./kibana-plugin-plugins-data-public.isearchstart.sessionsclient.md) + +## ISearchStart.sessionsClient property + +Background search sessions SO CRUD [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) + +Signature: + +```typescript +sessionsClient: ISessionsClient; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md new file mode 100644 index 00000000000000..d6efabb1b9518e --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionsclient.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) + +## ISessionsClient type + +Signature: + +```typescript +export declare type ISessionsClient = PublicContract; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.clear.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.clear.md deleted file mode 100644 index fc3d214eb4cad1..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.clear.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [clear](./kibana-plugin-plugins-data-public.isessionservice.clear.md) - -## ISessionService.clear property - -Clears the active session. - -Signature: - -```typescript -clear: () => void; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.delete.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.delete.md deleted file mode 100644 index eabb966160c4d8..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.delete.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [delete](./kibana-plugin-plugins-data-public.isessionservice.delete.md) - -## ISessionService.delete property - -Deletes a session - -Signature: - -```typescript -delete: (sessionId: string) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.find.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.find.md deleted file mode 100644 index 58e2fea0e6fe93..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.find.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [find](./kibana-plugin-plugins-data-public.isessionservice.find.md) - -## ISessionService.find property - -Gets a list of saved sessions - -Signature: - -```typescript -find: (options: SearchSessionFindOptions) => Promise>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.get.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.get.md deleted file mode 100644 index a2dff2f18253bc..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [get](./kibana-plugin-plugins-data-public.isessionservice.get.md) - -## ISessionService.get property - -Gets a saved session - -Signature: - -```typescript -get: (sessionId: string) => Promise>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsession_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsession_.md deleted file mode 100644 index e30c89fb1a9fdf..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsession_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [getSession$](./kibana-plugin-plugins-data-public.isessionservice.getsession_.md) - -## ISessionService.getSession$ property - -Returns the observable that emits an update every time the session ID changes - -Signature: - -```typescript -getSession$: () => Observable; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsessionid.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsessionid.md deleted file mode 100644 index 838023ff1d8b90..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.getsessionid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [getSessionId](./kibana-plugin-plugins-data-public.isessionservice.getsessionid.md) - -## ISessionService.getSessionId property - -Returns the active session ID - -Signature: - -```typescript -getSessionId: () => string | undefined; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isrestore.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isrestore.md deleted file mode 100644 index 8d8cd1f31bb957..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isrestore.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [isRestore](./kibana-plugin-plugins-data-public.isessionservice.isrestore.md) - -## ISessionService.isRestore property - -Whether the active session is restored (i.e. reusing previous search IDs) - -Signature: - -```typescript -isRestore: () => boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isstored.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isstored.md deleted file mode 100644 index db737880bb84e9..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.isstored.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [isStored](./kibana-plugin-plugins-data-public.isessionservice.isstored.md) - -## ISessionService.isStored property - -Whether the active session is already saved (i.e. sent to background) - -Signature: - -```typescript -isStored: () => boolean; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md index 02c0a821e552dc..8938c880a04718 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.md @@ -2,28 +2,10 @@ [Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) -## ISessionService interface +## ISessionService type Signature: ```typescript -export interface ISessionService +export declare type ISessionService = PublicContract; ``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [clear](./kibana-plugin-plugins-data-public.isessionservice.clear.md) | () => void | Clears the active session. | -| [delete](./kibana-plugin-plugins-data-public.isessionservice.delete.md) | (sessionId: string) => Promise<void> | Deletes a session | -| [find](./kibana-plugin-plugins-data-public.isessionservice.find.md) | (options: SearchSessionFindOptions) => Promise<SavedObjectsFindResponse<BackgroundSessionSavedObjectAttributes>> | Gets a list of saved sessions | -| [get](./kibana-plugin-plugins-data-public.isessionservice.get.md) | (sessionId: string) => Promise<SavedObject<BackgroundSessionSavedObjectAttributes>> | Gets a saved session | -| [getSession$](./kibana-plugin-plugins-data-public.isessionservice.getsession_.md) | () => Observable<string | undefined> | Returns the observable that emits an update every time the session ID changes | -| [getSessionId](./kibana-plugin-plugins-data-public.isessionservice.getsessionid.md) | () => string | undefined | Returns the active session ID | -| [isRestore](./kibana-plugin-plugins-data-public.isessionservice.isrestore.md) | () => boolean | Whether the active session is restored (i.e. reusing previous search IDs) | -| [isStored](./kibana-plugin-plugins-data-public.isessionservice.isstored.md) | () => boolean | Whether the active session is already saved (i.e. sent to background) | -| [restore](./kibana-plugin-plugins-data-public.isessionservice.restore.md) | (sessionId: string) => Promise<SavedObject<BackgroundSessionSavedObjectAttributes>> | Restores existing session | -| [save](./kibana-plugin-plugins-data-public.isessionservice.save.md) | (name: string, url: string) => Promise<SavedObject<BackgroundSessionSavedObjectAttributes>> | Saves a session | -| [start](./kibana-plugin-plugins-data-public.isessionservice.start.md) | () => string | Starts a new session | -| [update](./kibana-plugin-plugins-data-public.isessionservice.update.md) | (sessionId: string, attributes: Partial<BackgroundSessionSavedObjectAttributes>) => Promise<any> | Updates a session | - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.restore.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.restore.md deleted file mode 100644 index 96106a6ef7e2d1..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.restore.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [restore](./kibana-plugin-plugins-data-public.isessionservice.restore.md) - -## ISessionService.restore property - -Restores existing session - -Signature: - -```typescript -restore: (sessionId: string) => Promise>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.save.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.save.md deleted file mode 100644 index 4ac4a966144676..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.save.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [save](./kibana-plugin-plugins-data-public.isessionservice.save.md) - -## ISessionService.save property - -Saves a session - -Signature: - -```typescript -save: (name: string, url: string) => Promise>; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.start.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.start.md deleted file mode 100644 index 9e14c5ed267658..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.start.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [start](./kibana-plugin-plugins-data-public.isessionservice.start.md) - -## ISessionService.start property - -Starts a new session - -Signature: - -```typescript -start: () => string; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.update.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.update.md deleted file mode 100644 index 5e2ff53d58ab77..00000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.isessionservice.update.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) > [update](./kibana-plugin-plugins-data-public.isessionservice.update.md) - -## ISessionService.update property - -Updates a session - -Signature: - -```typescript -update: (sessionId: string, attributes: Partial) => Promise; -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md index bafcd8bdffff97..08ed14b92d24c7 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md @@ -34,6 +34,7 @@ | [KBN\_FIELD\_TYPES](./kibana-plugin-plugins-data-public.kbn_field_types.md) | \* | | [METRIC\_TYPES](./kibana-plugin-plugins-data-public.metric_types.md) | | | [QuerySuggestionTypes](./kibana-plugin-plugins-data-public.querysuggestiontypes.md) | | +| [SessionState](./kibana-plugin-plugins-data-public.sessionstate.md) | Possible state that current session can be in | | [SortDirection](./kibana-plugin-plugins-data-public.sortdirection.md) | | | [TimeoutErrorMode](./kibana-plugin-plugins-data-public.timeouterrormode.md) | | @@ -74,7 +75,6 @@ | [ISearchSetup](./kibana-plugin-plugins-data-public.isearchsetup.md) | The setup contract exposed by the Search plugin exposes the search strategy extension point. | | [ISearchStart](./kibana-plugin-plugins-data-public.isearchstart.md) | search service | | [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md) | high level search service | -| [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | | | [KueryNode](./kibana-plugin-plugins-data-public.kuerynode.md) | | | [OptionedValueProp](./kibana-plugin-plugins-data-public.optionedvalueprop.md) | | | [QueryState](./kibana-plugin-plugins-data-public.querystate.md) | All query state service state | @@ -89,6 +89,7 @@ | [SavedQueryService](./kibana-plugin-plugins-data-public.savedqueryservice.md) | | | [SearchError](./kibana-plugin-plugins-data-public.searcherror.md) | | | [SearchInterceptorDeps](./kibana-plugin-plugins-data-public.searchinterceptordeps.md) | | +| [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) | Provide info about current search session to be stored in backgroundSearch saved object | | [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) | search source fields | | [TabbedAggColumn](./kibana-plugin-plugins-data-public.tabbedaggcolumn.md) | \* | | [TabbedTable](./kibana-plugin-plugins-data-public.tabbedtable.md) | \* | @@ -108,6 +109,7 @@ | [esFilters](./kibana-plugin-plugins-data-public.esfilters.md) | | | [esKuery](./kibana-plugin-plugins-data-public.eskuery.md) | | | [esQuery](./kibana-plugin-plugins-data-public.esquery.md) | | +| [exporters](./kibana-plugin-plugins-data-public.exporters.md) | | | [extractSearchSourceReferences](./kibana-plugin-plugins-data-public.extractsearchsourcereferences.md) | | | [fieldFormats](./kibana-plugin-plugins-data-public.fieldformats.md) | | | [fieldList](./kibana-plugin-plugins-data-public.fieldlist.md) | | @@ -165,6 +167,8 @@ | [InputTimeRange](./kibana-plugin-plugins-data-public.inputtimerange.md) | | | [ISearchGeneric](./kibana-plugin-plugins-data-public.isearchgeneric.md) | | | [ISearchSource](./kibana-plugin-plugins-data-public.isearchsource.md) | search source interface | +| [ISessionsClient](./kibana-plugin-plugins-data-public.isessionsclient.md) | | +| [ISessionService](./kibana-plugin-plugins-data-public.isessionservice.md) | | | [KibanaContext](./kibana-plugin-plugins-data-public.kibanacontext.md) | | | [MatchAllFilter](./kibana-plugin-plugins-data-public.matchallfilter.md) | | | [ParsedInterval](./kibana-plugin-plugins-data-public.parsedinterval.md) | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md index 051414eac75856..5f43f8477cb9f1 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror._constructor_.md @@ -9,7 +9,7 @@ Constructs a new instance of the `PainlessError` class Signature: ```typescript -constructor(err: IEsError, request: IKibanaSearchRequest); +constructor(err: IEsError); ``` ## Parameters @@ -17,5 +17,4 @@ constructor(err: IEsError, request: IKibanaSearchRequest); | Parameter | Type | Description | | --- | --- | --- | | err | IEsError | | -| request | IKibanaSearchRequest | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md index 6ab32f3fb1dfad..c77b8b259136b1 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.painlesserror.md @@ -14,7 +14,7 @@ export declare class PainlessError extends EsError | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)(err, request)](./kibana-plugin-plugins-data-public.painlesserror._constructor_.md) | | Constructs a new instance of the PainlessError class | +| [(constructor)(err)](./kibana-plugin-plugins-data-public.painlesserror._constructor_.md) | | Constructs a new instance of the PainlessError class | ## Properties diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.setup.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.setup.md index a0c9b38792825b..1ed6059c23062f 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.setup.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.plugin.setup.md @@ -7,7 +7,7 @@ Signature: ```typescript -setup(core: CoreSetup, { expressions, uiActions, usageCollection }: DataSetupDependencies): DataPublicPluginSetup; +setup(core: CoreSetup, { bfetch, expressions, uiActions, usageCollection }: DataSetupDependencies): DataPublicPluginSetup; ``` ## Parameters @@ -15,7 +15,7 @@ setup(core: CoreSetup, { expressio | Parameter | Type | Description | | --- | --- | --- | | core | CoreSetup<DataStartDependencies, DataPublicPluginStart> | | -| { expressions, uiActions, usageCollection } | DataSetupDependencies | | +| { bfetch, expressions, uiActions, usageCollection } | DataSetupDependencies | | Returns: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md new file mode 100644 index 00000000000000..c11edd95a891b4 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md) + +## QueryStringInputProps.disableLanguageSwitcher property + +Signature: + +```typescript +disableLanguageSwitcher?: boolean; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md new file mode 100644 index 00000000000000..4b1c5b84557e7b --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.icontype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [QueryStringInputProps](./kibana-plugin-plugins-data-public.querystringinputprops.md) > [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md) + +## QueryStringInputProps.iconType property + +Signature: + +```typescript +iconType?: string; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md index d503980da7947f..90c604d131800f 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.querystringinputprops.md @@ -18,6 +18,8 @@ export interface QueryStringInputProps | [className](./kibana-plugin-plugins-data-public.querystringinputprops.classname.md) | string | | | [dataTestSubj](./kibana-plugin-plugins-data-public.querystringinputprops.datatestsubj.md) | string | | | [disableAutoFocus](./kibana-plugin-plugins-data-public.querystringinputprops.disableautofocus.md) | boolean | | +| [disableLanguageSwitcher](./kibana-plugin-plugins-data-public.querystringinputprops.disablelanguageswitcher.md) | boolean | | +| [iconType](./kibana-plugin-plugins-data-public.querystringinputprops.icontype.md) | string | | | [indexPatterns](./kibana-plugin-plugins-data-public.querystringinputprops.indexpatterns.md) | Array<IIndexPattern | string> | | | [isInvalid](./kibana-plugin-plugins-data-public.querystringinputprops.isinvalid.md) | boolean | | | [languageSwitcherPopoverAnchorPosition](./kibana-plugin-plugins-data-public.querystringinputprops.languageswitcherpopoveranchorposition.md) | PopoverAnchorPosition | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md index b886aafcfc00fa..2fd84730957b68 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchbar.md @@ -7,7 +7,7 @@ Signature: ```typescript -SearchBar: React.ComponentClass, "query" | "isLoading" | "filters" | "onRefresh" | "onRefreshChange" | "refreshInterval" | "indexPatterns" | "dataTestSubj" | "screenTitle" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "trackUiMetric" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated">, any> & { - WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; +SearchBar: React.ComponentClass, "query" | "isLoading" | "filters" | "indexPatterns" | "dataTestSubj" | "refreshInterval" | "screenTitle" | "onRefresh" | "onRefreshChange" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "trackUiMetric" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated">, any> & { + WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; } ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md index 1c8b6eb41a72e3..b5ac4a4e53887e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md @@ -7,7 +7,7 @@ Signature: ```typescript -protected handleSearchError(e: any, request: IKibanaSearchRequest, timeoutSignal: AbortSignal, options?: ISearchOptions): Error; +protected handleSearchError(e: any, timeoutSignal: AbortSignal, options?: ISearchOptions): Error; ``` ## Parameters @@ -15,7 +15,6 @@ protected handleSearchError(e: any, request: IKibanaSearchRequest, timeoutSignal | Parameter | Type | Description | | --- | --- | --- | | e | any | | -| request | IKibanaSearchRequest | | | timeoutSignal | AbortSignal | | | options | ISearchOptions | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md index 40c7055e4c0599..5f266e7d8bd8c1 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptor.md @@ -27,7 +27,7 @@ export declare class SearchInterceptor | Method | Modifiers | Description | | --- | --- | --- | | [getTimeoutMode()](./kibana-plugin-plugins-data-public.searchinterceptor.gettimeoutmode.md) | | | -| [handleSearchError(e, request, timeoutSignal, options)](./kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md) | | | +| [handleSearchError(e, timeoutSignal, options)](./kibana-plugin-plugins-data-public.searchinterceptor.handlesearcherror.md) | | | | [search(request, options)](./kibana-plugin-plugins-data-public.searchinterceptor.search.md) | | Searches using the given search method. Overrides the AbortSignal with one that will abort either when cancelPending is called, when the request times out, or when the original AbortSignal is aborted. Updates pendingCount$ when the request is started/finalized. | | [showError(e)](./kibana-plugin-plugins-data-public.searchinterceptor.showerror.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.bfetch.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.bfetch.md new file mode 100644 index 00000000000000..5b7c635c715298 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.bfetch.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchInterceptorDeps](./kibana-plugin-plugins-data-public.searchinterceptordeps.md) > [bfetch](./kibana-plugin-plugins-data-public.searchinterceptordeps.bfetch.md) + +## SearchInterceptorDeps.bfetch property + +Signature: + +```typescript +bfetch: BfetchPublicSetup; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.md index 3653394d28b923..543566b783c231 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchinterceptordeps.md @@ -14,6 +14,7 @@ export interface SearchInterceptorDeps | Property | Type | Description | | --- | --- | --- | +| [bfetch](./kibana-plugin-plugins-data-public.searchinterceptordeps.bfetch.md) | BfetchPublicSetup | | | [http](./kibana-plugin-plugins-data-public.searchinterceptordeps.http.md) | CoreSetup['http'] | | | [session](./kibana-plugin-plugins-data-public.searchinterceptordeps.session.md) | ISessionService | | | [startServices](./kibana-plugin-plugins-data-public.searchinterceptordeps.startservices.md) | Promise<[CoreStart, any, unknown]> | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md new file mode 100644 index 00000000000000..2a5e1d2a3135fe --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) > [getName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md) + +## SearchSessionInfoProvider.getName property + +User-facing name of the session. e.g. will be displayed in background sessions management list + +Signature: + +```typescript +getName: () => Promise; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md new file mode 100644 index 00000000000000..01558ed3dddad1 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) > [getUrlGeneratorData](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md) + +## SearchSessionInfoProvider.getUrlGeneratorData property + +Signature: + +```typescript +getUrlGeneratorData: () => Promise<{ + urlGeneratorId: ID; + initialState: UrlGeneratorStateMapping[ID]['State']; + restoreState: UrlGeneratorStateMapping[ID]['State']; + }>; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md new file mode 100644 index 00000000000000..bcc4a5508eb59c --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsessioninfoprovider.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSessionInfoProvider](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.md) + +## SearchSessionInfoProvider interface + +Provide info about current search session to be stored in backgroundSearch saved object + +Signature: + +```typescript +export interface SearchSessionInfoProvider +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [getName](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.getname.md) | () => Promise<string> | User-facing name of the session. e.g. will be displayed in background sessions management list | +| [getUrlGeneratorData](./kibana-plugin-plugins-data-public.searchsessioninfoprovider.geturlgeneratordata.md) | () => Promise<{
urlGeneratorId: ID;
initialState: UrlGeneratorStateMapping[ID]['State'];
restoreState: UrlGeneratorStateMapping[ID]['State'];
}> | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md index 1980227bee623f..faff901bfc167d 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.getfields.md @@ -13,7 +13,7 @@ getFields(): { type?: string | undefined; query?: import("../..").Query | undefined; filter?: Filter | Filter[] | (() => Filter | Filter[] | undefined) | undefined; - sort?: Record | Record[] | undefined; + sort?: Record | Record[] | undefined; highlight?: any; highlightAll?: boolean | undefined; aggs?: any; @@ -21,7 +21,8 @@ getFields(): { size?: number | undefined; source?: string | boolean | string[] | undefined; version?: boolean | undefined; - fields?: string | boolean | string[] | undefined; + fields?: SearchFieldValue[] | undefined; + fieldsFromSource?: string | boolean | string[] | undefined; index?: import("../..").IndexPattern | undefined; searchAfter?: import("./types").EsQuerySearchAfter | undefined; timeout?: string | undefined; @@ -34,7 +35,7 @@ getFields(): { type?: string | undefined; query?: import("../..").Query | undefined; filter?: Filter | Filter[] | (() => Filter | Filter[] | undefined) | undefined; - sort?: Record | Record[] | undefined; + sort?: Record | Record[] | undefined; highlight?: any; highlightAll?: boolean | undefined; aggs?: any; @@ -42,7 +43,8 @@ getFields(): { size?: number | undefined; source?: string | boolean | string[] | undefined; version?: boolean | undefined; - fields?: string | boolean | string[] | undefined; + fields?: SearchFieldValue[] | undefined; + fieldsFromSource?: string | boolean | string[] | undefined; index?: import("../..").IndexPattern | undefined; searchAfter?: import("./types").EsQuerySearchAfter | undefined; timeout?: string | undefined; diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md index 548fa66e6e518d..df302e9f3b0d39 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.md @@ -41,6 +41,7 @@ export declare class SearchSource | [getSearchRequestBody()](./kibana-plugin-plugins-data-public.searchsource.getsearchrequestbody.md) | | Returns body contents of the search request, often referred as query DSL. | | [getSerializedFields()](./kibana-plugin-plugins-data-public.searchsource.getserializedfields.md) | | serializes search source fields (which can later be passed to [ISearchStartSearchSource](./kibana-plugin-plugins-data-public.isearchstartsearchsource.md)) | | [onRequestStart(handler)](./kibana-plugin-plugins-data-public.searchsource.onrequeststart.md) | | Add a handler that will be notified whenever requests start | +| [removeField(field)](./kibana-plugin-plugins-data-public.searchsource.removefield.md) | | remove field | | [serialize()](./kibana-plugin-plugins-data-public.searchsource.serialize.md) | | Serializes the instance to a JSON string and a set of referenced objects. Use this method to get a representation of the search source which can be stored in a saved object.The references returned by this function can be mixed with other references in the same object, however make sure there are no name-collisions. The references will be named kibanaSavedObjectMeta.searchSourceJSON.index and kibanaSavedObjectMeta.searchSourceJSON.filter[<number>].meta.index.Using createSearchSource, the instance can be re-created. | | [setField(field, value)](./kibana-plugin-plugins-data-public.searchsource.setfield.md) | | sets value to a single search source field | | [setFields(newFields)](./kibana-plugin-plugins-data-public.searchsource.setfields.md) | | Internal, do not use. Overrides all search source fields with the new field array. | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md new file mode 100644 index 00000000000000..1e6b63be997ffa --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsource.removefield.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSource](./kibana-plugin-plugins-data-public.searchsource.md) > [removeField](./kibana-plugin-plugins-data-public.searchsource.removefield.md) + +## SearchSource.removeField() method + +remove field + +Signature: + +```typescript +removeField(field: K): this; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| field | K | | + +Returns: + +`this` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md index 21d09910bd2b94..87f6a0cb7b80fe 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fields.md @@ -4,8 +4,10 @@ ## SearchSourceFields.fields property +Retrieve fields via the search Fields API + Signature: ```typescript -fields?: NameList; +fields?: SearchFieldValue[]; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md new file mode 100644 index 00000000000000..d343d8ce180da4 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SearchSourceFields](./kibana-plugin-plugins-data-public.searchsourcefields.md) > [fieldsFromSource](./kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md) + +## SearchSourceFields.fieldsFromSource property + +> Warning: This API is now obsolete. +> +> It is recommended to use `fields` wherever possible. +> + +Retreive fields directly from \_source (legacy behavior) + +Signature: + +```typescript +fieldsFromSource?: NameList; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md index d19f1da439ceed..683a35fabf5710 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.searchsourcefields.md @@ -17,7 +17,8 @@ export interface SearchSourceFields | Property | Type | Description | | --- | --- | --- | | [aggs](./kibana-plugin-plugins-data-public.searchsourcefields.aggs.md) | any | [AggConfigs](./kibana-plugin-plugins-data-public.aggconfigs.md) | -| [fields](./kibana-plugin-plugins-data-public.searchsourcefields.fields.md) | NameList | | +| [fields](./kibana-plugin-plugins-data-public.searchsourcefields.fields.md) | SearchFieldValue[] | Retrieve fields via the search Fields API | +| [fieldsFromSource](./kibana-plugin-plugins-data-public.searchsourcefields.fieldsfromsource.md) | NameList | Retreive fields directly from \_source (legacy behavior) | | [filter](./kibana-plugin-plugins-data-public.searchsourcefields.filter.md) | Filter[] | Filter | (() => Filter[] | Filter | undefined) | [Filter](./kibana-plugin-plugins-data-public.filter.md) | | [from](./kibana-plugin-plugins-data-public.searchsourcefields.from.md) | number | | | [highlight](./kibana-plugin-plugins-data-public.searchsourcefields.highlight.md) | any | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sessionstate.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sessionstate.md new file mode 100644 index 00000000000000..9a60a5b2a9f9be --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.sessionstate.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SessionState](./kibana-plugin-plugins-data-public.sessionstate.md) + +## SessionState enum + +Possible state that current session can be in + +Signature: + +```typescript +export declare enum SessionState +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| BackgroundCompleted | "backgroundCompleted" | Page load completed with background session created. | +| BackgroundLoading | "backgroundLoading" | Search request was sent to the background. The page is loading in background. | +| Canceled | "canceled" | Current session requests where explicitly canceled by user Displaying none or partial results | +| Completed | "completed" | No action was taken and the page completed loading without background session creation. | +| Loading | "loading" | Pending search request has not been sent to the background yet | +| None | "none" | Session is not active, e.g. didn't start | +| Restored | "restored" | Revisiting the page after background completion | + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md new file mode 100644 index 00000000000000..6fda400d09fd0c --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.exporters.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [exporters](./kibana-plugin-plugins-data-server.exporters.md) + +## exporters variable + +Signature: + +```typescript +exporters: { + datatableToCSV: typeof datatableToCSV; + CSV_MIME_TYPE: string; +} +``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getdefaultsearchparams.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getdefaultsearchparams.md index 3d9191196aaf02..19a4bbbbef86cf 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getdefaultsearchparams.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getdefaultsearchparams.md @@ -7,11 +7,7 @@ Signature: ```typescript -export declare function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient): Promise<{ - maxConcurrentShardRequests: number | undefined; - ignoreUnavailable: boolean; - trackTotalHits: boolean; -}>; +export declare function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient): Promise>; ``` ## Parameters @@ -22,9 +18,5 @@ export declare function getDefaultSearchParams(uiSettingsClient: IUiSettingsClie Returns: -`Promise<{ - maxConcurrentShardRequests: number | undefined; - ignoreUnavailable: boolean; - trackTotalHits: boolean; -}>` +`Promise>` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getshardtimeout.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getshardtimeout.md index d7e2a597ff33d8..87aa32608eb14e 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getshardtimeout.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.getshardtimeout.md @@ -7,11 +7,7 @@ Signature: ```typescript -export declare function getShardTimeout(config: SharedGlobalConfig): { - timeout: string; -} | { - timeout?: undefined; -}; +export declare function getShardTimeout(config: SharedGlobalConfig): Pick; ``` ## Parameters @@ -22,9 +18,5 @@ export declare function getShardTimeout(config: SharedGlobalConfig): { Returns: -`{ - timeout: string; -} | { - timeout?: undefined; -}` +`Pick` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.id.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.id.md deleted file mode 100644 index 8e1d5d01bb6642..00000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsRawSearchResponse](./kibana-plugin-plugins-data-server.iesrawsearchresponse.md) > [id](./kibana-plugin-plugins-data-server.iesrawsearchresponse.id.md) - -## IEsRawSearchResponse.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_partial.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_partial.md deleted file mode 100644 index da2a57a84ab2fd..00000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_partial.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsRawSearchResponse](./kibana-plugin-plugins-data-server.iesrawsearchresponse.md) > [is\_partial](./kibana-plugin-plugins-data-server.iesrawsearchresponse.is_partial.md) - -## IEsRawSearchResponse.is\_partial property - -Signature: - -```typescript -is_partial?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_running.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_running.md deleted file mode 100644 index 78b9e07b77890c..00000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.is_running.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsRawSearchResponse](./kibana-plugin-plugins-data-server.iesrawsearchresponse.md) > [is\_running](./kibana-plugin-plugins-data-server.iesrawsearchresponse.is_running.md) - -## IEsRawSearchResponse.is\_running property - -Signature: - -```typescript -is_running?: boolean; -``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.md deleted file mode 100644 index 306c18dea9b0da..00000000000000 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.iesrawsearchresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IEsRawSearchResponse](./kibana-plugin-plugins-data-server.iesrawsearchresponse.md) - -## IEsRawSearchResponse interface - -Signature: - -```typescript -export interface IEsRawSearchResponse extends SearchResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-plugins-data-server.iesrawsearchresponse.id.md) | string | | -| [is\_partial](./kibana-plugin-plugins-data-server.iesrawsearchresponse.is_partial.md) | boolean | | -| [is\_running](./kibana-plugin-plugins-data-server.iesrawsearchresponse.is_running.md) | boolean | | - diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md index 4bfda565274741..9f580b2e3b48b6 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.deletefieldformat.md @@ -7,5 +7,5 @@ Signature: ```typescript -deleteFieldFormat: (fieldName: string) => void; +readonly deleteFieldFormat: (fieldName: string) => void; ``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md index b1e38258353c35..f98acd766ac339 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md @@ -8,8 +8,6 @@ ```typescript getFieldAttrs: () => { - [x: string]: { - customLabel: string; - }; + [x: string]: FieldAttrSet; }; ``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md index 5103af52f1b435..b2cb217fecaa20 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.md @@ -27,7 +27,7 @@ export declare class IndexPattern implements IIndexPattern | [flattenHit](./kibana-plugin-plugins-data-server.indexpattern.flattenhit.md) | | (hit: Record<string, any>, deep?: boolean) => Record<string, any> | | | [formatField](./kibana-plugin-plugins-data-server.indexpattern.formatfield.md) | | FormatFieldFn | | | [formatHit](./kibana-plugin-plugins-data-server.indexpattern.formathit.md) | | {
(hit: Record<string, any>, type?: string): any;
formatField: FormatFieldFn;
} | | -| [getFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md) | | () => {
[x: string]: {
customLabel: string;
};
} | | +| [getFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.getfieldattrs.md) | | () => {
[x: string]: FieldAttrSet;
} | | | [getOriginalSavedObjectBody](./kibana-plugin-plugins-data-server.indexpattern.getoriginalsavedobjectbody.md) | | () => {
fieldAttrs?: string | undefined;
title?: string | undefined;
timeFieldName?: string | undefined;
intervalName?: string | undefined;
fields?: string | undefined;
sourceFilters?: string | undefined;
fieldFormatMap?: string | undefined;
typeMeta?: string | undefined;
type?: string | undefined;
} | Get last saved saved object fields | | [id](./kibana-plugin-plugins-data-server.indexpattern.id.md) | | string | | | [intervalName](./kibana-plugin-plugins-data-server.indexpattern.intervalname.md) | | string | undefined | | @@ -59,5 +59,8 @@ export declare class IndexPattern implements IIndexPattern | [isTimeBased()](./kibana-plugin-plugins-data-server.indexpattern.istimebased.md) | | | | [isTimeNanosBased()](./kibana-plugin-plugins-data-server.indexpattern.istimenanosbased.md) | | | | [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-server.indexpattern.removescriptedfield.md) | | Remove scripted field from field list | +| [setFieldAttrs(fieldName, attrName, value)](./kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md) | | | +| [setFieldCount(fieldName, count)](./kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md) | | | +| [setFieldCustomLabel(fieldName, customLabel)](./kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md) | | | | [toSpec()](./kibana-plugin-plugins-data-server.indexpattern.tospec.md) | | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md new file mode 100644 index 00000000000000..91da8ee14c2307 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldAttrs](./kibana-plugin-plugins-data-server.indexpattern.setfieldattrs.md) + +## IndexPattern.setFieldAttrs() method + +Signature: + +```typescript +protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| attrName | K | | +| value | FieldAttrSet[K] | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md new file mode 100644 index 00000000000000..f7d6d21c00ef04 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldCount](./kibana-plugin-plugins-data-server.indexpattern.setfieldcount.md) + +## IndexPattern.setFieldCount() method + +Signature: + +```typescript +setFieldCount(fieldName: string, count: number | undefined | null): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| count | number | undefined | null | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md new file mode 100644 index 00000000000000..2c15c3ca4f5521 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [IndexPattern](./kibana-plugin-plugins-data-server.indexpattern.md) > [setFieldCustomLabel](./kibana-plugin-plugins-data-server.indexpattern.setfieldcustomlabel.md) + +## IndexPattern.setFieldCustomLabel() method + +Signature: + +```typescript +setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| fieldName | string | | +| customLabel | string | undefined | null | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md index a8f2e726dd9b31..e6a6b9ea2c0f52 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpattern.setfieldformat.md @@ -7,5 +7,5 @@ Signature: ```typescript -setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; +readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; ``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md index aa78c055f4f5c2..83e912d80dbd1b 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.md @@ -7,13 +7,13 @@ Signature: ```typescript -export declare class IndexPatternsService implements Plugin +export declare class IndexPatternsServiceProvider implements Plugin ``` ## Methods | Method | Modifiers | Description | | --- | --- | --- | -| [setup(core)](./kibana-plugin-plugins-data-server.indexpatternsservice.setup.md) | | | +| [setup(core, { expressions })](./kibana-plugin-plugins-data-server.indexpatternsservice.setup.md) | | | | [start(core, { fieldFormats, logger })](./kibana-plugin-plugins-data-server.indexpatternsservice.start.md) | | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setup.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setup.md index a354fbc2a477bd..6cac0a806d2ecb 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setup.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.indexpatternsservice.setup.md @@ -7,14 +7,15 @@ Signature: ```typescript -setup(core: CoreSetup): void; +setup(core: CoreSetup, { expressions }: IndexPatternsServiceSetupDeps): void; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| core | CoreSetup | | +| core | CoreSetup<DataPluginStartDependencies, DataPluginStart> | | +| { expressions } | IndexPatternsServiceSetupDeps | | Returns: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.asscopedprovider.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.asscopedprovider.md new file mode 100644 index 00000000000000..d52b9b783919b4 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.asscopedprovider.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISessionService](./kibana-plugin-plugins-data-server.isessionservice.md) > [asScopedProvider](./kibana-plugin-plugins-data-server.isessionservice.asscopedprovider.md) + +## ISessionService.asScopedProvider property + +Signature: + +```typescript +asScopedProvider: (core: CoreStart) => (request: KibanaRequest) => IScopedSessionService; +``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.md new file mode 100644 index 00000000000000..dcc7dfc8bb9465 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.isessionservice.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [ISessionService](./kibana-plugin-plugins-data-server.isessionservice.md) + +## ISessionService interface + +Signature: + +```typescript +export interface ISessionService +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [asScopedProvider](./kibana-plugin-plugins-data-server.isessionservice.asscopedprovider.md) | (core: CoreStart) => (request: KibanaRequest) => IScopedSessionService | | + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md index 8957f6d0f06b4c..55504e01b6c9a3 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.md @@ -14,6 +14,7 @@ | [IndexPatternsService](./kibana-plugin-plugins-data-server.indexpatternsservice.md) | | | [OptionedParamType](./kibana-plugin-plugins-data-server.optionedparamtype.md) | | | [Plugin](./kibana-plugin-plugins-data-server.plugin.md) | | +| [SessionService](./kibana-plugin-plugins-data-server.sessionservice.md) | The OSS session service. See data\_enhanced in X-Pack for the background session service. | ## Enumerations @@ -34,6 +35,7 @@ | [getTime(indexPattern, timeRange, options)](./kibana-plugin-plugins-data-server.gettime.md) | | | [parseInterval(interval)](./kibana-plugin-plugins-data-server.parseinterval.md) | | | [plugin(initializerContext)](./kibana-plugin-plugins-data-server.plugin.md) | Static code to be shared externally | +| [searchUsageObserver(logger, usage)](./kibana-plugin-plugins-data-server.searchusageobserver.md) | Rxjs observer for easily doing tap(searchUsageObserver(logger, usage)) in an rxjs chain. | | [shouldReadFieldFromDocValues(aggregatable, esType)](./kibana-plugin-plugins-data-server.shouldreadfieldfromdocvalues.md) | | | [usageProvider(core)](./kibana-plugin-plugins-data-server.usageprovider.md) | | @@ -45,7 +47,6 @@ | [EsQueryConfig](./kibana-plugin-plugins-data-server.esqueryconfig.md) | | | [FieldDescriptor](./kibana-plugin-plugins-data-server.fielddescriptor.md) | | | [FieldFormatConfig](./kibana-plugin-plugins-data-server.fieldformatconfig.md) | | -| [IEsRawSearchResponse](./kibana-plugin-plugins-data-server.iesrawsearchresponse.md) | | | [IEsSearchRequest](./kibana-plugin-plugins-data-server.iessearchrequest.md) | | | [IFieldSubType](./kibana-plugin-plugins-data-server.ifieldsubtype.md) | | | [IFieldType](./kibana-plugin-plugins-data-server.ifieldtype.md) | | @@ -54,6 +55,7 @@ | [ISearchSetup](./kibana-plugin-plugins-data-server.isearchsetup.md) | | | [ISearchStart](./kibana-plugin-plugins-data-server.isearchstart.md) | | | [ISearchStrategy](./kibana-plugin-plugins-data-server.isearchstrategy.md) | Search strategy interface contains a search method that takes in a request and returns a promise that resolves to a response. | +| [ISessionService](./kibana-plugin-plugins-data-server.isessionservice.md) | | | [KueryNode](./kibana-plugin-plugins-data-server.kuerynode.md) | | | [OptionedValueProp](./kibana-plugin-plugins-data-server.optionedvalueprop.md) | | | [PluginSetup](./kibana-plugin-plugins-data-server.pluginsetup.md) | | @@ -76,6 +78,7 @@ | [esFilters](./kibana-plugin-plugins-data-server.esfilters.md) | | | [esKuery](./kibana-plugin-plugins-data-server.eskuery.md) | | | [esQuery](./kibana-plugin-plugins-data-server.esquery.md) | | +| [exporters](./kibana-plugin-plugins-data-server.exporters.md) | | | [fieldFormats](./kibana-plugin-plugins-data-server.fieldformats.md) | | | [indexPatterns](./kibana-plugin-plugins-data-server.indexpatterns.md) | | | [mergeCapabilitiesWithFields](./kibana-plugin-plugins-data-server.mergecapabilitieswithfields.md) | | diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md index 43129891c5412f..b90018c3d9cdd9 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.plugin.setup.md @@ -7,7 +7,7 @@ Signature: ```typescript -setup(core: CoreSetup, { expressions, usageCollection }: DataPluginSetupDependencies): { +setup(core: CoreSetup, { bfetch, expressions, usageCollection }: DataPluginSetupDependencies): { __enhance: (enhancements: DataEnhancements) => void; search: ISearchSetup; fieldFormats: { @@ -21,7 +21,7 @@ setup(core: CoreSetup, { expressio | Parameter | Type | Description | | --- | --- | --- | | core | CoreSetup<DataPluginStartDependencies, DataPluginStart> | | -| { expressions, usageCollection } | DataPluginSetupDependencies | | +| { bfetch, expressions, usageCollection } | DataPluginSetupDependencies | | Returns: diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md index e2a71a7badd4d6..4f8a0beefa421c 100644 --- a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.search.md @@ -8,24 +8,6 @@ ```typescript search: { - esSearch: { - utils: { - doSearch: (searchMethod: () => Promise, abortSignal?: AbortSignal | undefined) => import("rxjs").Observable; - shimAbortSignal: >(promise: T, signal: AbortSignal | undefined) => T; - trackSearchStatus: = import("./search").IEsSearchResponse>>(logger: import("src/core/server").Logger, usage?: import("./search").SearchUsage | undefined) => import("rxjs").UnaryFunction, import("rxjs").Observable>; - includeTotalLoaded: () => import("rxjs").OperatorFunction>, { - total: number; - loaded: number; - id?: string | undefined; - isRunning?: boolean | undefined; - isPartial?: boolean | undefined; - rawResponse: import("elasticsearch").SearchResponse; - }>; - toKibanaSearchResponse: = import("../common").IEsRawSearchResponse, KibanaResponse_1 extends import("../common").IKibanaSearchResponse = import("../common").IKibanaSearchResponse>() => import("rxjs").OperatorFunction, KibanaResponse_1>; - getTotalLoaded: typeof getTotalLoaded; - toSnakeCase: typeof toSnakeCase; - }; - }; aggs: { CidrMask: typeof CidrMask; dateHistogramInterval: typeof dateHistogramInterval; @@ -52,6 +34,7 @@ search: { siblingPipelineType: string; termsAggFilter: string[]; toAbsoluteDates: typeof toAbsoluteDates; + calcAutoIntervalLessThan: typeof calcAutoIntervalLessThan; }; getRequestInspectorStats: typeof getRequestInspectorStats; getResponseInspectorStats: typeof getResponseInspectorStats; diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchusageobserver.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchusageobserver.md new file mode 100644 index 00000000000000..5e03bb381527e0 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.searchusageobserver.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [searchUsageObserver](./kibana-plugin-plugins-data-server.searchusageobserver.md) + +## searchUsageObserver() function + +Rxjs observer for easily doing `tap(searchUsageObserver(logger, usage))` in an rxjs chain. + +Signature: + +```typescript +export declare function searchUsageObserver(logger: Logger, usage?: SearchUsage): { + next(response: IEsSearchResponse): void; + error(): void; +}; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| logger | Logger | | +| usage | SearchUsage | | + +Returns: + +`{ + next(response: IEsSearchResponse): void; + error(): void; +}` + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice._constructor_.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice._constructor_.md new file mode 100644 index 00000000000000..73d658455a66f6 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice._constructor_.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SessionService](./kibana-plugin-plugins-data-server.sessionservice.md) > [(constructor)](./kibana-plugin-plugins-data-server.sessionservice._constructor_.md) + +## SessionService.(constructor) + +Constructs a new instance of the `SessionService` class + +Signature: + +```typescript +constructor(); +``` diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.asscopedprovider.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.asscopedprovider.md new file mode 100644 index 00000000000000..f3af7fb0f61d99 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.asscopedprovider.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SessionService](./kibana-plugin-plugins-data-server.sessionservice.md) > [asScopedProvider](./kibana-plugin-plugins-data-server.sessionservice.asscopedprovider.md) + +## SessionService.asScopedProvider() method + +Signature: + +```typescript +asScopedProvider(core: CoreStart): (request: KibanaRequest) => { + search: , Response_1 extends IKibanaSearchResponse>(strategy: ISearchStrategy, request: Request_1, options: import("../../../common").ISearchOptions, deps: import("../types").SearchStrategyDependencies) => import("rxjs").Observable; + }; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| core | CoreStart | | + +Returns: + +`(request: KibanaRequest) => { + search: , Response_1 extends IKibanaSearchResponse>(strategy: ISearchStrategy, request: Request_1, options: import("../../../common").ISearchOptions, deps: import("../types").SearchStrategyDependencies) => import("rxjs").Observable; + }` + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.md new file mode 100644 index 00000000000000..2369b006445485 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SessionService](./kibana-plugin-plugins-data-server.sessionservice.md) + +## SessionService class + +The OSS session service. See data\_enhanced in X-Pack for the background session service. + +Signature: + +```typescript +export declare class SessionService implements ISessionService +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)()](./kibana-plugin-plugins-data-server.sessionservice._constructor_.md) | | Constructs a new instance of the SessionService class | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [asScopedProvider(core)](./kibana-plugin-plugins-data-server.sessionservice.asscopedprovider.md) | | | +| [search(strategy, args)](./kibana-plugin-plugins-data-server.sessionservice.search.md) | | | + diff --git a/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.search.md b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.search.md new file mode 100644 index 00000000000000..8f8620a6ed5ee9 --- /dev/null +++ b/docs/development/plugins/data/server/kibana-plugin-plugins-data-server.sessionservice.search.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-server](./kibana-plugin-plugins-data-server.md) > [SessionService](./kibana-plugin-plugins-data-server.sessionservice.md) > [search](./kibana-plugin-plugins-data-server.sessionservice.search.md) + +## SessionService.search() method + +Signature: + +```typescript +search(strategy: ISearchStrategy, ...args: Parameters['search']>): import("rxjs").Observable; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| strategy | ISearchStrategy<Request, Response> | | +| args | Parameters<ISearchStrategy<Request, Response>['search']> | | + +Returns: + +`import("rxjs").Observable` + diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md new file mode 100644 index 00000000000000..a731d08a0d6944 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-public.executioncontext.md) > [getKibanaRequest](./kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md) + +## ExecutionContext.getKibanaRequest property + +Getter to retrieve the `KibanaRequest` object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. + +Signature: + +```typescript +getKibanaRequest?: () => KibanaRequest; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md index 86d24534f7a448..1c0d10a382abf0 100644 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.executioncontext.md @@ -17,6 +17,7 @@ export interface ExecutionContextAbortSignal | Adds ability to abort current execution. | +| [getKibanaRequest](./kibana-plugin-plugins-expressions-public.executioncontext.getkibanarequest.md) | () => KibanaRequest | Getter to retrieve the KibanaRequest object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. | | [getSavedObject](./kibana-plugin-plugins-expressions-public.executioncontext.getsavedobject.md) | <T extends SavedObjectAttributes = SavedObjectAttributes>(type: string, id: string) => Promise<SavedObject<T>> | Allows to fetch saved objects from ElasticSearch. In browser getSavedObject function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. | | [getSearchContext](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchcontext.md) | () => ExecutionContextSearch | Get search context of the expression. | | [getSearchSessionId](./kibana-plugin-plugins-expressions-public.executioncontext.getsearchsessionid.md) | () => string | undefined | Search context in which expression should operate. | diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md index fb6ba7ee2621ce..fcccd3f6b96181 100644 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md @@ -9,7 +9,7 @@ Constructs a new instance of the `ExpressionRenderHandler` class Signature: ```typescript -constructor(element: HTMLElement, { onRenderError }?: Partial); +constructor(element: HTMLElement, { onRenderError, renderMode }?: Partial); ``` ## Parameters @@ -17,5 +17,5 @@ constructor(element: HTMLElement, { onRenderError }?: PartialHTMLElement | | -| { onRenderError } | Partial<ExpressionRenderHandlerParams> | | +| { onRenderError, renderMode } | Partial<ExpressionRenderHandlerParams> | | diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md index 7f7d5792ba684d..12c663273bd8c9 100644 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.expressionrenderhandler.md @@ -14,7 +14,7 @@ export declare class ExpressionRenderHandler | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)(element, { onRenderError })](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) | | Constructs a new instance of the ExpressionRenderHandler class | +| [(constructor)(element, { onRenderError, renderMode })](./kibana-plugin-plugins-expressions-public.expressionrenderhandler._constructor_.md) | | Constructs a new instance of the ExpressionRenderHandler class | ## Properties diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md index 2dfc67d2af5fa1..54eecad0deb506 100644 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md @@ -21,6 +21,7 @@ export interface IExpressionLoaderParams | [disableCaching](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.disablecaching.md) | boolean | | | [inspectorAdapters](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.inspectoradapters.md) | Adapters | | | [onRenderError](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.onrendererror.md) | RenderErrorHandlerFnType | | +| [renderMode](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md) | RenderMode | | | [searchContext](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchcontext.md) | SerializableState | | | [searchSessionId](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.searchsessionid.md) | string | | | [uiState](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.uistate.md) | unknown | | diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md new file mode 100644 index 00000000000000..2986b81fc67c53 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IExpressionLoaderParams](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.md) > [renderMode](./kibana-plugin-plugins-expressions-public.iexpressionloaderparams.rendermode.md) + +## IExpressionLoaderParams.renderMode property + +Signature: + +```typescript +renderMode?: RenderMode; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md new file mode 100644 index 00000000000000..8cddec1a5359c7 --- /dev/null +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-public](./kibana-plugin-plugins-expressions-public.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md) > [getRenderMode](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md) + +## IInterpreterRenderHandlers.getRenderMode property + +Signature: + +```typescript +getRenderMode: () => RenderMode; +``` diff --git a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md index ab0273be714022..a65e025451636b 100644 --- a/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md +++ b/docs/development/plugins/expressions/public/kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.md @@ -16,6 +16,7 @@ export interface IInterpreterRenderHandlers | --- | --- | --- | | [done](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | | [event](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.event.md) | (event: any) => void | | +| [getRenderMode](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.getrendermode.md) | () => RenderMode | | | [onDestroy](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | | [reload](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.reload.md) | () => void | | | [uiState](./kibana-plugin-plugins-expressions-public.iinterpreterrenderhandlers.uistate.md) | PersistedState | | diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md new file mode 100644 index 00000000000000..203794a9d0302d --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExecutionContext](./kibana-plugin-plugins-expressions-server.executioncontext.md) > [getKibanaRequest](./kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md) + +## ExecutionContext.getKibanaRequest property + +Getter to retrieve the `KibanaRequest` object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. + +Signature: + +```typescript +getKibanaRequest?: () => KibanaRequest; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md index e2547cc9470d15..fbf9dc634d5635 100644 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.executioncontext.md @@ -17,6 +17,7 @@ export interface ExecutionContextAbortSignal | Adds ability to abort current execution. | +| [getKibanaRequest](./kibana-plugin-plugins-expressions-server.executioncontext.getkibanarequest.md) | () => KibanaRequest | Getter to retrieve the KibanaRequest object inside an expression function. Useful for functions which are running on the server and need to perform operations that are scoped to a specific user. | | [getSavedObject](./kibana-plugin-plugins-expressions-server.executioncontext.getsavedobject.md) | <T extends SavedObjectAttributes = SavedObjectAttributes>(type: string, id: string) => Promise<SavedObject<T>> | Allows to fetch saved objects from ElasticSearch. In browser getSavedObject function is provided automatically by the Expressions plugin. On the server the caller of the expression has to provide this context function. The reason is because on the browser we always know the user who tries to fetch a saved object, thus saved object client is scoped automatically to that user. However, on the server we can scope that saved object client to any user, or even not scope it at all and execute it as an "internal" user. | | [getSearchContext](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchcontext.md) | () => ExecutionContextSearch | Get search context of the expression. | | [getSearchSessionId](./kibana-plugin-plugins-expressions-server.executioncontext.getsearchsessionid.md) | () => string | undefined | Search context in which expression should operate. | diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md new file mode 100644 index 00000000000000..16db25ab244f69 --- /dev/null +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [IInterpreterRenderHandlers](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md) > [getRenderMode](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md) + +## IInterpreterRenderHandlers.getRenderMode property + +Signature: + +```typescript +getRenderMode: () => RenderMode; +``` diff --git a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md index ccf6271f712b94..b1496386944fa0 100644 --- a/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md +++ b/docs/development/plugins/expressions/server/kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.md @@ -16,6 +16,7 @@ export interface IInterpreterRenderHandlers | --- | --- | --- | | [done](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.done.md) | () => void | Done increments the number of rendering successes | | [event](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.event.md) | (event: any) => void | | +| [getRenderMode](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.getrendermode.md) | () => RenderMode | | | [onDestroy](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.ondestroy.md) | (fn: () => void) => void | | | [reload](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.reload.md) | () => void | | | [uiState](./kibana-plugin-plugins-expressions-server.iinterpreterrenderhandlers.uistate.md) | PersistedState | | diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md index 5a1ab83551d346..fd6ade88479afc 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md @@ -11,5 +11,5 @@ Signature: ```typescript -readonly addTriggerAction: (triggerId: T, action: ActionDefinition | Action) => void; +readonly addTriggerAction: (triggerId: T, action: ActionDefinition | Action) => void; ``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md index 5b0b3eea01cb11..d540de76374413 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md @@ -7,5 +7,5 @@ Signature: ```typescript -readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">; +readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">; ``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md index 2dda422046318c..0a9b674a45de28 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md @@ -7,5 +7,5 @@ Signature: ```typescript -readonly getTriggerActions: (triggerId: T) => Action[]; +readonly getTriggerActions: (triggerId: T) => Action[]; ``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md index e087753726a8ae..faed81236342d4 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md @@ -7,5 +7,5 @@ Signature: ```typescript -readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; +readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; ``` diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md index f9eb693b492f70..e3c5dbb92ae904 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.md @@ -21,19 +21,19 @@ export declare class UiActionsService | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [actions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.actions.md) | | ActionRegistry | | -| [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, action: ActionDefinition<TriggerContextMapping[T]> | Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">) => void | addTriggerAction is similar to attachAction as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet.addTriggerAction also infers better typing of the action argument. | +| [addTriggerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.addtriggeraction.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, action: ActionDefinition<TriggerContextMapping[T]> | Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">) => void | addTriggerAction is similar to attachAction as it attaches action to a trigger, but it also registers the action, if it has not been registered, yet.addTriggerAction also infers better typing of the action argument. | | [attachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.attachaction.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, actionId: string) => void | | | [clear](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.clear.md) | | () => void | Removes all registered triggers and actions. | | [detachAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.detachaction.md) | | (triggerId: TriggerId, actionId: string) => void | | | [executeTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executetriggeractions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, context: TriggerContext<T>) => Promise<void> | | | [executionService](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.executionservice.md) | | UiActionsExecutionService | | | [fork](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.fork.md) | | () => UiActionsService | "Fork" a separate instance of UiActionsService that inherits all existing triggers and actions, but going forward all new triggers and actions added to this instance of UiActionsService are only available within this instance. | -| [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) | | <T extends ActionDefinition<{}>>(id: string) => Action<ActionContext<T>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION"> | | +| [getAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.getaction.md) | | <T extends ActionDefinition<{}>>(id: string) => Action<ActionContext<T>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV"> | | | [getTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettrigger.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T) => TriggerContract<T> | | -| [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T) => Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">[] | | -| [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, context: TriggerContextMapping[T]) => Promise<Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">[]> | | +| [getTriggerActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggeractions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T) => Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">[] | | +| [getTriggerCompatibleActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.gettriggercompatibleactions.md) | | <T extends "" | "SELECT_RANGE_TRIGGER" | "VALUE_CLICK_TRIGGER" | "FILTER_TRIGGER" | "VISUALIZE_FIELD_TRIGGER" | "VISUALIZE_GEO_FIELD_TRIGGER" | "CONTEXT_MENU_TRIGGER" | "PANEL_BADGE_TRIGGER" | "PANEL_NOTIFICATION_TRIGGER">(triggerId: T, context: TriggerContextMapping[T]) => Promise<Action<TriggerContextMapping[T], "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">[]> | | | [hasAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.hasaction.md) | | (actionId: string) => boolean | | -| [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) | | <A extends ActionDefinition<{}>>(definition: A) => Action<ActionContext<A>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION"> | | +| [registerAction](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md) | | <A extends ActionDefinition<{}>>(definition: A) => Action<ActionContext<A>, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV"> | | | [registerTrigger](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.registertrigger.md) | | (trigger: Trigger) => void | | | [triggers](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggers.md) | | TriggerRegistry | | | [triggerToActions](./kibana-plugin-plugins-ui_actions-public.uiactionsservice.triggertoactions.md) | | TriggerToActionsRegistry | | diff --git a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md index bd340eb76fbac2..6f03777e14552a 100644 --- a/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md +++ b/docs/development/plugins/ui_actions/public/kibana-plugin-plugins-ui_actions-public.uiactionsservice.registeraction.md @@ -7,5 +7,5 @@ Signature: ```typescript -readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">; +readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">; ``` diff --git a/docs/fleet/fleet.asciidoc b/docs/fleet/fleet.asciidoc index 06b2b96c0035c4..aac733ad8468c8 100644 --- a/docs/fleet/fleet.asciidoc +++ b/docs/fleet/fleet.asciidoc @@ -17,8 +17,6 @@ Standalone mode requires you to manually configure and manage the agent locally. * An overview of the data ingest in your {es} cluster. * Multiple integrations to collect and transform data. -//TODO: Redo screen capture. - [role="screenshot"] image::fleet/images/fleet-start.png[{fleet} app in {kib}] @@ -26,4 +24,4 @@ image::fleet/images/fleet-start.png[{fleet} app in {kib}] == Get started To get started with {fleet}, refer to the -{ingest-guide}/index.html[Ingest Management Guide]. +{ingest-guide}/index.html[{fleet}] docs. diff --git a/docs/management/alerting/alert-details.asciidoc b/docs/management/alerting/alert-details.asciidoc index b108f79fe5bad4..0510b90272f905 100644 --- a/docs/management/alerting/alert-details.asciidoc +++ b/docs/management/alerting/alert-details.asciidoc @@ -2,7 +2,6 @@ [[alert-details]] === Alert details -beta[] The *Alert details* page tells you about the state of the alert and provides granular control over the actions it is taking. diff --git a/docs/management/alerting/alert-management.asciidoc b/docs/management/alerting/alert-management.asciidoc index f348812550978e..b4a5c3bc1931fc 100644 --- a/docs/management/alerting/alert-management.asciidoc +++ b/docs/management/alerting/alert-management.asciidoc @@ -2,7 +2,6 @@ [[alert-management]] === Managing Alerts -beta[] The *Alerts* tab provides a cross-app view of alerting. Different {kib} apps like <>, <>, <>, and <> can offer their own alerts, and the *Alerts* tab provides a central place to: diff --git a/docs/management/alerting/alerts-and-actions-intro.asciidoc b/docs/management/alerting/alerts-and-actions-intro.asciidoc index 35a2452e999513..2352cb99bf543f 100644 --- a/docs/management/alerting/alerts-and-actions-intro.asciidoc +++ b/docs/management/alerting/alerts-and-actions-intro.asciidoc @@ -2,7 +2,6 @@ [[managing-alerts-and-actions]] == Alerts and Actions -beta[] The *Alerts and Actions* UI lets you <> in a space, and provides tools to <> so that alerts can trigger actions like notification, indexing, and ticketing. diff --git a/docs/redirects.asciidoc b/docs/redirects.asciidoc index ccad3670d3d27d..931a783654a911 100644 --- a/docs/redirects.asciidoc +++ b/docs/redirects.asciidoc @@ -153,13 +153,11 @@ This content has moved. See {ref}/index-mgmt.html[Index management]. This content has moved. See <>. - [role="exclude",id="document-context"] == View a document in context This content has moved. See <>. - [role="exclude",id="document-data"] == View document data @@ -169,3 +167,34 @@ This content has moved. See <>. == View field data statistics This content has moved. See <>. + +[role="exclude",id="lens"] +== Lens + +This content has moved. See <>. + +[role="exclude",id="known-plugins"] +== Known plugins + +This content has moved. See <>. + +[role="exclude",id="url-drilldown"] +== URL drilldown + +[float] +[[trigger-picker]] +=== Picking a trigger for a URL drilldown + +This page has moved. Refer to <>. + +[float] +[[templating]] +=== URL templating + +This page has moved. Refer to <>. + +[float] +[[variables]] +=== Variables + +This page has moved. Refer to <>. diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 13c1d20552fa15..fa44d3a6ae41b1 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -9,7 +9,7 @@ Alerts and actions are enabled by default in {kib}, but require you configure th . <>. . <>. -. <>. +. If you are using an *on-premises* Elastic Stack deployment, <>. You can configure the following settings in the `kibana.yml` file. @@ -27,6 +27,7 @@ You can configure the following settings in the `kibana.yml` file. If not set, {kib} will generate a random key on startup, but all alert and action functions will be blocked. Generated keys are not allowed for alerts and actions because when a new key is generated on restart, existing encrypted data becomes inaccessible. For the same reason, alerts and actions in high-availability deployments of {kib} will behave unexpectedly if the key isn't the same on all instances of {kib}. + + Although the key can be specified in clear text in `kibana.yml`, it's recommended to store this key securely in the <>. + Be sure to back up the encryption key value somewhere safe, as your alerts and actions will cease to function due to decryption failures should you lose it. If you want to rotate the encryption key, be sure to follow the instructions on <>. |=== diff --git a/docs/settings/fleet-settings.asciidoc b/docs/settings/fleet-settings.asciidoc index 9c28d280031759..abfd2d3a95bede 100644 --- a/docs/settings/fleet-settings.asciidoc +++ b/docs/settings/fleet-settings.asciidoc @@ -10,7 +10,7 @@ experimental[] You can configure `xpack.fleet` settings in your `kibana.yml`. By default, {fleet} is enabled. To use {fleet}, you also need to configure {kib} and {es} hosts. -See the {ingest-guide}/index.html[Ingest Management] docs for more information. +See the {ingest-guide}/index.html[{fleet}] docs for more information. [[general-fleet-settings-kb]] ==== General {fleet} settings diff --git a/docs/settings/reporting-settings.asciidoc b/docs/settings/reporting-settings.asciidoc index d44c42db92f41d..2d91eb07c5236c 100644 --- a/docs/settings/reporting-settings.asciidoc +++ b/docs/settings/reporting-settings.asciidoc @@ -261,7 +261,9 @@ For information about {kib} memory limits, see <> setting. Defaults to `.reporting`. diff --git a/docs/settings/security-settings.asciidoc b/docs/settings/security-settings.asciidoc index 12043ead28d555..aaed08664b5bfa 100644 --- a/docs/settings/security-settings.asciidoc +++ b/docs/settings/security-settings.asciidoc @@ -162,6 +162,51 @@ In addition to <>, you can specify the following settings: + +[NOTE] +============ +You can configure only one anonymous provider per {kib} instance. +============ + +[cols="2*<"] +|=== +| `xpack.security.authc.providers.` +`anonymous..credentials` {ess-icon} +| Credentials that {kib} should use internally to authenticate anonymous requests to {es}. Possible values are: username and password, API key, or the constant `elasticsearch_anonymous_user` if you want to leverage {ref}/anonymous-access.html[{es} anonymous access]. + +2+a| For example: + +[source,yaml] +---------------------------------------- +# Username and password credentials +xpack.security.authc.providers.anonymous.anonymous1: + credentials: + username: "anonymous_service_account" + password: "anonymous_service_account_password" + +# API key (concatenated and base64-encoded) +xpack.security.authc.providers.anonymous.anonymous1: + credentials: + apiKey: "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" + +# API key (as returned from Elasticsearch API) +xpack.security.authc.providers.anonymous.anonymous1: + credentials: + apiKey.id: "VuaCfGcBCdbkQm-e5aOx" + apiKey.key: "ui2lp2axTNmsyakw9tvNnw" + +# Elasticsearch anonymous access +xpack.security.authc.providers.anonymous.anonymous1: + credentials: "elasticsearch_anonymous_user" +---------------------------------------- + +|=== + [float] [[http-authentication-settings]] ===== HTTP authentication settings diff --git a/docs/settings/spaces-settings.asciidoc b/docs/settings/spaces-settings.asciidoc index bda5f00f762cdc..3b643f76f0c09d 100644 --- a/docs/settings/spaces-settings.asciidoc +++ b/docs/settings/spaces-settings.asciidoc @@ -16,6 +16,7 @@ roles when Security is enabled. |=== | `xpack.spaces.enabled` | Set to `true` (default) to enable Spaces in {kib}. + This setting is deprecated. Starting in 8.0, it will not be possible to disable this plugin. | `xpack.spaces.maxSpaces` | The maximum amount of Spaces that can be used with this instance of {kib}. Some operations diff --git a/docs/setup/settings.asciidoc b/docs/setup/settings.asciidoc index efc7a1b9309326..ed6bc9b1f55b6a 100644 --- a/docs/setup/settings.asciidoc +++ b/docs/setup/settings.asciidoc @@ -214,10 +214,12 @@ Please use the `defaultRoute` advanced setting instead. The default application to load. *Default: `"home"`* |[[kibana-index]] `kibana.index:` - | {kib} uses an index in {es} to store saved searches, visualizations, and + | *deprecated* This setting is deprecated and will be removed in 8.0. Multitenancy by changing +`kibana.index` will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy[8.0 Breaking Changes] +for more details. {kib} uses an index in {es} to store saved searches, visualizations, and dashboards. {kib} creates a new index if the index doesn’t already exist. If you configure a custom index, the name must be lowercase, and conform to the -{es} {ref}/indices-create-index.html[index name limitations]. +{es} {ref}/indices-create-index.html[index name limitations]. *Default: `".kibana"`* | `kibana.autocompleteTimeout:` {ess-icon} @@ -440,6 +442,11 @@ running behind a proxy. Use the <> (if configured). This setting cannot end in a slash (`/`). + | [[server-compression]] `server.compression.enabled:` | Set to `false` to disable HTTP compression for all responses. *Default: `true`* @@ -573,10 +580,10 @@ all http requests to https over the port configured as <> setting requires the following format: +The <> setting requires the following format: |=== diff --git a/docs/user/alerting/alerting-getting-started.asciidoc b/docs/user/alerting/alerting-getting-started.asciidoc index 53aef4aaa062ed..4eeecad0793486 100644 --- a/docs/user/alerting/alerting-getting-started.asciidoc +++ b/docs/user/alerting/alerting-getting-started.asciidoc @@ -2,7 +2,6 @@ [[alerting-getting-started]] = Alerting and Actions -beta[] -- diff --git a/docs/user/alerting/defining-alerts.asciidoc b/docs/user/alerting/defining-alerts.asciidoc index 05d022d039b23a..667038739d45ff 100644 --- a/docs/user/alerting/defining-alerts.asciidoc +++ b/docs/user/alerting/defining-alerts.asciidoc @@ -89,6 +89,8 @@ Here's a list of the available global configuration options and an explanation o * `xpack.actions.proxyRejectUnauthorizedCertificates`: Set to `false` to bypass certificate validation for proxy, if using a proxy for actions. * `xpack.actions.rejectUnauthorized`: Set to `false` to bypass certificate validation for actions. +*NOTE:* As an alternative to both `xpack.actions.proxyRejectUnauthorizedCertificates` and `xpack.actions.rejectUnauthorized`, the OS level environment variable `NODE_EXTRA_CA_CERTS` can be set to point to a file that contains the root CA(s) needed for certificates to be trusted. + [float] === Managing alerts diff --git a/docs/user/dashboard/dashboard.asciidoc b/docs/user/dashboard/dashboard.asciidoc index 5fda1af55c7fe7..23d80f100b4b4a 100644 --- a/docs/user/dashboard/dashboard.asciidoc +++ b/docs/user/dashboard/dashboard.asciidoc @@ -185,7 +185,7 @@ image:images/Dashboard_add_new_visualization.png[Example add new visualization t {kib} provides you with several editors that help you create panels. [float] -[[lens]] +[[create-panels-with-lens]] === Create panels with Lens *Lens* is the simplest and fastest way to create powerful visualizations of your data. To use *Lens*, you drag and drop as many data fields diff --git a/docs/user/dashboard/download-underlying-data.asciidoc b/docs/user/dashboard/download-underlying-data.asciidoc new file mode 100644 index 00000000000000..78403ba797d780 --- /dev/null +++ b/docs/user/dashboard/download-underlying-data.asciidoc @@ -0,0 +1,15 @@ +[float] +[role="xpack"] +[[download_csv]] +=== Download CSV + +To download the underlying data of the Lens panels on your dashboard, you can use the *Download as CSV* option. + +TIP: The *Download as CSV* option supports multiple CSV file downloads from the same Lens visualization out of the box, if configured: for instance with multiple layers on a bar chart. + +To use the *Download as CSV* option: + +* Click the from the panel menu, then click *Download as CSV*. ++ +[role="screenshot"] +image::images/download_csv_context_menu.png[Download as CSV from panel context menu] \ No newline at end of file diff --git a/docs/user/dashboard/drilldowns.asciidoc b/docs/user/dashboard/drilldowns.asciidoc index 1b9896d7dea565..ff2c321f667c82 100644 --- a/docs/user/dashboard/drilldowns.asciidoc +++ b/docs/user/dashboard/drilldowns.asciidoc @@ -21,7 +21,7 @@ refer https://www.elastic.co/subscriptions[the subscription page]. ============================================== [float] -[[dashboard-drilldown]] +[[dashboard-drilldowns]] ==== Dashboard drilldowns Dashboard drilldowns enable you to open a dashboard from another dashboard, @@ -33,7 +33,7 @@ you can create a drilldown that navigates from the overall status dashboard to a that shows a single data center or server. [float] -[[url-drilldown]] +[[url-drilldowns]] ==== URL drilldowns beta[] URL drilldowns enable you to navigate from a dashboard to internal or external URLs. @@ -41,8 +41,8 @@ Destination URLs can be dynamic, depending on the dashboard context or user inte For example, if you have a dashboard that shows data from a Github repository, you can create a URL drilldown that opens Github from the dashboard. -Some panels support multiple interactions, also known as triggers. -The <> you use to create a <> depends on the trigger you choose. URL drilldowns support these types of triggers: +Some panels support multiple interactions, also known as triggers. +The <> you use to create a <> depends on the trigger you choose. URL drilldowns support these types of triggers: * *Single click* — A single data point in the visualization. diff --git a/docs/user/dashboard/explore-dashboard-data.asciidoc b/docs/user/dashboard/explore-dashboard-data.asciidoc index 238dfb79e900b6..66f91dc2bc18c5 100644 --- a/docs/user/dashboard/explore-dashboard-data.asciidoc +++ b/docs/user/dashboard/explore-dashboard-data.asciidoc @@ -16,3 +16,4 @@ The data that displays depends on the element that you inspect. image:images/Dashboard_inspect.png[Inspect in dashboard] include::explore-underlying-data.asciidoc[] +include::download-underlying-data.asciidoc[] diff --git a/docs/user/dashboard/images/download_csv_context_menu.png b/docs/user/dashboard/images/download_csv_context_menu.png new file mode 100644 index 00000000000000..09f82b78124957 Binary files /dev/null and b/docs/user/dashboard/images/download_csv_context_menu.png differ diff --git a/docs/user/dashboard/tutorials.asciidoc b/docs/user/dashboard/tutorials.asciidoc index b04de5fd0da6f2..d3abb849af819a 100644 --- a/docs/user/dashboard/tutorials.asciidoc +++ b/docs/user/dashboard/tutorials.asciidoc @@ -76,8 +76,6 @@ Now that you've created your *Lens* visualization, add it to a <> set. @@ -98,7 +96,7 @@ line chart which shows the total number of documents across all your indices within the time range. [role="screenshot"] -image::visualize/images/vega_lite_default.png[] +image::visualize/images/vega_lite_default.png[Vega-Lite tutorial default visualization] The text editor contains a Vega-Lite spec written in https://hjson.github.io/[HJSON], which is similar to JSON but optimized for human editing. HJSON supports: @@ -134,7 +132,7 @@ Click "Update". The result is probably not what you expect. You should see a fla line with 0 results. You've only changed the index, so the difference must be the query is returning -no results. You can try the <>, +no results. You can try the <>, but intuition may be faster for this particular problem. In this case, the problem is that you are querying the field `@timestamp`, @@ -332,38 +330,29 @@ your spec: If you copy and paste that into your Vega-Lite spec, and click "Update", you will see a warning saying `Infinite extent for field "key": [Infinity, -Infinity]`. -Let's use our <> to understand why. +Let's use our <> to understand why. Vega-Lite generates data using the names `source_0` and `data_0`. `source_0` contains the results from the {es} query, and `data_0` contains the visually encoded results which are shown in the chart. To debug this problem, you need to compare both. -To look at the source, open the browser dev tools console and type -`VEGA_DEBUG.view.data('source_0')`. You will see: +To inspect data sets, go to *Inspect* and select *View: Vega debug*. You will see a menu with different data sources: -```js -[{ - doc_count: 454 - key: "Men's Clothing" - time_buckets: {buckets: Array(57)} - Symbol(vega_id): 12822 -}, ...] -``` +[role="screenshot"] +image::visualize/images/vega_lite_tutorial_3.png[Data set selector showing root, source_0, data_0, and marks] -To compare to the visually encoded data, open the browser dev tools console and type -`VEGA_DEBUG.view.data('data_0')`. You will see: +To look closer at the raw data in Vega, select the option for `source_0` in the dropdown: -```js -[{ - doc_count: 454 - key: NaN - time_buckets: {buckets: Array(57)} - Symbol(vega_id): 13879 -}] -``` +[role="screenshot"] +image::visualize/images/vega_lite_tutorial_4.png[Table for data_0 with columns key, doc_count and array of time_buckets] + +To compare to the visually encoded data, change the dropdown selection to `data_0`. You will see: + +[role="screenshot"] +image::visualize/images/vega_lite_tutorial_5.png[Table for data_0 where the key is NaN instead of a string] The issue seems to be that the `key` property is not being converted the right way, -which makes sense because the `key` is now `Men's Clothing` instead of a timestamp. +which makes sense because the `key` is now category (`Men's Clothing`, `Women's Clothing`, etc.) instead of a timestamp. To fix this, try updating the `encoding` of your Vega-Lite spec to: @@ -382,21 +371,13 @@ To fix this, try updating the `encoding` of your Vega-Lite spec to: } ``` -This will show more errors, and you can inspect `VEGA_DEBUG.view.data('data_0')` to +This will show more errors, so you need to debug. Click *Inspect*, switch the view to *Vega Debug*, and switch to look at the visually encoded data in `data_0` to understand why. This now shows: -```js -[{ - doc_count: 454 - key: "Men's Clothing" - time_buckets: {buckets: Array(57)} - time_buckets.buckets.doc_count: undefined - time_buckets.buckets.key: null - Symbol(vega_id): 14094 -}] -``` +[role="screenshot"] +image::visualize/images/vega_lite_tutorial_6.png[Table for data_0 showing that the column time_buckets.buckets.key is undefined] -It looks like the problem is that the `time_buckets` inner array is not being +It looks like the problem is that the `time_buckets.buckets` inner array is not being extracted by Vega. The solution is to use a Vega-lite https://vega.github.io/vega-lite/docs/flatten.html[flatten transformation], available in {kib} 7.9 and later. If using an older version of Kibana, the flatten transformation is available in Vega @@ -411,23 +392,10 @@ Add this section in between the `data` and `encoding` section: ``` This does not yet produce the results you expect. Inspect the transformed data -by typing `VEGA_DEBUG.view.data('data_0')` into the console again: +by selecting `data_0` in *Data sets* again: -```js -[{ - doc_count: 453 - key: "Men's Clothing" - time_bucket.buckets.doc_count: undefined - time_buckets: {buckets: Array(57)} - time_buckets.buckets: { - key_as_string: "2020-06-30T15:00:00.000Z", - key: 1593529200000, - doc_count: 2 - } - time_buckets.buckets.key: null - Symbol(vega_id): 21564 -}] -``` +[role="screenshot"] +image::visualize/images/vega_lite_tutorial_7.png[Table showing data_0 with multiple pages of results, but undefined values in the column time_buckets.buckets.key] The debug view shows `undefined` values where you would expect to see numbers, and the cause is that there are duplicate names which are confusing Vega-Lite. This can @@ -564,7 +532,9 @@ Now that you've enabled a selection, try moving the mouse around the visualizati and seeing the points respond to the nearest position: [role="screenshot"] -image::visualize/images/vega_lite_tutorial_2.png[] +image::visualize/images/vega_lite_tutorial_2.png[Vega-Lite tutorial selection enabled] + +The selection is controlled by a Vega signal, and can be viewed using the <>. The final result of this tutorial is this spec: @@ -683,8 +653,6 @@ The final result of this tutorial is this spec: [[vega-tutorial-update-kibana-filters-from-vega]] === Update {kib} filters from Vega -experimental[] - In this tutorial you will build an area chart in Vega using an {es} search query, and add a click handler and drag handler to update {kib} filters. This tutorial is not a full https://vega.github.io/vega/tutorials/[Vega tutorial], @@ -935,6 +903,7 @@ The first step is to add a new `signal` to track the X position of the cursor: }] } ``` +To learn more about inspecting signals, explore the <>. Now add a new `mark` to indicate the current cursor position: @@ -1756,4 +1725,4 @@ Customize and format the visualization using functions: image::images/timelion-conditional04.png[] {nbsp} -For additional information on Timelion conditional capabilities, go to https://www.elastic.co/blog/timeseries-if-then-else-with-timelion[I have but one .condition()]. \ No newline at end of file +For additional information on Timelion conditional capabilities, go to https://www.elastic.co/blog/timeseries-if-then-else-with-timelion[I have but one .condition()]. diff --git a/docs/user/dashboard/url-drilldown.asciidoc b/docs/user/dashboard/url-drilldown.asciidoc index cf92016e23f19d..617fae938f8f50 100644 --- a/docs/user/dashboard/url-drilldown.asciidoc +++ b/docs/user/dashboard/url-drilldown.asciidoc @@ -1,4 +1,4 @@ -[[url_templating]] +[[url_templating-language]] === URL templating beta[] @@ -137,7 +137,7 @@ Example: [float] -[[variables]] +[[url-template-variables]] ==== URL template variables The URL drilldown template has three sources for variables: diff --git a/docs/user/plugins.asciidoc b/docs/user/plugins.asciidoc index fa9e7d0c513b57..0ef5d1a237510d 100644 --- a/docs/user/plugins.asciidoc +++ b/docs/user/plugins.asciidoc @@ -14,7 +14,7 @@ Plugin developers must release a new version of their plugin for each new {kib} ============================================== [float] -[[known-plugins]] +[[known-kibana-plugins]] == Known plugins The known plugins were tested for {kib} *5.x*, so we are unable to guarantee compatibility with your version of {kib}. The {kib} installer rejects any plugins that haven't been published for your specific version of {kib}. diff --git a/docs/user/security/audit-logging.asciidoc b/docs/user/security/audit-logging.asciidoc index bacd93f585adcf..4b3512ae3056b5 100644 --- a/docs/user/security/audit-logging.asciidoc +++ b/docs/user/security/audit-logging.asciidoc @@ -84,6 +84,14 @@ Refer to the corresponding {es} logs for potential write errors. | `unknown` | User is creating a saved object. | `failure` | User is not authorized to create a saved object. +.2+| `connector_create` +| `unknown` | User is creating a connector. +| `failure` | User is not authorized to create a connector. + +.2+| `alert_create` +| `unknown` | User is creating an alert rule. +| `failure` | User is not authorized to create an alert rule. + 3+a| ====== Type: change @@ -108,6 +116,42 @@ Refer to the corresponding {es} logs for potential write errors. | `unknown` | User is removing references to a saved object. | `failure` | User is not authorized to remove references to a saved object. +.2+| `connector_update` +| `unknown` | User is updating a connector. +| `failure` | User is not authorized to update a connector. + +.2+| `alert_update` +| `unknown` | User is updating an alert rule. +| `failure` | User is not authorized to update an alert rule. + +.2+| `alert_update_api_key` +| `unknown` | User is updating the API key of an alert rule. +| `failure` | User is not authorized to update the API key of an alert rule. + +.2+| `alert_enable` +| `unknown` | User is enabling an alert rule. +| `failure` | User is not authorized to enable an alert rule. + +.2+| `alert_disable` +| `unknown` | User is disabling an alert rule. +| `failure` | User is not authorized to disable an alert rule. + +.2+| `alert_mute` +| `unknown` | User is muting an alert rule. +| `failure` | User is not authorized to mute an alert rule. + +.2+| `alert_unmute` +| `unknown` | User is unmuting an alert rule. +| `failure` | User is not authorized to unmute an alert rule. + +.2+| `alert_instance_mute` +| `unknown` | User is muting an alert instance. +| `failure` | User is not authorized to mute an alert instance. + +.2+| `alert_instance_unmute` +| `unknown` | User is unmuting an alert instance. +| `failure` | User is not authorized to unmute an alert instance. + 3+a| ====== Type: deletion @@ -120,6 +164,14 @@ Refer to the corresponding {es} logs for potential write errors. | `unknown` | User is deleting a saved object. | `failure` | User is not authorized to delete a saved object. +.2+| `connector_delete` +| `unknown` | User is deleting a connector. +| `failure` | User is not authorized to delete a connector. + +.2+| `alert_delete` +| `unknown` | User is deleting an alert rule. +| `failure` | User is not authorized to delete an alert rule. + 3+a| ====== Type: access @@ -135,6 +187,22 @@ Refer to the corresponding {es} logs for potential write errors. | `success` | User has accessed a saved object as part of a search operation. | `failure` | User is not authorized to search for saved objects. +.2+| `connector_get` +| `success` | User has accessed a connector. +| `failure` | User is not authorized to access a connector. + +.2+| `connector_find` +| `success` | User has accessed a connector as part of a search operation. +| `failure` | User is not authorized to search for connectors. + +.2+| `alert_get` +| `success` | User has accessed an alert rule. +| `failure` | User is not authorized to access an alert rule. + +.2+| `alert_find` +| `success` | User has accessed an alert rule as part of a search operation. +| `failure` | User is not authorized to search for alert rules. + 3+a| ===== Category: web diff --git a/docs/user/security/authentication/index.asciidoc b/docs/user/security/authentication/index.asciidoc index c88fa9750b3e40..c28f5fd1d923b3 100644 --- a/docs/user/security/authentication/index.asciidoc +++ b/docs/user/security/authentication/index.asciidoc @@ -13,6 +13,7 @@ - <> - <> - <> +- <> - <> Enable multiple authentication mechanisms at the same time specifying a prioritized list of the authentication _providers_ (typically of various types) in the configuration. Providers are consulted in ascending order. Make sure each configured provider has a unique name (e.g. `basic1` or `saml1` in the configuration example) and `order` setting. In the event that two or more providers have the same name or `order`, {kib} will fail to start. @@ -293,6 +294,111 @@ xpack.security.authc.providers: Kibana uses SPNEGO, which wraps the Kerberos protocol for use with HTTP, extending it to web applications. At the end of the Kerberos handshake, Kibana will forward the service ticket to Elasticsearch. Elasticsearch will unpack it and it will respond with an access and refresh token which are then used for subsequent authentication. +[[anonymous-authentication]] +==== Anonymous authentication + +[IMPORTANT] +============================================================================ +Anyone with access to the network {kib} is exposed to will be able to access {kib}. Make sure that you've properly restricted the capabilities of the anonymous service account so that anonymous users can't perform destructive actions or escalate their own privileges. +============================================================================ + +Anonymous authentication gives users access to {kib} without requiring them to provide credentials. This can be useful if you want your users to skip the login step when you embed dashboards in another application or set up a demo {kib} instance in your internal network, while still keeping other security features intact. + +To enable anonymous authentication in {kib}, you must decide what credentials the anonymous service account {kib} should use internally to authenticate anonymous requests. + +NOTE: You can configure only one anonymous authentication provider per {kib} instance. + +There are three ways to specify these credentials: + +If you have a user who can authenticate to {es} using username and password, for instance from the Native or LDAP security realms, you can also use these credentials to impersonate the anonymous users. Here is how your `kibana.yml` might look if you use username and password credentials: + +[source,yaml] +----------------------------------------------- +xpack.security.authc.providers: + anonymous.anonymous1: + order: 0 + credentials: + username: "anonymous_service_account" + password: "anonymous_service_account_password" +----------------------------------------------- + +If using username and password credentials isn't desired or feasible, then you can create a dedicated <> for the anonymous service account. In this case, your `kibana.yml` might look like this: + +[source,yaml] +----------------------------------------------- +xpack.security.authc.providers: + anonymous.anonymous1: + order: 0 + credentials: + apiKey: "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" +----------------------------------------------- + +The previous configuration snippet uses an API key string that is the result of base64-encoding of the `id` and `api_key` fields returned from the {es} API, joined by a colon. You can also specify these fields separately, and {kib} will do the concatenation and base64-encoding for you: + +[source,yaml] +----------------------------------------------- +xpack.security.authc.providers: + anonymous.anonymous1: + order: 0 + credentials: + apiKey.id: "VuaCfGcBCdbkQm-e5aOx" + apiKey.key: "ui2lp2axTNmsyakw9tvNnw" +----------------------------------------------- + +It's also possible to use {kib} anonymous access in conjunction with the {es} anonymous access. + +Prior to configuring {kib}, ensure that anonymous access is enabled and properly configured in {es}. See {ref}/anonymous-access.html[Enabling anonymous access] for more information. + +Here is how your `kibana.yml` might look like if you want to use {es} anonymous access to impersonate anonymous users in {kib}: + +[source,yaml] +----------------------------------------------- +xpack.security.authc.providers: + anonymous.anonymous1: + order: 0 + credentials: "elasticsearch_anonymous_user" <1> +----------------------------------------------- + +<1> The `elasticsearch_anonymous_user` is a special constant that indicates you want to use the {es} anonymous user. + +[float] +===== Anonymous access and other types of authentication + +You can configure more authentication providers in addition to anonymous access in {kib}. In this case, the Login Selector presents a configurable *Continue as Guest* option for anonymous access: + +[source,yaml] +-------------------------------------------------------------------------------- +xpack.security.authc.providers: + basic.basic1: + order: 0 + anonymous.anonymous1: + order: 1 + credentials: + username: "anonymous_service_account" + password: "anonymous_service_account_password" +-------------------------------------------------------------------------------- + +[float] +===== Anonymous access and embedding + +One of the most popular use cases for anonymous access is when you embed {kib} into other applications and don't want to force your users to log in to view it. If you configured {kib} to use anonymous access as the sole authentication mechanism, you don't need to do anything special while embedding {kib}. + +If you have multiple authentication providers enabled, and you want to automatically log in anonymous users when embedding, then you will need to add the `auth_provider_hint=` query string parameter to the {kib} URL that you're embedding. + +For example, if you generate the iframe code to embed {kib}, it will look like this: + +```html + +``` + +To make this iframe leverage anonymous access automatically, you will need to modify a link to {kib} in the `src` iframe attribute to look like this: + +```html + +``` + +Note that `auth_provider_hint` query string parameter goes *before* the hash URL fragment. + [[http-authentication]] ==== HTTP authentication diff --git a/docs/user/security/reporting.asciidoc b/docs/user/security/reporting.asciidoc index 6e7fc0c212f070..e69643ef9712ad 100644 --- a/docs/user/security/reporting.asciidoc +++ b/docs/user/security/reporting.asciidoc @@ -101,7 +101,7 @@ If you are using an external identity provider, such as LDAP or Active Directory, you can either assign roles on a per user basis, or assign roles to groups of users. By default, role mappings are configured in -{ref}/mapping-roles.html[`config/shield/role_mapping.yml`]. +{ref}/mapping-roles.html[`config/role_mapping.yml`]. For example, the following snippet assigns the user named Bill Murray the `kibana_admin` and `reporting_user` roles: diff --git a/docs/user/whats-new.asciidoc b/docs/user/whats-new.asciidoc index 9c163180a4341d..587f4588bb4424 100644 --- a/docs/user/whats-new.asciidoc +++ b/docs/user/whats-new.asciidoc @@ -11,4 +11,4 @@ coming[8.0.0] // tag::notable-highlights[] -// end::notable-highlights[] \ No newline at end of file +// end::notable-highlights[] diff --git a/docs/visualize/images/vega_lite_tutorial_3.png b/docs/visualize/images/vega_lite_tutorial_3.png new file mode 100644 index 00000000000000..a294e02f078486 Binary files /dev/null and b/docs/visualize/images/vega_lite_tutorial_3.png differ diff --git a/docs/visualize/images/vega_lite_tutorial_4.png b/docs/visualize/images/vega_lite_tutorial_4.png new file mode 100644 index 00000000000000..e73a837fa816bb Binary files /dev/null and b/docs/visualize/images/vega_lite_tutorial_4.png differ diff --git a/docs/visualize/images/vega_lite_tutorial_5.png b/docs/visualize/images/vega_lite_tutorial_5.png new file mode 100644 index 00000000000000..d0c84fe76ba558 Binary files /dev/null and b/docs/visualize/images/vega_lite_tutorial_5.png differ diff --git a/docs/visualize/images/vega_lite_tutorial_6.png b/docs/visualize/images/vega_lite_tutorial_6.png new file mode 100644 index 00000000000000..486ef6c362438e Binary files /dev/null and b/docs/visualize/images/vega_lite_tutorial_6.png differ diff --git a/docs/visualize/images/vega_lite_tutorial_7.png b/docs/visualize/images/vega_lite_tutorial_7.png new file mode 100644 index 00000000000000..d2c83371b107bc Binary files /dev/null and b/docs/visualize/images/vega_lite_tutorial_7.png differ diff --git a/examples/search_examples/public/components/app.tsx b/examples/search_examples/public/components/app.tsx index 2425f3bbad8a97..33ad8bbfe3d357 100644 --- a/examples/search_examples/public/components/app.tsx +++ b/examples/search_examples/public/components/app.tsx @@ -23,7 +23,8 @@ import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; import { BrowserRouter as Router } from 'react-router-dom'; import { - EuiButton, + EuiButtonEmpty, + EuiCodeBlock, EuiPage, EuiPageBody, EuiPageContent, @@ -32,6 +33,7 @@ import { EuiTitle, EuiText, EuiFlexGrid, + EuiFlexGroup, EuiFlexItem, EuiCheckbox, EuiSpacer, @@ -68,6 +70,11 @@ interface SearchExamplesAppDeps { data: DataPublicPluginStart; } +function getNumeric(fields?: IndexPatternField[]) { + if (!fields) return []; + return fields?.filter((f) => f.type === 'number' && f.aggregatable); +} + function formatFieldToComboBox(field?: IndexPatternField | null) { if (!field) return []; return formatFieldsToComboBox([field]); @@ -95,8 +102,13 @@ export const SearchExamplesApp = ({ const [getCool, setGetCool] = useState(false); const [timeTook, setTimeTook] = useState(); const [indexPattern, setIndexPattern] = useState(); - const [numericFields, setNumericFields] = useState(); - const [selectedField, setSelectedField] = useState(); + const [fields, setFields] = useState(); + const [selectedFields, setSelectedFields] = useState([]); + const [selectedNumericField, setSelectedNumericField] = useState< + IndexPatternField | null | undefined + >(); + const [request, setRequest] = useState>({}); + const [response, setResponse] = useState>({}); // Fetch the default index pattern using the `data.indexPatterns` service, as the component is mounted. useEffect(() => { @@ -110,24 +122,23 @@ export const SearchExamplesApp = ({ // Update the fields list every time the index pattern is modified. useEffect(() => { - const fields = indexPattern?.fields.filter( - (field) => field.type === 'number' && field.aggregatable - ); - setNumericFields(fields); - setSelectedField(fields?.length ? fields[0] : null); + setFields(indexPattern?.fields); }, [indexPattern]); + useEffect(() => { + setSelectedNumericField(fields?.length ? getNumeric(fields)[0] : null); + }, [fields]); const doAsyncSearch = async (strategy?: string) => { - if (!indexPattern || !selectedField) return; + if (!indexPattern || !selectedNumericField) return; // Constuct the query portion of the search request const query = data.query.getEsQuery(indexPattern); // Constuct the aggregations portion of the search request by using the `data.search.aggs` service. - const aggs = [{ type: 'avg', params: { field: selectedField.name } }]; + const aggs = [{ type: 'avg', params: { field: selectedNumericField!.name } }]; const aggsDsl = data.search.aggs.createAggConfigs(indexPattern, aggs).toDsl(); - const request = { + const req = { params: { index: indexPattern.title, body: { @@ -140,23 +151,26 @@ export const SearchExamplesApp = ({ }; // Submit the search request using the `data.search` service. + setRequest(req.params.body); const searchSubscription$ = data.search - .search(request, { + .search(req, { strategy, }) .subscribe({ - next: (response) => { - if (isCompleteResponse(response)) { - setTimeTook(response.rawResponse.took); - const avgResult: number | undefined = response.rawResponse.aggregations - ? response.rawResponse.aggregations[1].value + next: (res) => { + if (isCompleteResponse(res)) { + setResponse(res.rawResponse); + setTimeTook(res.rawResponse.took); + const avgResult: number | undefined = res.rawResponse.aggregations + ? res.rawResponse.aggregations[1].value : undefined; const message = ( - Searched {response.rawResponse.hits.total} documents.
- The average of {selectedField.name} is {avgResult ? Math.floor(avgResult) : 0}. + Searched {res.rawResponse.hits.total} documents.
+ The average of {selectedNumericField!.name} is{' '} + {avgResult ? Math.floor(avgResult) : 0}.
- Is it Cool? {String((response as IMyStrategyResponse).cool)} + Is it Cool? {String((res as IMyStrategyResponse).cool)}
); notifications.toasts.addSuccess({ @@ -164,7 +178,7 @@ export const SearchExamplesApp = ({ text: mountReactNode(message), }); searchSubscription$.unsubscribe(); - } else if (isErrorResponse(response)) { + } else if (isErrorResponse(res)) { // TODO: Make response error status clearer notifications.toasts.addWarning('An error has occurred'); searchSubscription$.unsubscribe(); @@ -176,6 +190,50 @@ export const SearchExamplesApp = ({ }); }; + const doSearchSourceSearch = async () => { + if (!indexPattern) return; + + const query = data.query.queryString.getQuery(); + const filters = data.query.filterManager.getFilters(); + const timefilter = data.query.timefilter.timefilter.createFilter(indexPattern); + if (timefilter) { + filters.push(timefilter); + } + + try { + const searchSource = await data.search.searchSource.create(); + + searchSource + .setField('index', indexPattern) + .setField('filter', filters) + .setField('query', query) + .setField('fields', selectedFields.length ? selectedFields.map((f) => f.name) : ['*']); + + if (selectedNumericField) { + searchSource.setField('aggs', () => { + return data.search.aggs + .createAggConfigs(indexPattern, [ + { type: 'avg', params: { field: selectedNumericField.name } }, + ]) + .toDsl(); + }); + } + + setRequest(await searchSource.getSearchRequestBody()); + const res = await searchSource.fetch(); + setResponse(res); + + const message = Searched {res.hits.total} documents.; + notifications.toasts.addSuccess({ + title: 'Query result', + text: mountReactNode(message), + }); + } catch (e) { + setResponse(e.body); + notifications.toasts.addWarning(`An error has occurred: ${e.message}`); + } + }; + const onClickHandler = () => { doAsyncSearch(); }; @@ -185,22 +243,24 @@ export const SearchExamplesApp = ({ }; const onServerClickHandler = async () => { - if (!indexPattern || !selectedField) return; + if (!indexPattern || !selectedNumericField) return; try { - const response = await http.get(SERVER_SEARCH_ROUTE_PATH, { + const res = await http.get(SERVER_SEARCH_ROUTE_PATH, { query: { index: indexPattern.title, - field: selectedField.name, + field: selectedNumericField!.name, }, }); - notifications.toasts.addSuccess(`Server returned ${JSON.stringify(response)}`); + notifications.toasts.addSuccess(`Server returned ${JSON.stringify(res)}`); } catch (e) { notifications.toasts.addDanger('Failed to run search'); } }; - if (!indexPattern) return null; + const onSearchSourceClickHandler = () => { + doSearchSourceSearch(); + }; return ( @@ -212,7 +272,7 @@ export const SearchExamplesApp = ({ useDefaultBehaviors={true} indexPatterns={indexPattern ? [indexPattern] : undefined} /> - + @@ -227,106 +287,178 @@ export const SearchExamplesApp = ({ - - - - Index Pattern - { - const newIndexPattern = await data.indexPatterns.get(newIndexPatternId); - setIndexPattern(newIndexPattern); - }} - isClearable={false} - /> - - - Numeric Fields - { - const field = indexPattern.getFieldByName(option[0].label); - setSelectedField(field || null); - }} - sortMatchesBy="startsWith" + + + + + + Index Pattern + { + const newIndexPattern = await data.indexPatterns.get( + newIndexPatternId + ); + setIndexPattern(newIndexPattern); + }} + isClearable={false} + /> + + + Numeric Field to Aggregate + { + const fld = indexPattern?.getFieldByName(option[0].label); + setSelectedNumericField(fld || null); + }} + sortMatchesBy="startsWith" + /> + + + + + + Fields to query (leave blank to include all fields) + + { + const flds = option + .map((opt) => indexPattern?.getFieldByName(opt?.label)) + .filter((f) => f); + setSelectedFields(flds.length ? (flds as IndexPatternField[]) : []); + }} + sortMatchesBy="startsWith" + /> + + + + + +

+ Searching Elasticsearch using data.search +

+
+ + If you want to fetch data from Elasticsearch, you can use the different + services provided by the data plugin. These help you get + the index pattern and search bar configuration, format them into a DSL query + and send it to Elasticsearch. + + + + + + + + + + +

Writing a custom search strategy

+
+ + If you want to do some pre or post processing on the server, you might want + to create a custom search strategy. This example uses such a strategy, + passing in custom input and receiving custom output back. + + + } + checked={getCool} + onChange={(event) => setGetCool(event.target.checked)} /> -
-
-
- - - - - -

- Searching Elasticsearch using data.search -

-
- - If you want to fetch data from Elasticsearch, you can use the different services - provided by the data plugin. These help you get the index - pattern and search bar configuration, format them into a DSL query and send it - to Elasticsearch. - - - - - - - -

Writing a custom search strategy

-
- - If you want to do some pre or post processing on the server, you might want to - create a custom search strategy. This example uses such a strategy, passing in - custom input and receiving custom output back. - - + + + + + +

Using search on the server

+
+ + You can also run your search request from the server, without registering a + search strategy. This request does not take the configuration of{' '} + TopNavMenu into account, but you could pass those down to + the server as well. + + + + + + + + +

Request

+
+ Search body sent to ES + + {JSON.stringify(request, null, 2)} + +
+ + +

Response

+
+ - } - checked={getCool} - onChange={(event) => setGetCool(event.target.checked)} - /> - - - - - - -

Using search on the server

-
- - You can also run your search request from the server, without registering a - search strategy. This request does not take the configuration of{' '} - TopNavMenu into account, but you could pass those down to the - server as well. - - - - + + + {JSON.stringify(response, null, 2)} + +
+
diff --git a/jest.config.integration.js b/jest.config.integration.js new file mode 100644 index 00000000000000..3dacb107f94c04 --- /dev/null +++ b/jest.config.integration.js @@ -0,0 +1,39 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const preset = require('@kbn/test/jest-preset'); + +module.exports = { + preset: '@kbn/test', + rootDir: '.', + roots: ['/src', '/packages'], + testMatch: ['**/integration_tests**/*.test.{js,mjs,ts,tsx}'], + testRunner: 'jasmine2', + testPathIgnorePatterns: preset.testPathIgnorePatterns.filter( + (pattern) => !pattern.includes('integration_tests') + ), + reporters: [ + 'default', + [ + '/packages/kbn-test/target/jest/junit_reporter', + { reportName: 'Jest Integration Tests' }, + ], + ], + setupFilesAfterEnv: ['/packages/kbn-test/target/jest/setup/after_env.integration.js'], +}; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000000000..c190556700b812 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,23 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + rootDir: '.', + projects: [...require('./jest.config.oss').projects, ...require('./x-pack/jest.config').projects], +}; diff --git a/jest.config.oss.js b/jest.config.oss.js new file mode 100644 index 00000000000000..e9235069687e0a --- /dev/null +++ b/jest.config.oss.js @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + rootDir: '.', + projects: [ + '/packages/*/jest.config.js', + '/src/*/jest.config.js', + '/src/legacy/*/jest.config.js', + '/src/plugins/*/jest.config.js', + '/test/*/jest.config.js', + ], + reporters: ['default', '/packages/kbn-test/target/jest/junit_reporter'], +}; diff --git a/package.json b/package.json index 8e94e5277b8e3e..513d9b907c96c8 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "number": 8467, "sha": "6cb7fec4e154faa0a4a3fee4b33dfef91b9870d9" }, + "config": { + "puppeteer_skip_chromium_download": true + }, "homepage": "https://www.elastic.co/products/kibana", "bugs": { "url": "http://github.com/elastic/kibana/issues" @@ -65,7 +68,7 @@ "kbn:watch": "node scripts/kibana --dev --logging.json=false", "build:types": "rm -rf ./target/types && tsc --p tsconfig.types.json", "docs:acceptApiChanges": "node --max-old-space-size=6144 scripts/check_published_api_changes.js --accept", - "kbn:bootstrap": "node scripts/build_ts_refs && node scripts/register_git_hook", + "kbn:bootstrap": "node scripts/build_ts_refs", "spec_to_console": "node scripts/spec_to_console", "backport-skip-ci": "backport --prDescription \"[skip-ci]\"", "storybook": "node scripts/storybook", @@ -81,7 +84,7 @@ "**/@types/hapi__boom": "^7.4.1", "**/@types/hapi__hapi": "^18.2.6", "**/@types/hapi__mimos": "4.1.0", - "**/@types/node": "12.19.4", + "**/@types/node": "14.14.7", "**/cross-fetch/node-fetch": "^2.6.1", "**/deepmerge": "^4.2.2", "**/fast-deep-equal": "^3.1.1", @@ -93,27 +96,31 @@ "**/minimist": "^1.2.5", "**/node-jose/node-forge": "^0.10.0", "**/prismjs": "1.22.0", + "**/react-syntax-highlighter": "^15.3.1", + "**/react-syntax-highlighter/**/highlight.js": "^10.4.1", "**/request": "^2.88.2", "**/trim": "0.0.3", - "**/typescript": "4.0.2" + "**/typescript": "4.1.2" }, "engines": { - "node": "12.19.1", + "node": "14.15.1", "yarn": "^1.21.1" }, "dependencies": { "@babel/core": "^7.11.6", "@babel/runtime": "^7.11.2", "@elastic/datemath": "link:packages/elastic-datemath", - "@elastic/elasticsearch": "7.10.0-rc.1", - "@elastic/ems-client": "7.10.0", - "@elastic/eui": "30.2.0", + "@elastic/elasticsearch": "7.10.0", + "@elastic/ems-client": "7.11.0", + "@elastic/eui": "30.5.1", "@elastic/filesaver": "1.1.2", - "@elastic/good": "8.1.1-kibana2", + "@elastic/good": "^9.0.1-kibana3", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.0", + "@elastic/react-search-ui": "^1.5.0", "@elastic/request-crypto": "1.1.4", "@elastic/safer-lodash-set": "link:packages/elastic-safer-lodash-set", + "@elastic/search-ui-app-search-connector": "^1.5.0", "@hapi/boom": "^7.4.11", "@hapi/cookie": "^10.1.2", "@hapi/good-squeeze": "5.2.1", @@ -152,6 +159,7 @@ "angular-resource": "1.8.0", "angular-sanitize": "^1.8.0", "angular-ui-ace": "0.2.3", + "antlr4ts": "^0.5.0-alpha.3", "apollo-cache-inmemory": "1.6.2", "apollo-client": "^2.3.8", "apollo-link-http": "^1.5.16", @@ -160,7 +168,6 @@ "apollo-server-core": "^1.3.6", "apollo-server-errors": "^2.0.2", "apollo-server-hapi": "^1.3.6", - "apollo-server-module-graphiql": "^1.3.4", "archiver": "^3.1.1", "axios": "^0.19.2", "bluebird": "3.5.5", @@ -243,7 +250,7 @@ "moment": "^2.24.0", "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.27", - "monaco-editor": "~0.17.0", + "monaco-editor": "^0.17.0", "mustache": "^2.3.2", "ngreact": "^0.5.1", "nock": "12.0.3", @@ -261,13 +268,11 @@ "pdfmake": "^0.1.65", "pegjs": "0.10.0", "pngjs": "^3.4.0", - "podium": "^3.1.2", "prop-types": "^15.7.2", "proper-lockfile": "^3.2.0", "proxy-from-env": "1.0.0", "puid": "1.0.7", - "puppeteer": "^2.1.1", - "puppeteer-core": "^1.19.0", + "puppeteer": "^5.5.0", "query-string": "^6.13.2", "raw-loader": "^3.1.0", "re2": "^1.15.4", @@ -346,17 +351,16 @@ "@babel/traverse": "^7.11.5", "@babel/types": "^7.11.0", "@cypress/snapshot": "^2.1.7", - "@cypress/webpack-preprocessor": "^5.4.10", + "@cypress/webpack-preprocessor": "^5.4.11", "@elastic/apm-rum": "^5.6.1", "@elastic/apm-rum-react": "^1.2.5", - "@elastic/charts": "24.0.0", + "@elastic/charts": "24.3.0", "@elastic/eslint-config-kibana": "link:packages/elastic-eslint-config-kibana", "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/github-checks-reporter": "0.0.20b3", "@elastic/makelogs": "^6.0.0", "@elastic/maki": "6.3.0", "@elastic/ui-ace": "0.2.3", - "@hapi/hapi": "^18.4.1", "@istanbuljs/schema": "^0.1.2", "@jest/reporters": "^26.5.2", "@kbn/babel-code-parser": "link:packages/kbn-babel-code-parser", @@ -450,8 +454,6 @@ "@types/graphql": "^0.13.2", "@types/gulp": "^4.0.6", "@types/gulp-zip": "^4.0.1", - "@types/hapi": "^17.0.18", - "@types/hapi-auth-cookie": "^9.1.0", "@types/hapi__boom": "^7.4.1", "@types/hapi__cookie": "^10.1.1", "@types/hapi__h2o2": "8.3.0", @@ -498,7 +500,7 @@ "@types/mustache": "^0.8.31", "@types/ncp": "^2.0.1", "@types/nock": "^10.0.3", - "@types/node": "12.19.4", + "@types/node": "14.14.7", "@types/node-fetch": "^2.5.7", "@types/node-forge": "^0.9.5", "@types/nodemailer": "^6.4.0", @@ -515,7 +517,7 @@ "@types/pretty-ms": "^5.0.0", "@types/prop-types": "^15.7.3", "@types/proper-lockfile": "^3.0.1", - "@types/puppeteer": "^1.20.1", + "@types/puppeteer": "^5.4.1", "@types/rbush": "^3.0.0", "@types/reach__router": "^1.2.6", "@types/react": "^16.9.36", @@ -527,7 +529,6 @@ "@types/react-resize-detector": "^4.0.1", "@types/react-router": "^5.1.7", "@types/react-router-dom": "^5.1.5", - "@types/react-sticky": "^6.0.3", "@types/react-test-renderer": "^16.9.1", "@types/react-virtualized": "^9.18.7", "@types/read-pkg": "^4.0.0", @@ -578,11 +579,13 @@ "angular-recursion": "^1.0.5", "angular-route": "^1.8.0", "angular-sortable-view": "^0.0.17", + "antlr4ts-cli": "^0.5.0-alpha.3", "apidoc": "^0.25.0", "apidoc-markdown": "^5.1.8", "apollo-link": "^1.2.3", "apollo-link-error": "^1.1.7", "apollo-link-state": "^0.4.1", + "argsplit": "^1.0.5", "autoprefixer": "^9.7.4", "axe-core": "^4.0.2", "babel-eslint": "^10.0.3", @@ -590,7 +593,7 @@ "babel-loader": "^8.0.6", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-istanbul": "^6.0.0", - "babel-plugin-require-context-hook": "npm:babel-plugin-require-context-hook-babel7@1.0.0", + "babel-plugin-require-context-hook": "^1.0.0", "babel-plugin-styled-components": "^1.10.7", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "backport": "5.6.0", @@ -609,7 +612,7 @@ "cpy": "^8.1.1", "cronstrue": "^1.51.0", "css-loader": "^3.4.2", - "cypress": "^5.5.0", + "cypress": "^6.0.1", "cypress-cucumber-preprocessor": "^2.5.2", "cypress-multi-reporters": "^1.4.0", "d3": "3.5.17", @@ -621,6 +624,7 @@ "delete-empty": "^2.0.0", "dependency-check": "^4.1.0", "diff": "^4.0.1", + "dpdm": "3.5.0", "ejs": "^3.1.5", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.2", @@ -654,7 +658,7 @@ "file-loader": "^4.2.0", "file-saver": "^1.3.8", "formsy-react": "^1.1.5", - "geckodriver": "^1.20.0", + "geckodriver": "^1.21.0", "glob-watcher": "5.0.3", "graphql-code-generator": "^0.18.2", "graphql-codegen-add": "^0.18.2", @@ -678,7 +682,7 @@ "has-ansi": "^3.0.0", "hdr-histogram-js": "^1.2.0", "he": "^1.2.0", - "highlight.js": "9.15.10", + "highlight.js": "^9.18.5", "history-extra": "^5.0.1", "hoist-non-react-statics": "^3.3.2", "html": "1.0.0", @@ -723,12 +727,11 @@ "less": "npm:@elastic/less@2.7.3-kibana", "license-checker": "^16.0.0", "listr": "^0.14.1", - "lmdb-store": "^0.8.15", + "lmdb-store": "^0.9.0", "load-grunt-config": "^3.0.1", "loader-utils": "^1.2.3", "log-symbols": "^2.2.0", "lz-string": "^1.4.4", - "madge": "3.4.4", "mapbox-gl": "^1.12.0", "mapbox-gl-draw-rectangle-mode": "^1.0.4", "marge": "^1.0.1", @@ -748,7 +751,7 @@ "murmurhash3js": "3.0.1", "mutation-observer": "^1.0.3", "ncp": "^2.0.0", - "node-sass": "^4.13.1", + "node-sass": "^4.14.1", "null-loader": "^3.0.0", "nyc": "^15.0.1", "oboe": "^2.1.4", @@ -776,15 +779,14 @@ "react-fast-compare": "^2.0.4", "react-grid-layout": "^0.16.2", "react-markdown": "^4.3.1", - "react-monaco-editor": "~0.27.0", + "react-monaco-editor": "^0.27.0", "react-popper-tooltip": "^2.10.1", "react-resize-detector": "^4.2.0", "react-reverse-portal": "^1.0.4", "react-router-redux": "^4.0.8", "react-shortcuts": "^2.0.0", "react-sizeme": "^2.3.6", - "react-sticky": "^6.0.3", - "react-syntax-highlighter": "^5.7.0", + "react-syntax-highlighter": "^15.3.1", "react-test-renderer": "^16.12.0", "react-tiny-virtual-list": "^2.2.0", "react-virtualized": "^9.21.2", @@ -806,7 +808,7 @@ "sass-resources-loader": "^2.0.1", "selenium-webdriver": "^4.0.0-alpha.7", "serve-static": "1.14.1", - "shelljs": "^0.8.3", + "shelljs": "^0.8.4", "simple-git": "1.116.0", "sinon": "^7.4.2", "spawn-sync": "^1.0.15", @@ -827,7 +829,7 @@ "topojson-client": "3.0.0", "ts-loader": "^7.0.5", "tsd": "^0.13.1", - "typescript": "4.0.2", + "typescript": "4.1.2", "typescript-fsa": "^3.0.0", "typescript-fsa-reducers": "^1.2.1", "unlazy-loader": "^0.1.3", diff --git a/packages/README.md b/packages/README.md index 8ff05f4e8ff899..9d9cd4ed7b6e55 100644 --- a/packages/README.md +++ b/packages/README.md @@ -60,7 +60,7 @@ A package can also follow the pattern of having `.test.js` files as siblings of 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. +* `yarn 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. diff --git a/packages/kbn-analytics/src/index.ts b/packages/kbn-analytics/src/index.ts index c7a1350841168e..ee3c7e9443951c 100644 --- a/packages/kbn-analytics/src/index.ts +++ b/packages/kbn-analytics/src/index.ts @@ -18,6 +18,6 @@ */ export { ReportHTTP, Reporter, ReporterConfig } from './reporter'; -export { UiStatsMetricType, METRIC_TYPE } from './metrics'; +export { UiCounterMetricType, METRIC_TYPE } from './metrics'; export { Report, ReportManager } from './report'; export { Storage } from './storage'; diff --git a/packages/kbn-analytics/src/metrics/index.ts b/packages/kbn-analytics/src/metrics/index.ts index 4fbdddeea90fd0..fd1166b1b6bfca 100644 --- a/packages/kbn-analytics/src/metrics/index.ts +++ b/packages/kbn-analytics/src/metrics/index.ts @@ -17,16 +17,15 @@ * under the License. */ -import { UiStatsMetric } from './ui_stats'; +import { UiCounterMetric } from './ui_counter'; import { UserAgentMetric } from './user_agent'; import { ApplicationUsageCurrent } from './application_usage'; -export { UiStatsMetric, createUiStatsMetric, UiStatsMetricType } from './ui_stats'; -export { Stats } from './stats'; +export { UiCounterMetric, createUiCounterMetric, UiCounterMetricType } from './ui_counter'; export { trackUsageAgent } from './user_agent'; export { ApplicationUsage, ApplicationUsageCurrent } from './application_usage'; -export type Metric = UiStatsMetric | UserAgentMetric | ApplicationUsageCurrent; +export type Metric = UiCounterMetric | UserAgentMetric | ApplicationUsageCurrent; export enum METRIC_TYPE { COUNT = 'count', LOADED = 'loaded', diff --git a/packages/kbn-analytics/src/metrics/stats.ts b/packages/kbn-analytics/src/metrics/stats.ts deleted file mode 100644 index 993290167018c5..00000000000000 --- a/packages/kbn-analytics/src/metrics/stats.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export interface Stats { - min: number; - max: number; - sum: number; - avg: number; -} diff --git a/packages/kbn-analytics/src/metrics/ui_counter.ts b/packages/kbn-analytics/src/metrics/ui_counter.ts new file mode 100644 index 00000000000000..3fddc73bf6e3af --- /dev/null +++ b/packages/kbn-analytics/src/metrics/ui_counter.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { METRIC_TYPE } from './'; + +export type UiCounterMetricType = METRIC_TYPE.CLICK | METRIC_TYPE.LOADED | METRIC_TYPE.COUNT; +export interface UiCounterMetricConfig { + type: UiCounterMetricType; + appName: string; + eventName: string; + count?: number; +} + +export interface UiCounterMetric { + type: UiCounterMetricType; + appName: string; + eventName: string; + count: number; +} + +export function createUiCounterMetric({ + type, + appName, + eventName, + count = 1, +}: UiCounterMetricConfig): UiCounterMetric { + return { + type, + appName, + eventName, + count, + }; +} diff --git a/packages/kbn-analytics/src/metrics/ui_stats.ts b/packages/kbn-analytics/src/metrics/ui_stats.ts deleted file mode 100644 index dc8cdcd3e4a1e9..00000000000000 --- a/packages/kbn-analytics/src/metrics/ui_stats.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { METRIC_TYPE } from './'; - -export type UiStatsMetricType = METRIC_TYPE.CLICK | METRIC_TYPE.LOADED | METRIC_TYPE.COUNT; -export interface UiStatsMetricConfig { - type: UiStatsMetricType; - appName: string; - eventName: string; - count?: number; -} - -export interface UiStatsMetric { - type: UiStatsMetricType; - appName: string; - eventName: string; - count: number; -} - -export function createUiStatsMetric({ - type, - appName, - eventName, - count = 1, -}: UiStatsMetricConfig): UiStatsMetric { - return { - type, - appName, - eventName, - count, - }; -} diff --git a/packages/kbn-analytics/src/report.ts b/packages/kbn-analytics/src/report.ts index d9303d2d3af1d3..69bd4436d814e8 100644 --- a/packages/kbn-analytics/src/report.ts +++ b/packages/kbn-analytics/src/report.ts @@ -19,19 +19,19 @@ import moment from 'moment-timezone'; import { UnreachableCaseError, wrapArray } from './util'; -import { Metric, Stats, UiStatsMetricType, METRIC_TYPE } from './metrics'; -const REPORT_VERSION = 1; +import { Metric, UiCounterMetricType, METRIC_TYPE } from './metrics'; +const REPORT_VERSION = 2; export interface Report { reportVersion: typeof REPORT_VERSION; - uiStatsMetrics?: Record< + uiCounter?: Record< string, { key: string; appName: string; eventName: string; - type: UiStatsMetricType; - stats: Stats; + type: UiCounterMetricType; + total: number; } >; userAgent?: Record< @@ -65,25 +65,15 @@ export class ReportManager { this.report = ReportManager.createReport(); } public isReportEmpty(): boolean { - const { uiStatsMetrics, userAgent, application_usage: appUsage } = this.report; - const noUiStats = !uiStatsMetrics || Object.keys(uiStatsMetrics).length === 0; - const noUserAgent = !userAgent || Object.keys(userAgent).length === 0; + const { uiCounter, userAgent, application_usage: appUsage } = this.report; + const noUiCounters = !uiCounter || Object.keys(uiCounter).length === 0; + const noUserAgents = !userAgent || Object.keys(userAgent).length === 0; const noAppUsage = !appUsage || Object.keys(appUsage).length === 0; - return noUiStats && noUserAgent && noAppUsage; + return noUiCounters && noUserAgents && noAppUsage; } - private incrementStats(count: number, stats?: Stats): Stats { - const { min = 0, max = 0, sum = 0 } = stats || {}; - const newMin = Math.min(min, count); - const newMax = Math.max(max, count); - const newAvg = newMin + newMax / 2; - const newSum = sum + count; - - return { - min: newMin, - max: newMax, - avg: newAvg, - sum: newSum, - }; + private incrementTotal(count: number, currentTotal?: number): number { + const currentTotalNumber = typeof currentTotal === 'number' ? currentTotal : 0; + return count + currentTotalNumber; } assignReports(newMetrics: Metric | Metric[]) { wrapArray(newMetrics).forEach((newMetric) => this.assignReport(this.report, newMetric)); @@ -129,14 +119,14 @@ export class ReportManager { case METRIC_TYPE.LOADED: case METRIC_TYPE.COUNT: { const { appName, type, eventName, count } = metric; - report.uiStatsMetrics = report.uiStatsMetrics || {}; - const existingStats = (report.uiStatsMetrics[key] || {}).stats; - report.uiStatsMetrics[key] = { + report.uiCounter = report.uiCounter || {}; + const currentTotal = report.uiCounter[key]?.total; + report.uiCounter[key] = { key, appName, eventName, type, - stats: this.incrementStats(count, existingStats), + total: this.incrementTotal(count, currentTotal), }; return; } diff --git a/packages/kbn-analytics/src/reporter.ts b/packages/kbn-analytics/src/reporter.ts index b20ddc0e58ba7c..1cecfbf17bd2cf 100644 --- a/packages/kbn-analytics/src/reporter.ts +++ b/packages/kbn-analytics/src/reporter.ts @@ -18,7 +18,7 @@ */ import { wrapArray } from './util'; -import { Metric, createUiStatsMetric, trackUsageAgent, UiStatsMetricType } from './metrics'; +import { Metric, createUiCounterMetric, trackUsageAgent, UiCounterMetricType } from './metrics'; import { Storage, ReportStorageManager } from './storage'; import { Report, ReportManager } from './report'; @@ -109,15 +109,15 @@ export class Reporter { } } - public reportUiStats = ( + public reportUiCounter = ( appName: string, - type: UiStatsMetricType, + type: UiCounterMetricType, eventNames: string | string[], count?: number ) => { const metrics = wrapArray(eventNames).map((eventName) => { this.log(`${type} Metric -> (${appName}:${eventName}):`); - const report = createUiStatsMetric({ type, appName, eventName, count }); + const report = createUiCounterMetric({ type, appName, eventName, count }); this.log(report); return report; }); diff --git a/packages/kbn-apm-config-loader/jest.config.js b/packages/kbn-apm-config-loader/jest.config.js new file mode 100644 index 00000000000000..2b88679a57e72c --- /dev/null +++ b/packages/kbn-apm-config-loader/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-apm-config-loader'], +}; diff --git a/packages/kbn-apm-config-loader/src/config.ts b/packages/kbn-apm-config-loader/src/config.ts index a611e205ec83a9..6e5a830d04b171 100644 --- a/packages/kbn-apm-config-loader/src/config.ts +++ b/packages/kbn-apm-config-loader/src/config.ts @@ -27,22 +27,27 @@ import { ApmAgentConfig } from './types'; const getDefaultConfig = (isDistributable: boolean): ApmAgentConfig => { // https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuration.html + return { - active: process.env.ELASTIC_APM_ACTIVE || false, + active: process.env.ELASTIC_APM_ACTIVE === 'true' || false, environment: process.env.ELASTIC_APM_ENVIRONMENT || process.env.NODE_ENV || 'development', - serverUrl: 'https://b1e3b4b4233e44cdad468c127d0af8d8.apm.europe-west1.gcp.cloud.es.io:443', + serverUrl: 'https://38b80fbd79fb4c91bae06b4642d4d093.apm.us-east-1.aws.cloud.es.io', // The secretToken below is intended to be hardcoded in this file even though // it makes it public. This is not a security/privacy issue. Normally we'd // instead disable the need for a secretToken in the APM Server config where // the data is transmitted to, but due to how it's being hosted, it's easier, // for now, to simply leave it in. - secretToken: '2OyjjaI6RVkzx2O5CV', + secretToken: 'ZQHYvrmXEx04ozge8F', logUncaughtExceptions: true, globalLabels: {}, centralConfig: false, + metricsInterval: isDistributable ? '120s' : '30s', + transactionSampleRate: process.env.ELASTIC_APM_TRANSACTION_SAMPLE_RATE + ? parseFloat(process.env.ELASTIC_APM_TRANSACTION_SAMPLE_RATE) + : 1.0, // Can be performance intensive, disabling by default breakdownMetrics: isDistributable ? false : true, @@ -150,8 +155,9 @@ export class ApmConfiguration { globalLabels: { branch: process.env.ghprbSourceBranch || '', targetBranch: process.env.ghprbTargetBranch || '', - ciJobName: process.env.JOB_NAME || '', ciBuildNumber: process.env.BUILD_NUMBER || '', + isPr: process.env.GITHUB_PR_NUMBER ? true : false, + prId: process.env.GITHUB_PR_NUMBER || '', }, }; } diff --git a/packages/kbn-babel-code-parser/jest.config.js b/packages/kbn-babel-code-parser/jest.config.js new file mode 100644 index 00000000000000..60fce8897723e5 --- /dev/null +++ b/packages/kbn-babel-code-parser/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-babel-code-parser'], +}; diff --git a/packages/kbn-babel-preset/common_preset.js b/packages/kbn-babel-preset/common_preset.js index 8e2f1d207f3f41..b14dcd8971c31c 100644 --- a/packages/kbn-babel-preset/common_preset.js +++ b/packages/kbn-babel-preset/common_preset.js @@ -28,18 +28,19 @@ const plugins = [ // See https://github.com/babel/proposals/issues/12 for progress require.resolve('@babel/plugin-proposal-class-properties'), - // Optional Chaining proposal is stage 3 (https://github.com/tc39/proposal-optional-chaining) + // Optional Chaining proposal is stage 4 (https://github.com/tc39/proposal-optional-chaining) // Need this since we are using TypeScript 3.7+ require.resolve('@babel/plugin-proposal-optional-chaining'), - // Nullish coalescing proposal is stage 3 (https://github.com/tc39/proposal-nullish-coalescing) + + // Nullish coalescing proposal is stage 4 (https://github.com/tc39/proposal-nullish-coalescing) // Need this since we are using TypeScript 3.7+ require.resolve('@babel/plugin-proposal-nullish-coalescing-operator'), - // Proposal is on stage 4 (https://github.com/tc39/proposal-export-ns-from) + // Proposal is on stage 4, and included in ECMA-262 (https://github.com/tc39/proposal-export-ns-from) // Need this since we are using TypeScript 3.8+ require.resolve('@babel/plugin-proposal-export-namespace-from'), - // Proposal is on stage 4 (https://github.com/tc39/proposal-export-ns-from) + // Proposal is on stage 4, and included in ECMA-262 (https://github.com/tc39/proposal-export-ns-from) // Need this since we are using TypeScript 3.9+ require.resolve('@babel/plugin-proposal-private-methods'), ]; diff --git a/packages/kbn-config-schema/jest.config.js b/packages/kbn-config-schema/jest.config.js new file mode 100644 index 00000000000000..35de02838aa1c6 --- /dev/null +++ b/packages/kbn-config-schema/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-config-schema'], +}; diff --git a/packages/kbn-config/jest.config.js b/packages/kbn-config/jest.config.js new file mode 100644 index 00000000000000..b4c84eef4675ce --- /dev/null +++ b/packages/kbn-config/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-config'], +}; diff --git a/packages/kbn-config/src/__mocks__/env.ts b/packages/kbn-config/src/__mocks__/env.ts index f37ac14e602358..e03e88b1ded027 100644 --- a/packages/kbn-config/src/__mocks__/env.ts +++ b/packages/kbn-config/src/__mocks__/env.ts @@ -30,11 +30,9 @@ export function getEnvOptions(options: DeepPartial = {}): EnvOptions configs: options.configs || [], cliArgs: { dev: true, - open: false, quiet: false, silent: false, watch: false, - repl: false, basePath: false, disableOptimizer: true, cache: true, @@ -43,7 +41,6 @@ export function getEnvOptions(options: DeepPartial = {}): EnvOptions runExamples: false, ...(options.cliArgs || {}), }, - isDevClusterMaster: - options.isDevClusterMaster !== undefined ? options.isDevClusterMaster : false, + isDevCliParent: options.isDevCliParent !== undefined ? options.isDevCliParent : false, }; } diff --git a/packages/kbn-config/src/__snapshots__/env.test.ts.snap b/packages/kbn-config/src/__snapshots__/env.test.ts.snap index 005fa6e680f8b8..fae14529a4af3d 100644 --- a/packages/kbn-config/src/__snapshots__/env.test.ts.snap +++ b/packages/kbn-config/src/__snapshots__/env.test.ts.snap @@ -10,10 +10,8 @@ Env { "disableOptimizer": true, "dist": false, "envName": "development", - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -23,7 +21,7 @@ Env { "/some/other/path/some-kibana.yml", ], "homeDir": "/test/kibanaRoot", - "isDevClusterMaster": false, + "isDevCliParent": false, "logDir": "/test/kibanaRoot/log", "mode": Object { "dev": true, @@ -56,10 +54,8 @@ Env { "disableOptimizer": true, "dist": false, "envName": "production", - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -69,7 +65,7 @@ Env { "/some/other/path/some-kibana.yml", ], "homeDir": "/test/kibanaRoot", - "isDevClusterMaster": false, + "isDevCliParent": false, "logDir": "/test/kibanaRoot/log", "mode": Object { "dev": false, @@ -101,10 +97,8 @@ Env { "dev": true, "disableOptimizer": true, "dist": false, - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -114,7 +108,7 @@ Env { "/test/cwd/config/kibana.yml", ], "homeDir": "/test/kibanaRoot", - "isDevClusterMaster": true, + "isDevCliParent": true, "logDir": "/test/kibanaRoot/log", "mode": Object { "dev": true, @@ -146,10 +140,8 @@ Env { "dev": false, "disableOptimizer": true, "dist": false, - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -159,7 +151,7 @@ Env { "/some/other/path/some-kibana.yml", ], "homeDir": "/test/kibanaRoot", - "isDevClusterMaster": false, + "isDevCliParent": false, "logDir": "/test/kibanaRoot/log", "mode": Object { "dev": false, @@ -191,10 +183,8 @@ Env { "dev": false, "disableOptimizer": true, "dist": false, - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -204,7 +194,7 @@ Env { "/some/other/path/some-kibana.yml", ], "homeDir": "/test/kibanaRoot", - "isDevClusterMaster": false, + "isDevCliParent": false, "logDir": "/test/kibanaRoot/log", "mode": Object { "dev": false, @@ -236,10 +226,8 @@ Env { "dev": false, "disableOptimizer": true, "dist": false, - "open": false, "oss": false, "quiet": false, - "repl": false, "runExamples": false, "silent": false, "watch": false, @@ -249,7 +237,7 @@ Env { "/some/other/path/some-kibana.yml", ], "homeDir": "/some/home/dir", - "isDevClusterMaster": false, + "isDevCliParent": false, "logDir": "/some/home/dir/log", "mode": Object { "dev": false, diff --git a/packages/kbn-config/src/env.test.ts b/packages/kbn-config/src/env.test.ts index 1613a90951d403..5aee33e6fda5e6 100644 --- a/packages/kbn-config/src/env.test.ts +++ b/packages/kbn-config/src/env.test.ts @@ -47,7 +47,7 @@ test('correctly creates default environment in dev mode.', () => { REPO_ROOT, getEnvOptions({ configs: ['/test/cwd/config/kibana.yml'], - isDevClusterMaster: true, + isDevCliParent: true, }) ); diff --git a/packages/kbn-config/src/env.ts b/packages/kbn-config/src/env.ts index e7b4658262235b..3b50be4b54bcb7 100644 --- a/packages/kbn-config/src/env.ts +++ b/packages/kbn-config/src/env.ts @@ -26,7 +26,7 @@ import { PackageInfo, EnvironmentMode } from './types'; export interface EnvOptions { configs: string[]; cliArgs: CliArgs; - isDevClusterMaster: boolean; + isDevCliParent: boolean; } /** @internal */ @@ -36,9 +36,7 @@ export interface CliArgs { quiet: boolean; silent: boolean; watch: boolean; - repl: boolean; basePath: boolean; - open: boolean; oss: boolean; /** @deprecated use disableOptimizer to know if the @kbn/optimizer is disabled in development */ optimize?: boolean; @@ -102,10 +100,10 @@ export class Env { public readonly configs: readonly string[]; /** - * Indicates that this Kibana instance is run as development Node Cluster master. + * Indicates that this Kibana instance is running in the parent process of the dev cli. * @internal */ - public readonly isDevClusterMaster: boolean; + public readonly isDevCliParent: boolean; /** * @internal @@ -123,7 +121,7 @@ export class Env { this.cliArgs = Object.freeze(options.cliArgs); this.configs = Object.freeze(options.configs); - this.isDevClusterMaster = options.isDevClusterMaster; + this.isDevCliParent = options.isDevCliParent; const isDevMode = this.cliArgs.dev || this.cliArgs.envName === 'development'; this.mode = Object.freeze({ diff --git a/packages/kbn-config/src/legacy/__snapshots__/legacy_object_to_config_adapter.test.ts.snap b/packages/kbn-config/src/legacy/__snapshots__/legacy_object_to_config_adapter.test.ts.snap index 4a6d86a0dfba61..6351a227ff90b8 100644 --- a/packages/kbn-config/src/legacy/__snapshots__/legacy_object_to_config_adapter.test.ts.snap +++ b/packages/kbn-config/src/legacy/__snapshots__/legacy_object_to_config_adapter.test.ts.snap @@ -16,6 +16,7 @@ Object { "maxPayload": 1000, "name": "kibana-hostname", "port": 1234, + "publicBaseUrl": "https://myhost.com/abc", "rewriteBasePath": false, "socketTimeout": 2000, "ssl": Object { @@ -25,8 +26,8 @@ Object { }, "uuid": undefined, "xsrf": Object { + "allowlist": Array [], "disableProtection": false, - "whitelist": Array [], }, } `; @@ -47,6 +48,7 @@ Object { "maxPayload": 1000, "name": "kibana-hostname", "port": 1234, + "publicBaseUrl": "http://myhost.com/abc", "rewriteBasePath": false, "socketTimeout": 2000, "ssl": Object { @@ -56,8 +58,8 @@ Object { }, "uuid": undefined, "xsrf": Object { + "allowlist": Array [], "disableProtection": false, - "whitelist": Array [], }, } `; diff --git a/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.test.ts b/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.test.ts index 1c51564187442a..75d1bec48eea3b 100644 --- a/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.test.ts +++ b/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.test.ts @@ -90,13 +90,14 @@ describe('#get', () => { keepaliveTimeout: 5000, socketTimeout: 2000, port: 1234, + publicBaseUrl: 'https://myhost.com/abc', rewriteBasePath: false, ssl: { enabled: true, keyPassphrase: 'some-phrase', someNewValue: 'new' }, compression: { enabled: true }, someNotSupportedValue: 'val', xsrf: { disableProtection: false, - whitelist: [], + allowlist: [], }, }, }); @@ -113,13 +114,14 @@ describe('#get', () => { keepaliveTimeout: 5000, socketTimeout: 2000, port: 1234, + publicBaseUrl: 'http://myhost.com/abc', rewriteBasePath: false, ssl: { enabled: false, certificate: 'cert', key: 'key' }, compression: { enabled: true }, someNotSupportedValue: 'val', xsrf: { disableProtection: false, - whitelist: [], + allowlist: [], }, }, }); diff --git a/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.ts b/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.ts index e8fca8735a6d93..a13eb466129099 100644 --- a/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.ts +++ b/packages/kbn-config/src/legacy/legacy_object_to_config_adapter.ts @@ -84,6 +84,7 @@ export class LegacyObjectToConfigAdapter extends ObjectToConfigAdapter { maxPayload: configValue.maxPayloadBytes, name: configValue.name, port: configValue.port, + publicBaseUrl: configValue.publicBaseUrl, rewriteBasePath: configValue.rewriteBasePath, ssl: configValue.ssl, keepaliveTimeout: configValue.keepaliveTimeout, diff --git a/packages/kbn-dev-utils/jest.config.js b/packages/kbn-dev-utils/jest.config.js new file mode 100644 index 00000000000000..2b0cefe5e741f7 --- /dev/null +++ b/packages/kbn-dev-utils/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-dev-utils'], +}; diff --git a/packages/kbn-dev-utils/src/plugin_list/discover_plugins.ts b/packages/kbn-dev-utils/src/plugin_list/discover_plugins.ts index 9782067e61343c..30aaca6cfb7d77 100644 --- a/packages/kbn-dev-utils/src/plugin_list/discover_plugins.ts +++ b/packages/kbn-dev-utils/src/plugin_list/discover_plugins.ts @@ -38,7 +38,9 @@ export interface Plugin { export type Plugins = Plugin[]; const getReadmeName = (directory: string) => - Fs.readdirSync(directory).find((name) => name.toLowerCase() === 'readme.md'); + Fs.readdirSync(directory).find( + (name) => name.toLowerCase() === 'readme.md' || name.toLowerCase() === 'readme.mdx' + ); const getReadmeAsciidocName = (directory: string) => Fs.readdirSync(directory).find((name) => name.toLowerCase() === 'readme.asciidoc'); diff --git a/packages/kbn-dev-utils/src/precommit_hook/cli.ts b/packages/kbn-dev-utils/src/precommit_hook/cli.ts index 28347f379150f6..81b253a6ceae11 100644 --- a/packages/kbn-dev-utils/src/precommit_hook/cli.ts +++ b/packages/kbn-dev-utils/src/precommit_hook/cli.ts @@ -23,8 +23,9 @@ import { promisify } from 'util'; import { REPO_ROOT } from '@kbn/utils'; import { run } from '../run'; +import { createFailError } from '../run'; import { SCRIPT_SOURCE } from './script_source'; -import { getGitDir } from './get_git_dir'; +import { getGitDir, isCorrectGitVersionInstalled } from './git_utils'; const chmodAsync = promisify(chmod); const writeFileAsync = promisify(writeFile); @@ -32,6 +33,12 @@ const writeFileAsync = promisify(writeFile); run( async ({ log }) => { try { + if (!(await isCorrectGitVersionInstalled())) { + throw createFailError( + `We could not detect a git version in the required range. Please install a git version >= 2.5. Skipping Kibana pre-commit git hook installation.` + ); + } + const gitDir = await getGitDir(); const installPath = Path.resolve(REPO_ROOT, gitDir, 'hooks/pre-commit'); diff --git a/packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts b/packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts deleted file mode 100644 index f75c86f5100952..00000000000000 --- a/packages/kbn-dev-utils/src/precommit_hook/get_git_dir.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import execa from 'execa'; - -import { REPO_ROOT } from '@kbn/utils'; - -// Retrieves the correct location for the .git dir for -// every git setup (including git worktree) -export async function getGitDir() { - return ( - await execa('git', ['rev-parse', '--git-common-dir'], { - cwd: REPO_ROOT, - }) - ).stdout.trim(); -} diff --git a/packages/kbn-dev-utils/src/precommit_hook/git_utils.ts b/packages/kbn-dev-utils/src/precommit_hook/git_utils.ts new file mode 100644 index 00000000000000..739e4d89f9fb7b --- /dev/null +++ b/packages/kbn-dev-utils/src/precommit_hook/git_utils.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import execa from 'execa'; + +import { REPO_ROOT } from '@kbn/utils'; + +// Retrieves the correct location for the .git dir for +// every git setup (including git worktree) +export async function getGitDir() { + return ( + await execa('git', ['rev-parse', '--git-common-dir'], { + cwd: REPO_ROOT, + }) + ).stdout.trim(); +} + +// Checks if a correct git version is installed +export async function isCorrectGitVersionInstalled() { + const rawGitVersionStr = ( + await execa('git', ['--version'], { + cwd: REPO_ROOT, + }) + ).stdout.trim(); + + const match = rawGitVersionStr.match(/[0-9]+(\.[0-9]+)+/); + if (!match) { + return false; + } + + const [major, minor] = match[0].split('.').map((n) => parseInt(n, 10)); + return major > 2 || (major === 2 && minor >= 5); +} diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap b/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap index 56ad7de8588491..472fcb601118a0 100644 --- a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap +++ b/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap @@ -7,6 +7,7 @@ Object { "error": true, "info": true, "silent": true, + "success": true, "verbose": false, "warning": true, }, @@ -21,6 +22,7 @@ Object { "error": true, "info": false, "silent": true, + "success": false, "verbose": false, "warning": false, }, @@ -35,6 +37,7 @@ Object { "error": true, "info": true, "silent": true, + "success": true, "verbose": false, "warning": true, }, @@ -49,6 +52,7 @@ Object { "error": false, "info": false, "silent": true, + "success": false, "verbose": false, "warning": false, }, @@ -63,6 +67,7 @@ Object { "error": true, "info": true, "silent": true, + "success": true, "verbose": true, "warning": true, }, @@ -77,6 +82,7 @@ Object { "error": true, "info": false, "silent": true, + "success": false, "verbose": false, "warning": true, }, @@ -84,8 +90,8 @@ Object { } `; -exports[`throws error for invalid levels: bar 1`] = `"Invalid log level \\"bar\\" (expected one of silent,error,warning,info,debug,verbose)"`; +exports[`throws error for invalid levels: bar 1`] = `"Invalid log level \\"bar\\" (expected one of silent,error,warning,success,info,debug,verbose)"`; -exports[`throws error for invalid levels: foo 1`] = `"Invalid log level \\"foo\\" (expected one of silent,error,warning,info,debug,verbose)"`; +exports[`throws error for invalid levels: foo 1`] = `"Invalid log level \\"foo\\" (expected one of silent,error,warning,success,info,debug,verbose)"`; -exports[`throws error for invalid levels: warn 1`] = `"Invalid log level \\"warn\\" (expected one of silent,error,warning,info,debug,verbose)"`; +exports[`throws error for invalid levels: warn 1`] = `"Invalid log level \\"warn\\" (expected one of silent,error,warning,success,info,debug,verbose)"`; diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap b/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap index f5d084da6a4e0e..7ff982acafbe42 100644 --- a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap +++ b/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap @@ -170,7 +170,7 @@ exports[`level:warning/type:warning snapshots: output 1`] = ` " `; -exports[`throws error if created with invalid level 1`] = `"Invalid log level \\"foo\\" (expected one of silent,error,warning,info,debug,verbose)"`; +exports[`throws error if created with invalid level 1`] = `"Invalid log level \\"foo\\" (expected one of silent,error,warning,success,info,debug,verbose)"`; exports[`throws error if writeTo config is not defined or doesn't have a write method 1`] = `"ToolingLogTextWriter requires the \`writeTo\` option be set to a stream (like process.stdout)"`; diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts b/packages/kbn-dev-utils/src/tooling_log/log_levels.ts index 9e7d7ffe45134f..679c2aba478558 100644 --- a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts +++ b/packages/kbn-dev-utils/src/tooling_log/log_levels.ts @@ -17,8 +17,8 @@ * under the License. */ -export type LogLevel = 'silent' | 'error' | 'warning' | 'info' | 'debug' | 'verbose'; -const LEVELS: LogLevel[] = ['silent', 'error', 'warning', 'info', 'debug', 'verbose']; +const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose'] as const; +export type LogLevel = typeof LEVELS[number]; export function pickLevelFromFlags( flags: Record, diff --git a/packages/kbn-es-archiver/jest.config.js b/packages/kbn-es-archiver/jest.config.js new file mode 100644 index 00000000000000..e5df757f6637e0 --- /dev/null +++ b/packages/kbn-es-archiver/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-es-archiver'], +}; diff --git a/packages/kbn-es-archiver/package.json b/packages/kbn-es-archiver/package.json index 3cd07668635f1e..fed48440111581 100644 --- a/packages/kbn-es-archiver/package.json +++ b/packages/kbn-es-archiver/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@kbn/dev-utils": "link:../kbn-dev-utils", - "@kbn/test": "link:../kbn-test" + "@kbn/test": "link:../kbn-test", + "@kbn/utils": "link:../kbn-utils" } } \ No newline at end of file diff --git a/packages/kbn-es-archiver/src/actions/edit.ts b/packages/kbn-es-archiver/src/actions/edit.ts index 1194637b1ff89e..9a270fd3820f05 100644 --- a/packages/kbn-es-archiver/src/actions/edit.ts +++ b/packages/kbn-es-archiver/src/actions/edit.ts @@ -23,8 +23,7 @@ import { createGunzip, createGzip, Z_BEST_COMPRESSION } from 'zlib'; import { promisify } from 'util'; import globby from 'globby'; import { ToolingLog } from '@kbn/dev-utils'; - -import { createPromiseFromStreams } from '../lib/streams'; +import { createPromiseFromStreams } from '@kbn/utils'; const unlinkAsync = promisify(Fs.unlink); diff --git a/packages/kbn-es-archiver/src/actions/load.ts b/packages/kbn-es-archiver/src/actions/load.ts index c2f5f18a07e9b7..11d47437126b0c 100644 --- a/packages/kbn-es-archiver/src/actions/load.ts +++ b/packages/kbn-es-archiver/src/actions/load.ts @@ -23,7 +23,7 @@ import { Readable } from 'stream'; import { ToolingLog, KbnClient } from '@kbn/dev-utils'; import { Client } from 'elasticsearch'; -import { createPromiseFromStreams, concatStreamProviders } from '../lib/streams'; +import { createPromiseFromStreams, concatStreamProviders } from '@kbn/utils'; import { isGzip, diff --git a/packages/kbn-es-archiver/src/actions/rebuild_all.ts b/packages/kbn-es-archiver/src/actions/rebuild_all.ts index 470a566a6eef05..8abc24d5270418 100644 --- a/packages/kbn-es-archiver/src/actions/rebuild_all.ts +++ b/packages/kbn-es-archiver/src/actions/rebuild_all.ts @@ -22,8 +22,7 @@ import { stat, Stats, rename, createReadStream, createWriteStream } from 'fs'; import { Readable, Writable } from 'stream'; import { fromNode } from 'bluebird'; import { ToolingLog } from '@kbn/dev-utils'; - -import { createPromiseFromStreams } from '../lib/streams'; +import { createPromiseFromStreams } from '@kbn/utils'; import { prioritizeMappings, readDirectory, diff --git a/packages/kbn-es-archiver/src/actions/save.ts b/packages/kbn-es-archiver/src/actions/save.ts index 84a0ce09936d09..60a04a6123c92c 100644 --- a/packages/kbn-es-archiver/src/actions/save.ts +++ b/packages/kbn-es-archiver/src/actions/save.ts @@ -22,8 +22,8 @@ import { createWriteStream, mkdirSync } from 'fs'; import { Readable, Writable } from 'stream'; import { Client } from 'elasticsearch'; import { ToolingLog } from '@kbn/dev-utils'; +import { createListStream, createPromiseFromStreams } from '@kbn/utils'; -import { createListStream, createPromiseFromStreams } from '../lib/streams'; import { createStats, createGenerateIndexRecordsStream, diff --git a/packages/kbn-es-archiver/src/actions/unload.ts b/packages/kbn-es-archiver/src/actions/unload.ts index ae23ef21fb79f5..915f0906eb0d30 100644 --- a/packages/kbn-es-archiver/src/actions/unload.ts +++ b/packages/kbn-es-archiver/src/actions/unload.ts @@ -22,8 +22,8 @@ import { createReadStream } from 'fs'; import { Readable, Writable } from 'stream'; import { Client } from 'elasticsearch'; import { ToolingLog, KbnClient } from '@kbn/dev-utils'; +import { createPromiseFromStreams } from '@kbn/utils'; -import { createPromiseFromStreams } from '../lib/streams'; import { isGzip, createStats, diff --git a/packages/kbn-es-archiver/src/cli.ts b/packages/kbn-es-archiver/src/cli.ts index 87df07fe865bdc..1acb21748f773a 100644 --- a/packages/kbn-es-archiver/src/cli.ts +++ b/packages/kbn-es-archiver/src/cli.ts @@ -26,8 +26,9 @@ import Path from 'path'; import Url from 'url'; import readline from 'readline'; +import Fs from 'fs'; -import { RunWithCommands, createFlagError } from '@kbn/dev-utils'; +import { RunWithCommands, createFlagError, KbnClient, CA_CERT_PATH } from '@kbn/dev-utils'; import { readConfigFile } from '@kbn/test'; import legacyElasticsearch from 'elasticsearch'; @@ -40,13 +41,15 @@ export function runCli() { new RunWithCommands({ description: 'CLI to manage archiving/restoring data in elasticsearch', globalFlags: { - string: ['es-url', 'kibana-url', 'dir', 'config'], + string: ['es-url', 'kibana-url', 'dir', 'config', 'es-ca', 'kibana-ca'], help: ` --config path to an FTR config file that sets --es-url, --kibana-url, and --dir default: ${defaultConfigPath} --es-url url for Elasticsearch, prefer the --config flag --kibana-url url for Kibana, prefer the --config flag --dir where arechives are stored, prefer the --config flag + --kibana-ca if Kibana url points to https://localhost we default to the CA from @kbn/dev-utils, customize the CA with this flag + --es-ca if Elasticsearch url points to https://localhost we default to the CA from @kbn/dev-utils, customize the CA with this flag `, }, async extendContext({ log, flags, addCleanupTask }) { @@ -78,6 +81,40 @@ export function runCli() { throw createFlagError('--kibana-url or --config must be defined'); } + const kibanaCaPath = flags['kibana-ca']; + if (kibanaCaPath && typeof kibanaCaPath !== 'string') { + throw createFlagError('--kibana-ca must be a string'); + } + + let kibanaCa; + if (config.get('servers.kibana.certificateAuthorities') && !kibanaCaPath) { + kibanaCa = config.get('servers.kibana.certificateAuthorities'); + } else if (kibanaCaPath) { + kibanaCa = Fs.readFileSync(kibanaCaPath); + } else { + const { protocol, hostname } = Url.parse(kibanaUrl); + if (protocol === 'https:' && hostname === 'localhost') { + kibanaCa = Fs.readFileSync(CA_CERT_PATH); + } + } + + const esCaPath = flags['es-ca']; + if (esCaPath && typeof esCaPath !== 'string') { + throw createFlagError('--es-ca must be a string'); + } + + let esCa; + if (config.get('servers.elasticsearch.certificateAuthorities') && !esCaPath) { + esCa = config.get('servers.elasticsearch.certificateAuthorities'); + } else if (esCaPath) { + esCa = Fs.readFileSync(esCaPath); + } else { + const { protocol, hostname } = Url.parse(kibanaUrl); + if (protocol === 'https:' && hostname === 'localhost') { + esCa = Fs.readFileSync(CA_CERT_PATH); + } + } + let dir = flags.dir; if (dir && typeof dir !== 'string') { throw createFlagError('--dir must be a string'); @@ -91,15 +128,22 @@ export function runCli() { const client = new legacyElasticsearch.Client({ host: esUrl, + ssl: esCa ? { ca: esCa } : undefined, log: flags.verbose ? 'trace' : [], }); addCleanupTask(() => client.close()); + const kbnClient = new KbnClient({ + log, + url: kibanaUrl, + certificateAuthorities: kibanaCa ? [kibanaCa] : undefined, + }); + const esArchiver = new EsArchiver({ log, client, dataDir: dir, - kibanaUrl, + kbnClient, }); return { @@ -228,7 +272,7 @@ export function runCli() { output: process.stdout, }); - await new Promise((resolveInput) => { + await new Promise((resolveInput) => { rl.question(`Press enter when you're done`, () => { rl.close(); resolveInput(); diff --git a/packages/kbn-es-archiver/src/es_archiver.ts b/packages/kbn-es-archiver/src/es_archiver.ts index c6f890b963e3d7..6733a48f4b3701 100644 --- a/packages/kbn-es-archiver/src/es_archiver.ts +++ b/packages/kbn-es-archiver/src/es_archiver.ts @@ -29,27 +29,24 @@ import { editAction, } from './actions'; +interface Options { + client: Client; + dataDir: string; + log: ToolingLog; + kbnClient: KbnClient; +} + export class EsArchiver { private readonly client: Client; private readonly dataDir: string; private readonly log: ToolingLog; private readonly kbnClient: KbnClient; - constructor({ - client, - dataDir, - log, - kibanaUrl, - }: { - client: Client; - dataDir: string; - log: ToolingLog; - kibanaUrl: string; - }) { - this.client = client; - this.dataDir = dataDir; - this.log = log; - this.kbnClient = new KbnClient({ log, url: kibanaUrl }); + constructor(options: Options) { + this.client = options.client; + this.dataDir = options.dataDir; + this.log = options.log; + this.kbnClient = options.kbnClient; } /** diff --git a/packages/kbn-es-archiver/src/lib/archives/__tests__/format.ts b/packages/kbn-es-archiver/src/lib/archives/__tests__/format.ts index 044a0e82d9df2e..91c38d0dd1438e 100644 --- a/packages/kbn-es-archiver/src/lib/archives/__tests__/format.ts +++ b/packages/kbn-es-archiver/src/lib/archives/__tests__/format.ts @@ -21,8 +21,7 @@ import Stream, { Readable, Writable } from 'stream'; import { createGunzip } from 'zlib'; import expect from '@kbn/expect'; - -import { createListStream, createPromiseFromStreams, createConcatStream } from '../../streams'; +import { createListStream, createPromiseFromStreams, createConcatStream } from '@kbn/utils'; import { createFormatArchiveStreams } from '../format'; diff --git a/packages/kbn-es-archiver/src/lib/archives/__tests__/parse.ts b/packages/kbn-es-archiver/src/lib/archives/__tests__/parse.ts index 25b8fe46a81fc1..deaea5cd4532e7 100644 --- a/packages/kbn-es-archiver/src/lib/archives/__tests__/parse.ts +++ b/packages/kbn-es-archiver/src/lib/archives/__tests__/parse.ts @@ -21,8 +21,7 @@ import Stream, { PassThrough, Readable, Writable, Transform } from 'stream'; import { createGzip } from 'zlib'; import expect from '@kbn/expect'; - -import { createConcatStream, createListStream, createPromiseFromStreams } from '../../streams'; +import { createConcatStream, createListStream, createPromiseFromStreams } from '@kbn/utils'; import { createParseArchiveStreams } from '../parse'; diff --git a/packages/kbn-es-archiver/src/lib/archives/format.ts b/packages/kbn-es-archiver/src/lib/archives/format.ts index 3cd698c3f82c30..74c9561407c8d8 100644 --- a/packages/kbn-es-archiver/src/lib/archives/format.ts +++ b/packages/kbn-es-archiver/src/lib/archives/format.ts @@ -21,7 +21,7 @@ import { createGzip, Z_BEST_COMPRESSION } from 'zlib'; import { PassThrough } from 'stream'; import stringify from 'json-stable-stringify'; -import { createMapStream, createIntersperseStream } from '../streams'; +import { createMapStream, createIntersperseStream } from '@kbn/utils'; import { RECORD_SEPARATOR } from './constants'; export function createFormatArchiveStreams({ gzip = false }: { gzip?: boolean } = {}) { diff --git a/packages/kbn-es-archiver/src/lib/archives/parse.ts b/packages/kbn-es-archiver/src/lib/archives/parse.ts index 9236a618aa01ad..65b01f38eb83e8 100644 --- a/packages/kbn-es-archiver/src/lib/archives/parse.ts +++ b/packages/kbn-es-archiver/src/lib/archives/parse.ts @@ -24,7 +24,7 @@ import { createSplitStream, createReplaceStream, createMapStream, -} from '../streams'; +} from '@kbn/utils'; import { RECORD_SEPARATOR } from './constants'; diff --git a/packages/kbn-es-archiver/src/lib/docs/__tests__/generate_doc_records_stream.ts b/packages/kbn-es-archiver/src/lib/docs/__tests__/generate_doc_records_stream.ts index 3c5fc742a6e104..074333eb6028fa 100644 --- a/packages/kbn-es-archiver/src/lib/docs/__tests__/generate_doc_records_stream.ts +++ b/packages/kbn-es-archiver/src/lib/docs/__tests__/generate_doc_records_stream.ts @@ -20,8 +20,7 @@ import sinon from 'sinon'; import expect from '@kbn/expect'; import { delay } from 'bluebird'; - -import { createListStream, createPromiseFromStreams, createConcatStream } from '../../streams'; +import { createListStream, createPromiseFromStreams, createConcatStream } from '@kbn/utils'; import { createGenerateDocRecordsStream } from '../generate_doc_records_stream'; import { Progress } from '../../progress'; diff --git a/packages/kbn-es-archiver/src/lib/docs/__tests__/index_doc_records_stream.ts b/packages/kbn-es-archiver/src/lib/docs/__tests__/index_doc_records_stream.ts index 2b8eac5c271229..ac85681610c6ce 100644 --- a/packages/kbn-es-archiver/src/lib/docs/__tests__/index_doc_records_stream.ts +++ b/packages/kbn-es-archiver/src/lib/docs/__tests__/index_doc_records_stream.ts @@ -19,8 +19,7 @@ import expect from '@kbn/expect'; import { delay } from 'bluebird'; - -import { createListStream, createPromiseFromStreams } from '../../streams'; +import { createListStream, createPromiseFromStreams } from '@kbn/utils'; import { Progress } from '../../progress'; import { createIndexDocRecordsStream } from '../index_doc_records_stream'; diff --git a/packages/kbn-es-archiver/src/lib/indices/__tests__/create_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/__tests__/create_index_stream.ts index 27c28b2229aeca..b1a83046f40d6b 100644 --- a/packages/kbn-es-archiver/src/lib/indices/__tests__/create_index_stream.ts +++ b/packages/kbn-es-archiver/src/lib/indices/__tests__/create_index_stream.ts @@ -20,8 +20,7 @@ import expect from '@kbn/expect'; import sinon from 'sinon'; import Chance from 'chance'; - -import { createPromiseFromStreams, createConcatStream, createListStream } from '../../streams'; +import { createPromiseFromStreams, createConcatStream, createListStream } from '@kbn/utils'; import { createCreateIndexStream } from '../create_index_stream'; diff --git a/packages/kbn-es-archiver/src/lib/indices/__tests__/delete_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/__tests__/delete_index_stream.ts index 551b744415c830..3c9d866700005e 100644 --- a/packages/kbn-es-archiver/src/lib/indices/__tests__/delete_index_stream.ts +++ b/packages/kbn-es-archiver/src/lib/indices/__tests__/delete_index_stream.ts @@ -19,7 +19,7 @@ import sinon from 'sinon'; -import { createListStream, createPromiseFromStreams } from '../../streams'; +import { createListStream, createPromiseFromStreams } from '@kbn/utils'; import { createDeleteIndexStream } from '../delete_index_stream'; diff --git a/packages/kbn-es-archiver/src/lib/indices/__tests__/generate_index_records_stream.ts b/packages/kbn-es-archiver/src/lib/indices/__tests__/generate_index_records_stream.ts index cb3746c015dada..d2c9f1274e60fb 100644 --- a/packages/kbn-es-archiver/src/lib/indices/__tests__/generate_index_records_stream.ts +++ b/packages/kbn-es-archiver/src/lib/indices/__tests__/generate_index_records_stream.ts @@ -19,8 +19,7 @@ import sinon from 'sinon'; import expect from '@kbn/expect'; - -import { createListStream, createPromiseFromStreams, createConcatStream } from '../../streams'; +import { createListStream, createPromiseFromStreams, createConcatStream } from '@kbn/utils'; import { createStubClient, createStubStats } from './stubs'; diff --git a/packages/kbn-es-archiver/src/lib/records/__tests__/filter_records_stream.ts b/packages/kbn-es-archiver/src/lib/records/__tests__/filter_records_stream.ts index b23ff2e4e52acb..cf67ee2071c105 100644 --- a/packages/kbn-es-archiver/src/lib/records/__tests__/filter_records_stream.ts +++ b/packages/kbn-es-archiver/src/lib/records/__tests__/filter_records_stream.ts @@ -20,7 +20,7 @@ import Chance from 'chance'; import expect from '@kbn/expect'; -import { createListStream, createPromiseFromStreams, createConcatStream } from '../../streams'; +import { createListStream, createPromiseFromStreams, createConcatStream } from '@kbn/utils'; import { createFilterRecordsStream } from '../filter_records_stream'; diff --git a/packages/kbn-es-archiver/src/lib/streams/concat_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/concat_stream.test.js deleted file mode 100644 index 1498334013d1ab..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/concat_stream.test.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createListStream, createPromiseFromStreams, createConcatStream } from './'; - -describe('concatStream', () => { - test('accepts an initial value', async () => { - const output = await createPromiseFromStreams([ - createListStream([1, 2, 3]), - createConcatStream([0]), - ]); - - expect(output).toEqual([0, 1, 2, 3]); - }); - - describe(`combines using the previous value's concat method`, () => { - test('works with strings', async () => { - const output = await createPromiseFromStreams([ - createListStream(['a', 'b', 'c']), - createConcatStream(), - ]); - expect(output).toEqual('abc'); - }); - - test('works with arrays', async () => { - const output = await createPromiseFromStreams([ - createListStream([[1], [2, 3, 4], [10]]), - createConcatStream(), - ]); - expect(output).toEqual([1, 2, 3, 4, 10]); - }); - - test('works with a mixture, starting with array', async () => { - const output = await createPromiseFromStreams([ - createListStream([[], 1, 2, 3, 4, [5, 6, 7]]), - createConcatStream(), - ]); - expect(output).toEqual([1, 2, 3, 4, 5, 6, 7]); - }); - - test('fails when the value does not have a concat method', async () => { - let promise; - try { - promise = createPromiseFromStreams([createListStream([1, '1']), createConcatStream()]); - } catch (err) { - throw new Error('createPromiseFromStreams() should not fail synchronously'); - } - - try { - await promise; - throw new Error('Promise should have rejected'); - } catch (err) { - expect(err).toBeInstanceOf(Error); - expect(err.message).toContain('concat'); - } - }); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/concat_stream.ts b/packages/kbn-es-archiver/src/lib/streams/concat_stream.ts deleted file mode 100644 index 03dd894067afc5..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/concat_stream.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createReduceStream } from './reduce_stream'; - -/** - * Creates a Transform stream that consumes all provided - * values and concatenates them using each values `concat` - * method. - * - * Concatenate strings: - * createListStream(['f', 'o', 'o']) - * .pipe(createConcatStream()) - * .on('data', console.log) - * // logs "foo" - * - * Concatenate values into an array: - * createListStream([1,2,3]) - * .pipe(createConcatStream([])) - * .on('data', console.log) - * // logs "[1,2,3]" - */ -export function createConcatStream(initial: any) { - return createReduceStream((acc, chunk) => acc.concat(chunk), initial); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.test.js b/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.test.js deleted file mode 100644 index 878d645d9b4a79..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.test.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Readable } from 'stream'; - -import { concatStreamProviders } from './concat_stream_providers'; -import { createListStream } from './list_stream'; -import { createConcatStream } from './concat_stream'; -import { createPromiseFromStreams } from './promise_from_streams'; - -describe('concatStreamProviders() helper', () => { - test('writes the data from an array of stream providers into a destination stream in order', async () => { - const results = await createPromiseFromStreams([ - concatStreamProviders([ - () => createListStream(['foo', 'bar']), - () => createListStream(['baz']), - () => createListStream(['bug']), - ]), - createConcatStream(''), - ]); - - expect(results).toBe('foobarbazbug'); - }); - - test('emits the errors from a sub-stream to the destination', async () => { - const dest = concatStreamProviders([ - () => createListStream(['foo', 'bar']), - () => - new Readable({ - read() { - this.destroy(new Error('foo')); - }, - }), - ]); - - const errorListener = jest.fn(); - dest.on('error', errorListener); - - await expect(createPromiseFromStreams([dest])).rejects.toThrowErrorMatchingInlineSnapshot( - `"foo"` - ); - expect(errorListener.mock.calls).toMatchInlineSnapshot(` -Array [ - Array [ - [Error: foo], - ], -] -`); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.ts b/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.ts deleted file mode 100644 index be0768316b2930..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/concat_stream_providers.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { PassThrough, TransformOptions } from 'stream'; - -/** - * Write the data and errors from a list of stream providers - * to a single stream in order. Stream providers are only - * called right before they will be consumed, and only one - * provider will be active at a time. - */ -export function concatStreamProviders( - sourceProviders: Array<() => NodeJS.ReadableStream>, - options: TransformOptions = {} -) { - const destination = new PassThrough(options); - const queue = sourceProviders.slice(); - - (function pipeNext() { - const provider = queue.shift(); - - if (!provider) { - return; - } - - const source = provider(); - const isLast = !queue.length; - - // if there are more sources to pipe, hook - // into the source completion - if (!isLast) { - source.once('end', pipeNext); - } - - source - // proxy errors from the source to the destination - .once('error', (error) => destination.destroy(error)) - // pipe the source to the destination but only proxy the - // end event if this is the last source - .pipe(destination, { end: isLast }); - })(); - - return destination; -} diff --git a/packages/kbn-es-archiver/src/lib/streams/filter_stream.test.ts b/packages/kbn-es-archiver/src/lib/streams/filter_stream.test.ts deleted file mode 100644 index 28b7f2588628e7..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/filter_stream.test.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - createConcatStream, - createFilterStream, - createListStream, - createPromiseFromStreams, -} from './'; - -describe('createFilterStream()', () => { - test('calls the function with each item in the source stream', async () => { - const filter = jest.fn().mockReturnValue(true); - - await createPromiseFromStreams([createListStream(['a', 'b', 'c']), createFilterStream(filter)]); - - expect(filter).toMatchInlineSnapshot(` - [MockFunction] { - "calls": Array [ - Array [ - "a", - ], - Array [ - "b", - ], - Array [ - "c", - ], - ], - "results": Array [ - Object { - "type": "return", - "value": true, - }, - Object { - "type": "return", - "value": true, - }, - Object { - "type": "return", - "value": true, - }, - ], - } - `); - }); - - test('send the filtered values on the output stream', async () => { - const result = await createPromiseFromStreams([ - createListStream([1, 2, 3]), - createFilterStream((n) => n % 2 === 0), - createConcatStream([]), - ]); - - expect(result).toMatchInlineSnapshot(` - Array [ - 2, - ] - `); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/filter_stream.ts b/packages/kbn-es-archiver/src/lib/streams/filter_stream.ts deleted file mode 100644 index 738b9d5793d064..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/filter_stream.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -export function createFilterStream(fn: (obj: T) => boolean) { - return new Transform({ - objectMode: true, - async transform(obj, _, done) { - const canPushDownStream = fn(obj); - if (canPushDownStream) { - this.push(obj); - } - done(); - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.test.js deleted file mode 100644 index e11b36d77106a6..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.test.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - createPromiseFromStreams, - createListStream, - createIntersperseStream, - createConcatStream, -} from './'; - -describe('intersperseStream', () => { - test('places the intersperse value between each provided value', async () => { - expect( - await createPromiseFromStreams([ - createListStream(['to', 'be', 'or', 'not', 'to', 'be']), - createIntersperseStream(' '), - createConcatStream(), - ]) - ).toBe('to be or not to be'); - }); - - test('emits values as soon as possible, does not needlessly buffer', async () => { - const str = createIntersperseStream('y'); - const onData = jest.fn(); - str.on('data', onData); - - str.write('a'); - expect(onData).toHaveBeenCalledTimes(1); - expect(onData.mock.calls[0]).toEqual(['a']); - onData.mockClear(); - - str.write('b'); - expect(onData).toHaveBeenCalledTimes(2); - expect(onData.mock.calls[0]).toEqual(['y']); - expect(onData).toHaveBeenCalledTimes(2); - expect(onData.mock.calls[1]).toEqual(['b']); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.ts b/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.ts deleted file mode 100644 index eb2e3d3087d4ad..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/intersperse_stream.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -/** - * Create a Transform stream that receives values in object mode, - * and intersperses a chunk between each object received. - * - * This is useful for writing lists: - * - * createListStream(['foo', 'bar']) - * .pipe(createIntersperseStream('\n')) - * .pipe(process.stdout) // outputs "foo\nbar" - * - * Combine with a concat stream to get "join" like functionality: - * - * await createPromiseFromStreams([ - * createListStream(['foo', 'bar']), - * createIntersperseStream(' '), - * createConcatStream() - * ]) // produces a single value "foo bar" - */ -export function createIntersperseStream(intersperseChunk: any) { - let first = true; - - return new Transform({ - writableObjectMode: true, - readableObjectMode: true, - transform(chunk, _, callback) { - try { - if (first) { - first = false; - } else { - this.push(intersperseChunk); - } - - this.push(chunk); - callback(undefined); - } catch (err) { - callback(err); - } - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/list_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/list_stream.test.js deleted file mode 100644 index 12e20696b05101..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/list_stream.test.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createListStream } from './'; - -describe('listStream', () => { - test('provides the values in the initial list', async () => { - const str = createListStream([1, 2, 3, 4]); - const onData = jest.fn(); - str.on('data', onData); - - await new Promise((resolve) => str.on('end', resolve)); - - expect(onData).toHaveBeenCalledTimes(4); - expect(onData.mock.calls[0]).toEqual([1]); - expect(onData.mock.calls[1]).toEqual([2]); - expect(onData.mock.calls[2]).toEqual([3]); - expect(onData.mock.calls[3]).toEqual([4]); - }); - - test('does not modify the list passed', async () => { - const list = [1, 2, 3, 4]; - const str = createListStream(list); - str.resume(); - await new Promise((resolve) => str.on('end', resolve)); - expect(list).toEqual([1, 2, 3, 4]); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/list_stream.ts b/packages/kbn-es-archiver/src/lib/streams/list_stream.ts deleted file mode 100644 index c061b969b3c099..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/list_stream.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Readable } from 'stream'; - -/** - * Create a Readable stream that provides the items - * from a list as objects to subscribers - */ -export function createListStream(items: any | any[] = []) { - const queue: any[] = [].concat(items); - - return new Readable({ - objectMode: true, - read(size) { - queue.splice(0, size).forEach((item) => { - this.push(item); - }); - - if (!queue.length) { - this.push(null); - } - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/map_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/map_stream.test.js deleted file mode 100644 index d86da178f0c1b3..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/map_stream.test.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { delay } from 'bluebird'; - -import { createPromiseFromStreams } from './promise_from_streams'; -import { createListStream } from './list_stream'; -import { createMapStream } from './map_stream'; -import { createConcatStream } from './concat_stream'; - -describe('createMapStream()', () => { - test('calls the function with each item in the source stream', async () => { - const mapper = jest.fn(); - - await createPromiseFromStreams([createListStream(['a', 'b', 'c']), createMapStream(mapper)]); - - expect(mapper).toHaveBeenCalledTimes(3); - expect(mapper).toHaveBeenCalledWith('a', 0); - expect(mapper).toHaveBeenCalledWith('b', 1); - expect(mapper).toHaveBeenCalledWith('c', 2); - }); - - test('send the return value from the mapper on the output stream', async () => { - const result = await createPromiseFromStreams([ - createListStream([1, 2, 3]), - createMapStream((n) => n * 100), - createConcatStream([]), - ]); - - expect(result).toEqual([100, 200, 300]); - }); - - test('supports async mappers', async () => { - const result = await createPromiseFromStreams([ - createListStream([1, 2, 3]), - createMapStream(async (n, i) => { - await delay(n); - return n * i; - }), - createConcatStream([]), - ]); - - expect(result).toEqual([0, 2, 6]); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/map_stream.ts b/packages/kbn-es-archiver/src/lib/streams/map_stream.ts deleted file mode 100644 index e88c512a386535..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/map_stream.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -export function createMapStream(fn: (chunk: any, i: number) => T | Promise) { - let i = 0; - - return new Transform({ - objectMode: true, - async transform(value, _, done) { - try { - this.push(await fn(value, i++)); - done(); - } catch (err) { - done(err); - } - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.test.js b/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.test.js deleted file mode 100644 index e4d9835106f12c..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.test.js +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Readable, Writable, Duplex, Transform } from 'stream'; - -import { createListStream, createPromiseFromStreams, createReduceStream } from './'; - -describe('promiseFromStreams', () => { - test('pipes together an array of streams', async () => { - const str1 = createListStream([1, 2, 3]); - const str2 = createReduceStream((acc, n) => acc + n, 0); - const sumPromise = new Promise((resolve) => str2.once('data', resolve)); - createPromiseFromStreams([str1, str2]); - await new Promise((resolve) => str2.once('end', resolve)); - expect(await sumPromise).toBe(6); - }); - - describe('last stream is writable', () => { - test('waits for the last stream to finish writing', async () => { - let written = ''; - - await createPromiseFromStreams([ - createListStream(['a']), - new Writable({ - write(chunk, enc, cb) { - setTimeout(() => { - written += chunk; - cb(); - }, 100); - }, - }), - ]); - - expect(written).toBe('a'); - }); - - test('resolves to undefined', async () => { - const result = await createPromiseFromStreams([ - createListStream(['a']), - new Writable({ - write(chunk, enc, cb) { - cb(); - }, - }), - ]); - - expect(result).toBe(undefined); - }); - }); - - describe('last stream is readable', () => { - test(`resolves to it's final value`, async () => { - const result = await createPromiseFromStreams([createListStream(['a', 'b', 'c'])]); - - expect(result).toBe('c'); - }); - }); - - describe('last stream is duplex', () => { - test('waits for writing and resolves to final value', async () => { - let written = ''; - - const duplexReadQueue = []; - const duplexItemsToPush = ['foo', 'bar', null]; - const result = await createPromiseFromStreams([ - createListStream(['a', 'b', 'c']), - new Duplex({ - async read() { - const result = await duplexReadQueue.shift(); - this.push(result); - }, - - write(chunk, enc, cb) { - duplexReadQueue.push( - new Promise((resolve) => { - setTimeout(() => { - written += chunk; - cb(); - resolve(duplexItemsToPush.shift()); - }, 50); - }) - ); - }, - }).setEncoding('utf8'), - ]); - - expect(written).toEqual('abc'); - expect(result).toBe('bar'); - }); - }); - - describe('error handling', () => { - test('read stream gets destroyed when transform stream fails', async () => { - let destroyCalled = false; - const readStream = new Readable({ - read() { - this.push('a'); - this.push('b'); - this.push('c'); - this.push(null); - }, - destroy() { - destroyCalled = true; - }, - }); - const transformStream = new Transform({ - transform(chunk, enc, done) { - done(new Error('Test error')); - }, - }); - try { - await createPromiseFromStreams([readStream, transformStream]); - throw new Error('Should fail'); - } catch (e) { - expect(e.message).toBe('Test error'); - expect(destroyCalled).toBe(true); - } - }); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.ts b/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.ts deleted file mode 100644 index fefb18be147805..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/promise_from_streams.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * Take an array of streams, pipe the output - * from each one into the next, listening for - * errors from any of the streams, and then resolve - * the promise once the final stream has finished - * writing/reading. - * - * If the last stream is readable, it's final value - * will be provided as the promise value. - * - * Errors emitted from any stream will cause - * the promise to be rejected with that error. - */ - -import { pipeline, Writable } from 'stream'; -import { promisify } from 'util'; - -const asyncPipeline = promisify(pipeline); - -export async function createPromiseFromStreams(streams: any): Promise { - let finalChunk: any; - const last = streams[streams.length - 1]; - if (typeof last.read !== 'function' && streams.length === 1) { - // For a nicer error than what stream.pipeline throws - throw new Error('A minimum of 2 streams is required when a non-readable stream is given'); - } - if (typeof last.read === 'function') { - // We are pushing a writable stream to capture the last chunk - streams.push( - new Writable({ - // Use object mode even when "last" stream isn't. This allows to - // capture the last chunk as-is. - objectMode: true, - write(chunk, _, done) { - finalChunk = chunk; - done(); - }, - }) - ); - } - - await asyncPipeline(...(streams as [any])); - - return finalChunk; -} diff --git a/packages/kbn-es-archiver/src/lib/streams/reduce_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/reduce_stream.test.js deleted file mode 100644 index 2c073f67f82a89..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/reduce_stream.test.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createReduceStream, createPromiseFromStreams, createListStream } from './'; - -const promiseFromEvent = (name, emitter) => - new Promise((resolve) => emitter.on(name, () => resolve(name))); - -describe('reduceStream', () => { - test('calls the reducer for each item provided', async () => { - const stub = jest.fn(); - await createPromiseFromStreams([ - createListStream([1, 2, 3]), - createReduceStream((val, chunk, enc) => { - stub(val, chunk, enc); - return chunk; - }, 0), - ]); - expect(stub).toHaveBeenCalledTimes(3); - expect(stub.mock.calls[0]).toEqual([0, 1, 'utf8']); - expect(stub.mock.calls[1]).toEqual([1, 2, 'utf8']); - expect(stub.mock.calls[2]).toEqual([2, 3, 'utf8']); - }); - - test('provides the return value of the last iteration of the reducer', async () => { - const result = await createPromiseFromStreams([ - createListStream('abcdefg'.split('')), - createReduceStream((acc) => acc + 1, 0), - ]); - expect(result).toBe(7); - }); - - test('emits an error if an iteration fails', async () => { - const reduce = createReduceStream((acc, i) => expect(i).toBe(1), 0); - const errorEvent = promiseFromEvent('error', reduce); - - reduce.write(1); - reduce.write(2); - reduce.resume(); - await errorEvent; - }); - - test('stops calling the reducer if an iteration fails, emits no data', async () => { - const reducer = jest.fn((acc, i) => { - if (i < 100) return acc + i; - else throw new Error(i); - }); - const reduce$ = createReduceStream(reducer, 0); - - const dataStub = jest.fn(); - const errorStub = jest.fn(); - reduce$.on('data', dataStub); - reduce$.on('error', errorStub); - const endEvent = promiseFromEvent('end', reduce$); - - reduce$.write(1); - reduce$.write(2); - reduce$.write(300); - reduce$.write(400); - reduce$.write(1000); - reduce$.end(); - - await endEvent; - expect(reducer).toHaveBeenCalledTimes(3); - expect(dataStub).toHaveBeenCalledTimes(0); - expect(errorStub).toHaveBeenCalledTimes(1); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/reduce_stream.ts b/packages/kbn-es-archiver/src/lib/streams/reduce_stream.ts deleted file mode 100644 index d9458e9a11c33a..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/reduce_stream.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -/** - * Create a transform stream that consumes each chunk it receives - * and passes it to the reducer, which will return the new value - * for the stream. Once all chunks have been received the reduce - * stream provides the result of final call to the reducer to - * subscribers. - */ -export function createReduceStream( - reducer: (acc: any, chunk: any, env: string) => any, - initial: any -) { - let i = -1; - let value = initial; - - // if the reducer throws an error then the value is - // considered invalid and the stream will never provide - // it to subscribers. We will also stop calling the - // reducer for any new data that is provided to us - let failed = false; - - if (typeof reducer !== 'function') { - throw new TypeError('reducer must be a function'); - } - - return new Transform({ - readableObjectMode: true, - writableObjectMode: true, - async transform(chunk, enc, callback) { - try { - if (failed) { - return callback(); - } - - i += 1; - if (i === 0 && initial === undefined) { - value = chunk; - } else { - value = await reducer(value, chunk, enc); - } - - callback(); - } catch (err) { - failed = true; - callback(err); - } - }, - - flush(callback) { - if (!failed) { - this.push(value); - } - - callback(); - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/replace_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/replace_stream.test.js deleted file mode 100644 index 01b89f93e5af06..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/replace_stream.test.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { - createReplaceStream, - createConcatStream, - createPromiseFromStreams, - createListStream, - createMapStream, -} from './'; - -async function concatToString(streams) { - return await createPromiseFromStreams([ - ...streams, - createMapStream((buff) => buff.toString('utf8')), - createConcatStream(''), - ]); -} - -describe('replaceStream', () => { - test('produces buffers when it receives buffers', async () => { - const chunks = await createPromiseFromStreams([ - createListStream([Buffer.from('foo'), Buffer.from('bar')]), - createReplaceStream('o', '0'), - createConcatStream([]), - ]); - - chunks.forEach((chunk) => { - expect(chunk).toBeInstanceOf(Buffer); - }); - }); - - test('produces buffers when it receives strings', async () => { - const chunks = await createPromiseFromStreams([ - createListStream(['foo', 'bar']), - createReplaceStream('o', '0'), - createConcatStream([]), - ]); - - chunks.forEach((chunk) => { - expect(chunk).toBeInstanceOf(Buffer); - }); - }); - - test('expects toReplace to be a string', () => { - expect(() => createReplaceStream(Buffer.from('foo'))).toThrowError(/be a string/); - }); - - test('replaces multiple single-char instances in a single chunk', async () => { - expect( - await concatToString([ - createListStream([Buffer.from('f00 bar')]), - createReplaceStream('0', 'o'), - ]) - ).toBe('foo bar'); - }); - - test('replaces multiple single-char instances in multiple chunks', async () => { - expect( - await concatToString([ - createListStream([Buffer.from('f0'), Buffer.from('0 bar')]), - createReplaceStream('0', 'o'), - ]) - ).toBe('foo bar'); - }); - - test('replaces single multi-char instances in single chunks', async () => { - expect( - await concatToString([ - createListStream([Buffer.from('f0'), Buffer.from('0 bar')]), - createReplaceStream('0', 'o'), - ]) - ).toBe('foo bar'); - }); - - test('replaces multiple multi-char instances in single chunks', async () => { - expect( - await concatToString([ - createListStream([Buffer.from('foo ba'), Buffer.from('r b'), Buffer.from('az bar')]), - createReplaceStream('bar', '*'), - ]) - ).toBe('foo * baz *'); - }); - - test('replaces multi-char instance that stretches multiple chunks', async () => { - expect( - await concatToString([ - createListStream([ - Buffer.from('foo supe'), - Buffer.from('rcalifra'), - Buffer.from('gilistic'), - Buffer.from('expialid'), - Buffer.from('ocious bar'), - ]), - createReplaceStream('supercalifragilisticexpialidocious', '*'), - ]) - ).toBe('foo * bar'); - }); - - test('ignores missing multi-char instance', async () => { - expect( - await concatToString([ - createListStream([ - Buffer.from('foo supe'), - Buffer.from('rcalifra'), - Buffer.from('gili stic'), - Buffer.from('expialid'), - Buffer.from('ocious bar'), - ]), - createReplaceStream('supercalifragilisticexpialidocious', '*'), - ]) - ).toBe('foo supercalifragili sticexpialidocious bar'); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/replace_stream.ts b/packages/kbn-es-archiver/src/lib/streams/replace_stream.ts deleted file mode 100644 index fe2ba1fcdf31c9..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/replace_stream.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -export function createReplaceStream(toReplace: string, replacement: string) { - if (typeof toReplace !== 'string') { - throw new TypeError('toReplace must be a string'); - } - - let buffer = Buffer.alloc(0); - return new Transform({ - objectMode: false, - async transform(value, _, done) { - try { - buffer = Buffer.concat([buffer, value], buffer.length + value.length); - - while (true) { - // try to find the next instance of `toReplace` in buffer - const index = buffer.indexOf(toReplace); - - // if there is no next instance, break - if (index === -1) { - break; - } - - // flush everything to the left of the next instance - // of `toReplace` - this.push(buffer.slice(0, index)); - - // then flush an instance of `replacement` - this.push(replacement); - - // and finally update the buffer to include everything - // to the right of `toReplace`, dropping to replace from the buffer - buffer = buffer.slice(index + toReplace.length); - } - - // until now we have only flushed data that is to the left - // of a discovered instance of `toReplace`. If `toReplace` is - // never found this would lead to us buffering the entire stream. - // - // Instead, we only keep enough buffer to complete a potentially - // partial instance of `toReplace` - if (buffer.length > toReplace.length) { - // the entire buffer except the last `toReplace.length` bytes - // so that if all but one byte from `toReplace` is in the buffer, - // and the next chunk delivers the necessary byte, the buffer will then - // contain a complete `toReplace` token. - this.push(buffer.slice(0, buffer.length - toReplace.length)); - buffer = buffer.slice(-toReplace.length); - } - - done(); - } catch (err) { - done(err); - } - }, - - flush(callback) { - if (buffer.length) { - this.push(buffer); - } - - callback(); - }, - }); -} diff --git a/packages/kbn-es-archiver/src/lib/streams/split_stream.test.js b/packages/kbn-es-archiver/src/lib/streams/split_stream.test.js deleted file mode 100644 index e0736d220ba5ca..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/split_stream.test.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createSplitStream, createConcatStream, createPromiseFromStreams } from './'; - -async function split(stream, input) { - const concat = createConcatStream(); - concat.write([]); - stream.pipe(concat); - const output = createPromiseFromStreams([concat]); - - input.forEach((i) => { - stream.write(i); - }); - stream.end(); - - return await output; -} - -describe('splitStream', () => { - test('splits buffers, produces strings', async () => { - const output = await split(createSplitStream('&'), [Buffer.from('foo&bar')]); - expect(output).toEqual(['foo', 'bar']); - }); - - test('supports mixed input', async () => { - const output = await split(createSplitStream('&'), [Buffer.from('foo&b'), 'ar']); - expect(output).toEqual(['foo', 'bar']); - }); - - test('supports buffer split chunks', async () => { - const output = await split(createSplitStream(Buffer.from('&')), ['foo&b', 'ar']); - expect(output).toEqual(['foo', 'bar']); - }); - - test('splits provided values by a delimiter', async () => { - const output = await split(createSplitStream('&'), ['foo&b', 'ar']); - expect(output).toEqual(['foo', 'bar']); - }); - - test('handles multi-character delimiters', async () => { - const output = await split(createSplitStream('oo'), ['foo&b', 'ar']); - expect(output).toEqual(['f', '&bar']); - }); - - test('handles delimiters that span multiple chunks', async () => { - const output = await split(createSplitStream('ba'), ['foo&b', 'ar']); - expect(output).toEqual(['foo&', 'r']); - }); - - test('produces an empty chunk if the split char is at the end of the input', async () => { - const output = await split(createSplitStream('&bar'), ['foo&b', 'ar']); - expect(output).toEqual(['foo', '']); - }); -}); diff --git a/packages/kbn-es-archiver/src/lib/streams/split_stream.ts b/packages/kbn-es-archiver/src/lib/streams/split_stream.ts deleted file mode 100644 index 1c9b59449bd927..00000000000000 --- a/packages/kbn-es-archiver/src/lib/streams/split_stream.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Transform } from 'stream'; - -/** - * Creates a Transform stream that consumes a stream of Buffers - * and produces a stream of strings (in object mode) by splitting - * the received bytes using the splitChunk. - * - * Ways this is behaves like String#split: - * - instances of splitChunk are removed from the input - * - splitChunk can be on any size - * - if there are no bytes found after the last splitChunk - * a final empty chunk is emitted - * - * Ways this deviates from String#split: - * - splitChunk cannot be a regexp - * - an empty string or Buffer will not produce a stream of individual - * bytes like `string.split('')` would - */ -export function createSplitStream(splitChunk: string) { - let unsplitBuffer = Buffer.alloc(0); - - return new Transform({ - writableObjectMode: false, - readableObjectMode: true, - transform(chunk, _, callback) { - try { - let i; - let toSplit = Buffer.concat([unsplitBuffer, chunk]); - while ((i = toSplit.indexOf(splitChunk)) !== -1) { - const slice = toSplit.slice(0, i); - toSplit = toSplit.slice(i + splitChunk.length); - this.push(slice.toString('utf8')); - } - - unsplitBuffer = toSplit; - callback(undefined); - } catch (err) { - callback(err); - } - }, - - flush(callback) { - try { - this.push(unsplitBuffer.toString('utf8')); - - callback(undefined); - } catch (err) { - callback(err); - } - }, - }); -} diff --git a/packages/kbn-es/jest.config.js b/packages/kbn-es/jest.config.js new file mode 100644 index 00000000000000..2c09b5400369dd --- /dev/null +++ b/packages/kbn-es/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-es'], +}; diff --git a/packages/kbn-i18n/jest.config.js b/packages/kbn-i18n/jest.config.js new file mode 100644 index 00000000000000..dff8b872bdfe08 --- /dev/null +++ b/packages/kbn-i18n/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-i18n'], + testRunner: 'jasmine2', +}; diff --git a/packages/kbn-interpreter/jest.config.js b/packages/kbn-interpreter/jest.config.js new file mode 100644 index 00000000000000..d2f6127ccff79c --- /dev/null +++ b/packages/kbn-interpreter/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-interpreter'], +}; diff --git a/packages/kbn-legacy-logging/jest.config.js b/packages/kbn-legacy-logging/jest.config.js new file mode 100644 index 00000000000000..f33205439e134c --- /dev/null +++ b/packages/kbn-legacy-logging/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-legacy-logging'], +}; diff --git a/packages/kbn-legacy-logging/package.json b/packages/kbn-legacy-logging/package.json index 9311b3e2a77b37..808fedc788d944 100644 --- a/packages/kbn-legacy-logging/package.json +++ b/packages/kbn-legacy-logging/package.json @@ -10,6 +10,6 @@ "kbn:watch": "yarn build --watch" }, "dependencies": { - "@kbn/std": "link:../kbn-std" + "@kbn/utils": "link:../kbn-utils" } } diff --git a/packages/kbn-legacy-logging/src/legacy_logging_server.ts b/packages/kbn-legacy-logging/src/legacy_logging_server.ts index 45e4bda0b007c0..1533bde4fc17b7 100644 --- a/packages/kbn-legacy-logging/src/legacy_logging_server.ts +++ b/packages/kbn-legacy-logging/src/legacy_logging_server.ts @@ -18,7 +18,7 @@ */ import { ServerExtType, Server } from '@hapi/hapi'; -import Podium from 'podium'; +import Podium from '@hapi/podium'; import { setupLogging } from './setup_logging'; import { attachMetaData } from './metadata'; import { legacyLoggingConfigSchema } from './schema'; @@ -117,11 +117,18 @@ export class LegacyLoggingServer { public log({ level, context, message, error, timestamp, meta = {} }: LogRecord) { const { tags = [], ...metadata } = meta; - this.events.emit('log', { - data: getDataToLog(error, metadata, message), - tags: [getLegacyLogLevel(level), ...context.split('.'), ...tags], - timestamp: timestamp.getTime(), - }); + this.events + .emit('log', { + data: getDataToLog(error, metadata, message), + tags: [getLegacyLogLevel(level), ...context.split('.'), ...tags], + timestamp: timestamp.getTime(), + }) + // @ts-expect-error @hapi/podium emit is actually an async function + .catch((err) => { + // eslint-disable-next-line no-console + console.error('An unexpected error occurred while writing to the log:', err.stack); + process.exit(1); + }); } public stop() { diff --git a/packages/kbn-legacy-logging/src/log_format_json.test.ts b/packages/kbn-legacy-logging/src/log_format_json.test.ts index f762daf01e5fa9..b31c45535e1a9f 100644 --- a/packages/kbn-legacy-logging/src/log_format_json.test.ts +++ b/packages/kbn-legacy-logging/src/log_format_json.test.ts @@ -20,7 +20,7 @@ import moment from 'moment'; import { attachMetaData } from './metadata'; -import { createListStream, createPromiseFromStreams } from './test_utils'; +import { createListStream, createPromiseFromStreams } from '@kbn/utils'; import { KbnLoggerJsonFormat } from './log_format_json'; const time = +moment('2010-01-01T05:15:59Z', moment.ISO_8601); diff --git a/packages/kbn-legacy-logging/src/log_format_string.test.ts b/packages/kbn-legacy-logging/src/log_format_string.test.ts index 0ed233228c1fd9..d11a4a038d49a9 100644 --- a/packages/kbn-legacy-logging/src/log_format_string.test.ts +++ b/packages/kbn-legacy-logging/src/log_format_string.test.ts @@ -20,7 +20,7 @@ import moment from 'moment'; import { attachMetaData } from './metadata'; -import { createListStream, createPromiseFromStreams } from './test_utils'; +import { createListStream, createPromiseFromStreams } from '@kbn/utils'; import { KbnLoggerStringFormat } from './log_format_string'; const time = +moment('2010-01-01T05:15:59Z', moment.ISO_8601); diff --git a/packages/kbn-legacy-logging/src/log_format_string.ts b/packages/kbn-legacy-logging/src/log_format_string.ts index 3f024fac551199..b4217c37b960e3 100644 --- a/packages/kbn-legacy-logging/src/log_format_string.ts +++ b/packages/kbn-legacy-logging/src/log_format_string.ts @@ -54,7 +54,7 @@ const type = _.memoize((t: string) => { return color(t)(_.pad(t, 7).slice(0, 7)); }); -const workerType = process.env.kbnWorkerType ? `${type(process.env.kbnWorkerType)} ` : ''; +const prefix = process.env.isDevCliChild ? `${type('server')} ` : ''; export class KbnLoggerStringFormat extends BaseLogFormat { format(data: Record) { @@ -71,6 +71,6 @@ export class KbnLoggerStringFormat extends BaseLogFormat { return s + `[${color(t)(t)}]`; }, ''); - return `${workerType}${type(data.type)} [${time}] ${tags} ${msg}`; + return `${prefix}${type(data.type)} [${time}] ${tags} ${msg}`; } } diff --git a/packages/kbn-legacy-logging/src/log_reporter.test.ts b/packages/kbn-legacy-logging/src/log_reporter.test.ts new file mode 100644 index 00000000000000..4fa2922c7824ee --- /dev/null +++ b/packages/kbn-legacy-logging/src/log_reporter.test.ts @@ -0,0 +1,142 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import os from 'os'; +import path from 'path'; +import fs from 'fs'; + +import stripAnsi from 'strip-ansi'; + +import { getLogReporter } from './log_reporter'; + +const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + +describe('getLogReporter', () => { + it('should log to stdout (not json)', async () => { + const lines: string[] = []; + const origWrite = process.stdout.write; + process.stdout.write = (buffer: string | Uint8Array): boolean => { + lines.push(stripAnsi(buffer.toString()).trim()); + return true; + }; + + const loggerStream = getLogReporter({ + config: { + json: false, + dest: 'stdout', + filter: {}, + }, + events: { log: '*' }, + }); + + loggerStream.end({ event: 'log', tags: ['foo'], data: 'hello world' }); + + await sleep(500); + + process.stdout.write = origWrite; + expect(lines.length).toBe(1); + expect(lines[0]).toMatch(/^log \[[^\]]*\] \[foo\] hello world$/); + }); + + it('should log to stdout (as json)', async () => { + const lines: string[] = []; + const origWrite = process.stdout.write; + process.stdout.write = (buffer: string | Uint8Array): boolean => { + lines.push(JSON.parse(buffer.toString().trim())); + return true; + }; + + const loggerStream = getLogReporter({ + config: { + json: true, + dest: 'stdout', + filter: {}, + }, + events: { log: '*' }, + }); + + loggerStream.end({ event: 'log', tags: ['foo'], data: 'hello world' }); + + await sleep(500); + + process.stdout.write = origWrite; + expect(lines.length).toBe(1); + expect(lines[0]).toMatchObject({ + type: 'log', + tags: ['foo'], + message: 'hello world', + }); + }); + + it('should log to custom file (not json)', async () => { + const dir = os.tmpdir(); + const logfile = `dest-${Date.now()}.log`; + const dest = path.join(dir, logfile); + + const loggerStream = getLogReporter({ + config: { + json: false, + dest, + filter: {}, + }, + events: { log: '*' }, + }); + + loggerStream.end({ event: 'log', tags: ['foo'], data: 'hello world' }); + + await sleep(500); + + const lines = stripAnsi(fs.readFileSync(dest, { encoding: 'utf8' })) + .trim() + .split(os.EOL); + expect(lines.length).toBe(1); + expect(lines[0]).toMatch(/^log \[[^\]]*\] \[foo\] hello world$/); + }); + + it('should log to custom file (as json)', async () => { + const dir = os.tmpdir(); + const logfile = `dest-${Date.now()}.log`; + const dest = path.join(dir, logfile); + + const loggerStream = getLogReporter({ + config: { + json: true, + dest, + filter: {}, + }, + events: { log: '*' }, + }); + + loggerStream.end({ event: 'log', tags: ['foo'], data: 'hello world' }); + + await sleep(500); + + const lines = fs + .readFileSync(dest, { encoding: 'utf8' }) + .trim() + .split(os.EOL) + .map((data) => JSON.parse(data)); + expect(lines.length).toBe(1); + expect(lines[0]).toMatchObject({ + type: 'log', + tags: ['foo'], + message: 'hello world', + }); + }); +}); diff --git a/packages/kbn-legacy-logging/src/log_reporter.ts b/packages/kbn-legacy-logging/src/log_reporter.ts index 8ecaf348bac04c..f0075b431b83d4 100644 --- a/packages/kbn-legacy-logging/src/log_reporter.ts +++ b/packages/kbn-legacy-logging/src/log_reporter.ts @@ -17,9 +17,11 @@ * under the License. */ +import { createWriteStream } from 'fs'; +import { pipeline } from 'stream'; + // @ts-expect-error missing type def import { Squeeze } from '@hapi/good-squeeze'; -import { createWriteStream as writeStr, WriteStream } from 'fs'; import { KbnLoggerJsonFormat } from './log_format_json'; import { KbnLoggerStringFormat } from './log_format_string'; @@ -31,21 +33,28 @@ export function getLogReporter({ events, config }: { events: any; config: LogFor const format = config.json ? new KbnLoggerJsonFormat(config) : new KbnLoggerStringFormat(config); const logInterceptor = new LogInterceptor(); - let dest: WriteStream | NodeJS.WritableStream; if (config.dest === 'stdout') { - dest = process.stdout; + pipeline(logInterceptor, squeeze, format, onFinished); + // The `pipeline` function is used to properly close all streams in the + // pipeline in case one of them ends or fails. Since stdout obviously + // shouldn't be closed in case of a failure in one of the other streams, + // we're not including that in the call to `pipeline`, but rely on the old + // `pipe` function instead. + format.pipe(process.stdout); } else { - dest = writeStr(config.dest, { + const dest = createWriteStream(config.dest, { flags: 'a', encoding: 'utf8', }); - - logInterceptor.on('end', () => { - dest.end(); - }); + pipeline(logInterceptor, squeeze, format, dest, onFinished); } - logInterceptor.pipe(squeeze).pipe(format).pipe(dest); - return logInterceptor; } + +function onFinished(err: NodeJS.ErrnoException | null) { + if (err) { + // eslint-disable-next-line no-console + console.error('An unexpected error occurred in the logging pipeline:', err.stack); + } +} diff --git a/packages/kbn-legacy-logging/src/rotate/index.ts b/packages/kbn-legacy-logging/src/rotate/index.ts index 2387fc530e58bf..9a83c625b9431b 100644 --- a/packages/kbn-legacy-logging/src/rotate/index.ts +++ b/packages/kbn-legacy-logging/src/rotate/index.ts @@ -17,7 +17,6 @@ * under the License. */ -import { isMaster, isWorker } from 'cluster'; import { Server } from '@hapi/hapi'; import { LogRotator } from './log_rotator'; import { LegacyLoggingConfig } from '../schema'; @@ -30,12 +29,6 @@ export async function setupLoggingRotate(server: Server, config: LegacyLoggingCo return; } - // We just want to start the logging rotate service once - // and we choose to use the master (prod) or the worker server (dev) - if (!isMaster && isWorker && process.env.kbnWorkerType !== 'server') { - return; - } - // We don't want to run logging rotate server if // we are not logging to a file if (config.dest === 'stdout') { diff --git a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts index 54181e30d6007b..fc2c088f01ddea 100644 --- a/packages/kbn-legacy-logging/src/rotate/log_rotator.ts +++ b/packages/kbn-legacy-logging/src/rotate/log_rotator.ts @@ -18,7 +18,6 @@ */ import * as chokidar from 'chokidar'; -import { isMaster } from 'cluster'; import fs from 'fs'; import { Server } from '@hapi/hapi'; import { throttle } from 'lodash'; @@ -351,22 +350,14 @@ export class LogRotator { } _sendReloadLogConfigSignal() { - if (isMaster) { - (process as NodeJS.EventEmitter).emit('SIGHUP'); + if (!process.env.isDevCliChild || !process.send) { + process.emit('SIGHUP', 'SIGHUP'); return; } // Send a special message to the cluster manager // so it can forward it correctly // It will only run when we are under cluster mode (not under a production environment) - if (!process.send) { - this.log( - ['error', 'logging:rotate'], - 'For some unknown reason process.send is not defined, the rotation was not successful' - ); - return; - } - process.send(['RELOAD_LOGGING_CONFIG_FROM_SERVER_WORKER']); } } diff --git a/packages/kbn-legacy-logging/src/setup_logging.ts b/packages/kbn-legacy-logging/src/setup_logging.ts index 103e81249a136d..153e7a0f207c19 100644 --- a/packages/kbn-legacy-logging/src/setup_logging.ts +++ b/packages/kbn-legacy-logging/src/setup_logging.ts @@ -18,7 +18,7 @@ */ // @ts-expect-error missing typedef -import good from '@elastic/good'; +import { plugin as good } from '@elastic/good'; import { Server } from '@hapi/hapi'; import { LegacyLoggingConfig } from './schema'; import { getLoggingConfiguration } from './get_logging_config'; @@ -34,7 +34,7 @@ export async function setupLogging( // thrown every time we start the server. // In order to keep using the legacy logger until we remove it I'm just adding // a new hard limit here. - process.stdout.setMaxListeners(25); + process.stdout.setMaxListeners(40); return await server.register({ plugin: good, diff --git a/packages/kbn-legacy-logging/src/test_utils/index.ts b/packages/kbn-legacy-logging/src/test_utils/index.ts deleted file mode 100644 index f13c869b563a29..00000000000000 --- a/packages/kbn-legacy-logging/src/test_utils/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { createListStream, createPromiseFromStreams } from './streams'; diff --git a/packages/kbn-legacy-logging/src/test_utils/streams.ts b/packages/kbn-legacy-logging/src/test_utils/streams.ts deleted file mode 100644 index 0f37a13f8a478b..00000000000000 --- a/packages/kbn-legacy-logging/src/test_utils/streams.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { pipeline, Writable, Readable } from 'stream'; - -/** - * Create a Readable stream that provides the items - * from a list as objects to subscribers - * - * @param {Array} items - the list of items to provide - * @return {Readable} - */ -export function createListStream(items: T | T[] = []) { - const queue = Array.isArray(items) ? [...items] : [items]; - - return new Readable({ - objectMode: true, - read(size) { - queue.splice(0, size).forEach((item) => { - this.push(item); - }); - - if (!queue.length) { - this.push(null); - } - }, - }); -} - -/** - * Take an array of streams, pipe the output - * from each one into the next, listening for - * errors from any of the streams, and then resolve - * the promise once the final stream has finished - * writing/reading. - * - * If the last stream is readable, it's final value - * will be provided as the promise value. - * - * Errors emitted from any stream will cause - * the promise to be rejected with that error. - * - * @param {Array} streams - * @return {Promise} - */ - -function isReadable(stream: Readable | Writable): stream is Readable { - return 'read' in stream && typeof stream.read === 'function'; -} - -export async function createPromiseFromStreams(streams: [Readable, ...Writable[]]): Promise { - let finalChunk: any; - const last = streams[streams.length - 1]; - if (!isReadable(last) && streams.length === 1) { - // For a nicer error than what stream.pipeline throws - throw new Error('A minimum of 2 streams is required when a non-readable stream is given'); - } - if (isReadable(last)) { - // We are pushing a writable stream to capture the last chunk - streams.push( - new Writable({ - // Use object mode even when "last" stream isn't. This allows to - // capture the last chunk as-is. - objectMode: true, - write(chunk, enc, done) { - finalChunk = chunk; - done(); - }, - }) - ); - } - - return new Promise((resolve, reject) => { - // @ts-expect-error 'pipeline' doesn't support variable length of arguments - pipeline(...streams, (err) => { - if (err) return reject(err); - resolve(finalChunk); - }); - }); -} diff --git a/packages/kbn-legacy-logging/yarn.lock b/packages/kbn-legacy-logging/yarn.lock deleted file mode 120000 index 3f82ebc9cdbae3..00000000000000 --- a/packages/kbn-legacy-logging/yarn.lock +++ /dev/null @@ -1 +0,0 @@ -../../yarn.lock \ No newline at end of file diff --git a/packages/kbn-logging/jest.config.js b/packages/kbn-logging/jest.config.js new file mode 100644 index 00000000000000..74ff8fd14f56a6 --- /dev/null +++ b/packages/kbn-logging/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-logging'], +}; diff --git a/packages/kbn-monaco/jest.config.js b/packages/kbn-monaco/jest.config.js new file mode 100644 index 00000000000000..03f879f6d0beff --- /dev/null +++ b/packages/kbn-monaco/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-monaco'], +}; diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index e2406a73f5342d..6c2e531a2f1eeb 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -6,10 +6,14 @@ "license": "Apache-2.0", "scripts": { "build": "node ./scripts/build.js", - "kbn:bootstrap": "yarn build --dev" + "kbn:bootstrap": "yarn build --dev", + "build:antlr4ts": "../../node_modules/antlr4ts-cli/antlr4ts ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js" }, "devDependencies": { "@kbn/babel-preset": "link:../kbn-babel-preset", "@kbn/dev-utils": "link:../kbn-dev-utils" + }, + "dependencies": { + "@kbn/i18n": "link:../kbn-i18n" } -} \ No newline at end of file +} diff --git a/packages/kbn-monaco/scripts/constants.js b/packages/kbn-monaco/scripts/constants.js new file mode 100644 index 00000000000000..9008b2bceeb3c2 --- /dev/null +++ b/packages/kbn-monaco/scripts/constants.js @@ -0,0 +1,52 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + licenseHeader: `/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +`, + supportedContexts: [ + 'boolean_script_field_script_field', + 'date_script_field', + 'double_script_field_script_field', + 'filter', + 'ip_script_field_script_field', + 'long_script_field_script_field', + 'painless_test', + 'processor_conditional', + 'score', + 'string_script_field_script_field', + ], +}; diff --git a/packages/kbn-monaco/scripts/fix_generated_antlr.js b/packages/kbn-monaco/scripts/fix_generated_antlr.js new file mode 100644 index 00000000000000..faa853b93aa02f --- /dev/null +++ b/packages/kbn-monaco/scripts/fix_generated_antlr.js @@ -0,0 +1,66 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { join } = require('path'); +const { readdirSync, readFileSync, writeFileSync, renameSync } = require('fs'); +const ora = require('ora'); + +const generatedAntlrFolder = join(__dirname, '..', 'src', 'painless', 'antlr'); + +const generatedAntlrFolderContents = readdirSync(generatedAntlrFolder); + +const log = ora('Updating generated antlr grammar').start(); + +// The generated TS produces some TS linting errors +// This script adds a //@ts-nocheck comment at the top of each generated file +// so that the errors can be ignored for now +generatedAntlrFolderContents + .filter((file) => { + const fileExtension = file.split('.')[1]; + return fileExtension.includes('ts'); + }) + .forEach((file) => { + try { + const fileContentRows = readFileSync(join(generatedAntlrFolder, file), 'utf8') + .toString() + .split('\n'); + + fileContentRows.unshift('// @ts-nocheck'); + + const filePath = join(generatedAntlrFolder, file); + const fileContent = fileContentRows.join('\n'); + + writeFileSync(filePath, fileContent, { encoding: 'utf8' }); + } catch (err) { + return log.fail(err.message); + } + }); + +// Rename generated parserListener file to snakecase to satisfy file casing check +// There doesn't appear to be a way to fix this OOTB with antlr4ts-cli +try { + renameSync( + join(generatedAntlrFolder, 'painless_parserListener.ts'), + join(generatedAntlrFolder, 'painless_parser_listener.ts') + ); +} catch (err) { + log.warn(`Unable to rename parserListener file to snakecase: ${err.message}`); +} + +log.succeed('Updated generated antlr grammar successfully'); diff --git a/packages/kbn-monaco/scripts/generate_autocomplete.js b/packages/kbn-monaco/scripts/generate_autocomplete.js new file mode 100644 index 00000000000000..f39035cd2218f0 --- /dev/null +++ b/packages/kbn-monaco/scripts/generate_autocomplete.js @@ -0,0 +1,102 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { join } = require('path'); +const { readdirSync, readFileSync, writeFileSync } = require('fs'); +const minimist = require('minimist'); +const semver = require('semver'); +const ora = require('ora'); +const del = require('del'); + +const { + cloneAndCheckout, + createAutocompleteDefinitions, + createAutocompleteExports, +} = require('./utils'); +const { supportedContexts } = require('./constants'); + +start( + minimist(process.argv.slice(2), { + string: ['tag', 'branch'], + }) +); + +function start(opts) { + const log = ora('Loading Elasticsearch repository').start(); + + if (opts.branch == null && semver.valid(opts.tag) === null) { + log.fail(`Missing or invalid tag: ${opts.tag}`); + return; + } + + const autocompleteOutputFolder = join( + __dirname, + '..', + 'src', + 'painless', + 'autocomplete_definitions' + ); + + log.text = 'Cleaning autocomplete definitions folder'; + del.sync([`${autocompleteOutputFolder}/**`]); + + cloneAndCheckout( + { log, tag: opts.tag, branch: opts.branch }, + (err, { esPainlessContextFolder }) => { + if (err) { + log.fail(err.message); + return; + } + + const painlessContextFolderContents = readdirSync(esPainlessContextFolder); + + // Generate autocomplete definitions + painlessContextFolderContents + .filter((file) => { + // Expected filename format: whitelist-.json + const contextName = file.split('.')[0].split('whitelist-').pop(); + return supportedContexts.includes(contextName); + }) + .forEach((file) => { + try { + const { name, classes: painlessClasses } = JSON.parse( + readFileSync(join(esPainlessContextFolder, file), 'utf8') + ); + const filePath = join(autocompleteOutputFolder, `${name}.json`); + const code = JSON.stringify( + { suggestions: createAutocompleteDefinitions(painlessClasses) }, + null, + 2 + ); + writeFileSync(filePath, code, { encoding: 'utf8' }); + } catch (err) { + log.fail(err.message); + } + }); + + // Create index.ts file for autocomplete definitions + const indexFilePath = join(autocompleteOutputFolder, 'index.ts'); + const indexCode = createAutocompleteExports(); + + writeFileSync(indexFilePath, indexCode, { encoding: 'utf8' }); + + log.succeed('Painless autocomplete definitions generated successfully'); + } + ); +} diff --git a/packages/kbn-monaco/scripts/utils/clone_es.js b/packages/kbn-monaco/scripts/utils/clone_es.js new file mode 100644 index 00000000000000..51063b89017310 --- /dev/null +++ b/packages/kbn-monaco/scripts/utils/clone_es.js @@ -0,0 +1,149 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { accessSync, mkdirSync } = require('fs'); +const { join } = require('path'); +const simpleGit = require('simple-git'); + +// Note: The generated allowlists have not yet been merged to ES +// so this script may fail until code in this branch has been merged: +// https://github.com/stu-elastic/elasticsearch/tree/scripting/whitelists +const esRepo = 'https://github.com/elastic/elasticsearch.git'; + +const esFolder = join(__dirname, '..', '..', 'elasticsearch'); +const esPainlessContextFolder = join( + esFolder, + 'modules', + 'lang-painless', + 'src', + 'main', + 'generated' +); + +/** + * Checks if the given path exists + * @param {string} path + * @returns {boolean} true if exists, false if not + */ +const pathExist = (path) => { + try { + accessSync(path); + return true; + } catch (err) { + return false; + } +}; + +/** + * Creates the given folder + * @param {string} name + * @returns {boolean} true on success, false on failure + */ +const createFolder = (name) => { + try { + mkdirSync(name); + return true; + } catch (err) { + return false; + } +}; + +/** + * Sets the Elasticsearch repository to the given branch or tag. + * If the repository is not present in `esFolder` it will + * clone the repository and the checkout the branch or tag. + * If the repository is already present but it cannot checkout to + * the given tag, it will perform a pull and then try again. + * + * This code was largely borrowed from the ES JS client: + * https://github.com/elastic/elasticsearch-js/blob/master/scripts/utils/clone-es.js + * + * @param {object} options + * @param {function} callback + */ +const cloneAndCheckout = (opts, callback) => { + const { log, tag, branch } = opts; + + let fresh = false; + let retry = 0; + + if (!pathExist(esFolder)) { + if (!createFolder(esFolder)) { + log.fail('Failed to create ES folder'); + return; + } + fresh = true; + } + + const git = simpleGit(esFolder); + + const pull = (cb) => { + log.text = 'Pulling Elasticsearch repository'; + + git.pull((err) => { + if (err) { + callback(err, { esPainlessContextFolder }); + return; + } + cb(); + }); + }; + + const clone = (cb) => { + log.text = 'Cloning Elasticsearch repository'; + + git.clone(esRepo, esFolder, (err) => { + if (err) { + callback(err, { esPainlessContextFolder }); + return; + } + cb(); + }); + }; + + const checkout = (alsoPull = false) => { + if (branch) { + log.text = `Checking out branch '${branch}'`; + } else { + log.text = `Checking out tag '${tag}'`; + } + + git.checkout(branch || tag, (err) => { + if (err) { + if (retry++ > 0) { + callback(new Error(`Cannot checkout '${branch || tag}'`), { esPainlessContextFolder }); + return; + } + return pull(checkout); + } + if (alsoPull) { + return pull(checkout); + } + callback(null, { esPainlessContextFolder }); + }); + }; + + if (fresh) { + clone(checkout); + } else { + checkout(Boolean(opts.branch)); + } +}; + +module.exports = cloneAndCheckout; diff --git a/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.js b/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.js new file mode 100644 index 00000000000000..93a1462367ac95 --- /dev/null +++ b/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.js @@ -0,0 +1,319 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const reservedWords = ['valueOf', 'toString']; + +// Making an assumption that a method will not have >5 parameters +const parameterIndexToLetterMap = { + 0: 'a', + 1: 'b', + 2: 'c', + 3: 'd', + 4: 'e', + 5: 'f', +}; + +/** + * The suggestion name is sometimes prefixed by the Java package + * and needs to be removed for autocompletion. + * + * Some suggestions may also contain a "$" character, which indicates it is + * an inner class in Java. For Painless, the "$" needs to be converted to "." + * @param {string} name + * @returns {string} + */ +const getDisplayName = (name, imported) => { + let displayName = name; + + // If imported === true, we assume it is a Java class and need the short name + if (imported) { + displayName = name.split('.').pop() || name; + } + + return displayName.replace('$', '.'); +}; + +/** + * Filters the context data by primitives and returns an array of primitive names + * The current data structure from ES does not indicate if a field is + * a primitive or class, so we infer this by checking + * that no methods or fields are defined + * @param {string} contextData + * @returns {Array} + */ +const getPrimitives = (contextData) => { + return contextData + .filter( + ({ + static_fields: staticFields, + fields, + static_methods: staticMethods, + methods, + constructors, + }) => { + if ( + staticMethods.length === 0 && + methods.length === 0 && + staticFields.length === 0 && + fields.length === 0 && + constructors.length === 0 + ) { + return true; + } + } + ) + .map((type) => type.name); +}; + +/** + * Given the method name, array of parameters, and return value, + * we create a description of the method that will be + * used to display the help tooltip for the autocomplete suggestion + * + * Example of final format: pow(double a, double b): double + * + * Some methods support different parameter types and return values, so this is also supported + * and represented by the "|" character + * + * Example: Long.parseLong(String a, int b | String a): long + * + * @param {string} methodName + * @param {Array>} parameters + * @param {string} returnValue + * @returns {string} + */ +const getMethodDescription = (methodName, parameters, returnValues) => { + const parametersDescription = parameters.reduce((paramsDescription, paramsArray, index) => { + const isNotLastParameterSet = parameters.length - 1 !== index; + + const parameterSetDescription = paramsArray.reduce( + (description, parameterType, paramsArrayIndex) => { + const newParameterDescription = `${parameterType} ${parameterIndexToLetterMap[paramsArrayIndex]}`; + const isLastParameter = paramsArray.length - 1 === paramsArrayIndex; + + description = `${description}${newParameterDescription}${isLastParameter ? '' : ', '}`; + + return isNotLastParameterSet && isLastParameter ? `${description} | ` : description; + }, + '' + ); + + paramsDescription = `${paramsDescription}${parameterSetDescription}`; + + return paramsDescription; + }, ''); + + const uniqueReturnValues = [...new Set(returnValues)].join(' | '); + + return `${methodName}(${parametersDescription}): ${uniqueReturnValues}`; +}; + +/** + * If a method supports multiple types of parameters, it is listed + * twice in the dataset. This method filters out the duplicates and + * adds all possible parameters to a method + * + * @param {Array} methods + * @returns {Array} + */ +const removeDuplicateMethods = (methods) => { + if (methods.length === 0) { + return []; + } + + const filteredMethods = methods.filter( + (method, index, methodsArray) => index === methodsArray.findIndex((m) => m.name === method.name) + ); + + const paramsToMethodMap = methods.reduce((acc, currentVal) => { + const { name, parameters, return: returnValue } = currentVal; + const hasParameters = parameters.length > 0; + + let methodName = name; + + if (reservedWords.includes(name)) { + methodName = `${name}MethodName`; + } + + if (acc[methodName] === undefined) { + acc[methodName] = { + parameters: hasParameters ? [parameters] : [], + returnValues: returnValue ? [returnValue] : [], + }; + } else { + const hasIncomingParameters = acc[methodName].parameters.length > 0; + const hasIncomingReturnValue = acc[methodName].returnValues.length > 0; + + if (hasParameters && hasIncomingParameters) { + acc[methodName].parameters = [parameters, ...acc[methodName].parameters]; + } else { + acc[methodName].parameters = [parameters]; + } + + if (returnValue && hasIncomingReturnValue) { + acc[methodName].returnValues = [returnValue, ...acc[methodName].returnValues]; + } else { + acc[methodName].returnValues = [returnValue]; + } + } + + return acc; + }, {}); + + return filteredMethods.map((method) => { + const methodName = reservedWords.includes(method.name) + ? `${method.name}MethodName` + : method.name; + + return { + name: method.name, + type: method.type, + parameters: paramsToMethodMap[methodName].parameters || [], + returnValues: paramsToMethodMap[methodName].returnValues || [], + }; + }); +}; + +/** + * Given a class, we return its fields and methods + * + * @param {object} painlessClass + * @returns {Array} + */ +const getPainlessClassToAutocomplete = (painlessClass) => { + const { staticFields, fields, staticMethods, methods } = painlessClass; + + const staticFieldsAutocomplete = staticFields.map(({ name, type }) => { + return { + label: name, + kind: 'property', + documentation: `${name}: ${type}`, + insertText: name, + }; + }); + + const fieldsAutocomplete = fields.map(({ name, type }) => { + return { + label: name, + kind: 'property', + documentation: `${name}: ${type}`, + insertText: name, + }; + }); + + const staticMethodsAutocomplete = removeDuplicateMethods(staticMethods).map( + ({ name, parameters, returnValues }) => { + return { + label: name, + kind: 'method', + documentation: getMethodDescription(name, parameters, returnValues), + insertText: name, + }; + } + ); + + const methodsAutocomplete = removeDuplicateMethods(methods).map( + ({ name, parameters, returnValues }) => { + return { + label: name, + kind: 'method', + documentation: getMethodDescription(name, parameters, returnValues), + insertText: name, + }; + } + ); + + return [ + ...staticFieldsAutocomplete, + ...staticMethodsAutocomplete, + ...methodsAutocomplete, + ...fieldsAutocomplete, + ]; +}; + +const getPainlessConstructorToAutocomplete = (constructors, imported) => { + if (constructors.length) { + // There are sometimes two constructor definitions if a parameter is accepted + // We only care about getting the constructor name for now, so we can access the first one in the array + const { declaring } = constructors[0]; + // The constructor name is sometimes prefixed by the Java package and needs to be removed + const constructorName = getDisplayName(declaring, imported); + + return { + label: constructorName, + kind: 'constructor', + documentation: `Constructor: ${constructorName}`, + insertText: constructorName, + }; + } + + return undefined; +}; + +/** + * Given an array of classes from an ES context definition, + * reformat the data in a way that can be more easily consumed by Monaco + * + * @param {Array} painlessClasses + * @returns {Array} + */ +const createAutocompleteDefinitions = (painlessClasses) => { + const suggestions = painlessClasses.map( + ({ + name, + static_fields: staticFields, + fields, + static_methods: staticMethods, + methods, + constructors, + imported, + }) => { + // The name is often prefixed by the Java package (e.g., Java.lang.Math) and needs to be removed + const displayName = getDisplayName(name, imported); + const isType = getPrimitives(painlessClasses).includes(name); + + const properties = getPainlessClassToAutocomplete({ + staticFields, + fields, + staticMethods, + methods, + }); + + const constructorDefinition = getPainlessConstructorToAutocomplete(constructors, imported); + + return { + label: displayName, + kind: isType ? 'type' : 'class', + documentation: isType ? `Primitive: ${displayName}` : `Class: ${displayName}`, + insertText: displayName, + properties: properties.length ? properties : undefined, + constructorDefinition, + }; + } + ); + + return suggestions; +}; + +module.exports = { + getMethodDescription, + getPrimitives, + getPainlessClassToAutocomplete, + createAutocompleteDefinitions, +}; diff --git a/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.test.js b/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.test.js new file mode 100644 index 00000000000000..82ace6a38e4651 --- /dev/null +++ b/packages/kbn-monaco/scripts/utils/create_autocomplete_definitions.test.js @@ -0,0 +1,374 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +const { + getPrimitives, + getMethodDescription, + getPainlessClassToAutocomplete, + createAutocompleteDefinitions, +} = require('./create_autocomplete_definitions'); + +// Snippet of sample data returned from GET _scripts/painless/_context?context= +const testContext = [ + { + name: 'boolean', + imported: true, + constructors: [], + static_methods: [], + methods: [], + static_fields: [], + fields: [], + }, + { + name: 'int', + imported: true, + constructors: [], + static_methods: [], + methods: [], + static_fields: [], + fields: [], + }, + { + name: 'java.lang.Long', + imported: true, + constructors: [], + static_methods: [ + { + declaring: 'java.lang.Long', + name: 'parseLong', + return: 'long', + parameters: ['java.lang.String'], + }, + { + declaring: 'java.lang.Long', + name: 'parseLong', + return: 'long', + parameters: ['java.lang.String', 'int'], + }, + ], + methods: [], + static_fields: [], + fields: [], + }, + { + name: 'java.lang.Math', + imported: true, + constructors: [], + static_methods: [ + { + declaring: 'java.lang.Math', + name: 'pow', + return: 'double', + parameters: ['double', 'double'], + }, + { + declaring: 'java.lang.Math', + name: 'random', + return: 'double', + parameters: [], + }, + ], + methods: [ + { + declaring: 'java.lang.Object', + name: 'toString', + return: 'java.lang.String', + parameters: [], + }, + ], + static_fields: [ + { + declaring: 'java.lang.Math', + name: 'PI', + type: 'double', + }, + ], + fields: [], + }, +]; + +describe('Autocomplete utils', () => { + describe('getPrimitives()', () => { + test('returns an array of primitives', () => { + expect(getPrimitives(testContext)).toEqual(['boolean', 'int']); + }); + }); + + describe('getMethodDescription()', () => { + test('returns a string describing the method', () => { + expect(getMethodDescription('pow', [['double', 'double']], ['double'])).toEqual( + 'pow(double a, double b): double' + ); + }); + test('represents each parameter as an alphabetical character', () => { + expect( + getMethodDescription( + 'myMethod', + [['string', 'string', 'string', 'string', 'string']], + ['string'] + ) + ).toEqual('myMethod(string a, string b, string c, string d, string e): string'); + }); + }); + + describe('getPainlessClassToAutocomplete()', () => { + test('returns the fields and methods associated with a class', () => { + const mathClass = testContext[3]; + + const { + static_fields: staticFields, + fields, + static_methods: staticMethods, + methods, + } = mathClass; + + expect( + getPainlessClassToAutocomplete({ + staticFields, + fields, + staticMethods, + methods, + }) + ).toEqual([ + { + documentation: 'PI: double', + insertText: 'PI', + kind: 'property', + label: 'PI', + }, + { + documentation: 'pow(double a, double b): double', + insertText: 'pow', + kind: 'method', + label: 'pow', + }, + { + documentation: 'random(): double', + insertText: 'random', + kind: 'method', + label: 'random', + }, + { + documentation: 'toString(): java.lang.String', + insertText: 'toString', + kind: 'method', + label: 'toString', + }, + ]); + }); + + test('removes duplicate methods', () => { + const longClass = testContext[2]; + + const { + static_fields: staticFields, + fields, + static_methods: staticMethods, + methods, + } = longClass; + + expect( + getPainlessClassToAutocomplete({ + staticFields, + fields, + staticMethods, + methods, + }) + ).toEqual([ + { + label: 'parseLong', + kind: 'method', + documentation: 'parseLong(java.lang.String a, int b | java.lang.String a): long', + insertText: 'parseLong', + }, + ]); + }); + + test('returns all possible return values in description', () => { + const charClass = { + name: 'java.lang.Character', + imported: true, + constructors: [], + static_methods: [ + { + declaring: 'java.lang.Character', + name: 'toChars', + return: '[C', + parameters: ['int'], + }, + { + declaring: 'java.lang.Character', + name: 'toChars', + return: 'int', + parameters: ['int', '[C', 'int'], + }, + ], + fields: [], + methods: [], + static_fields: [], + }; + + const { + static_fields: staticFields, + fields, + static_methods: staticMethods, + methods, + } = charClass; + + expect( + getPainlessClassToAutocomplete({ + staticFields, + fields, + staticMethods, + methods, + }) + ).toEqual([ + { + label: 'toChars', + kind: 'method', + documentation: 'toChars(int a, [C b, int c | int a): int | [C', + insertText: 'toChars', + }, + ]); + }); + }); + + describe('createAutocompleteDefinitions()', () => { + test('returns formatted autocomplete definitions', () => { + expect(createAutocompleteDefinitions(testContext)).toEqual([ + { + properties: undefined, + constructorDefinition: undefined, + documentation: 'Primitive: boolean', + insertText: 'boolean', + kind: 'type', + label: 'boolean', + }, + { + properties: undefined, + constructorDefinition: undefined, + documentation: 'Primitive: int', + insertText: 'int', + kind: 'type', + label: 'int', + }, + { + constructorDefinition: undefined, + documentation: 'Class: Long', + insertText: 'Long', + kind: 'class', + label: 'Long', + properties: [ + { + documentation: 'parseLong(java.lang.String a, int b | java.lang.String a): long', + insertText: 'parseLong', + kind: 'method', + label: 'parseLong', + }, + ], + }, + { + properties: [ + { + documentation: 'PI: double', + insertText: 'PI', + kind: 'property', + label: 'PI', + }, + { + documentation: 'pow(double a, double b): double', + insertText: 'pow', + kind: 'method', + label: 'pow', + }, + { + documentation: 'random(): double', + insertText: 'random', + kind: 'method', + label: 'random', + }, + { + documentation: 'toString(): java.lang.String', + insertText: 'toString', + kind: 'method', + label: 'toString', + }, + ], + constructorDefinition: undefined, + documentation: 'Class: Math', + insertText: 'Math', + kind: 'class', + label: 'Math', + }, + ]); + }); + + test('returns a constructor definition', () => { + const contextWithConstructors = [ + { + name: 'java.lang.ArithmeticException', + imported: true, + constructors: [ + { + declaring: 'java.lang.ArithmeticException', + parameters: [], + }, + { + declaring: 'java.lang.ArithmeticException', + parameters: ['java.lang.String'], + }, + ], + static_methods: [], + methods: [ + { + declaring: 'java.lang.Object', + name: 'equals', + return: 'boolean', + parameters: ['java.lang.Object'], + }, + ], + static_fields: [], + fields: [], + }, + ]; + + expect(createAutocompleteDefinitions(contextWithConstructors)).toEqual([ + { + constructorDefinition: { + documentation: 'Constructor: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'constructor', + label: 'ArithmeticException', + }, + documentation: 'Class: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'class', + label: 'ArithmeticException', + properties: [ + { + documentation: 'equals(java.lang.Object a): boolean', + insertText: 'equals', + kind: 'method', + label: 'equals', + }, + ], + }, + ]); + }); + }); +}); diff --git a/packages/kbn-monaco/scripts/utils/create_autocomplete_exports.js b/packages/kbn-monaco/scripts/utils/create_autocomplete_exports.js new file mode 100644 index 00000000000000..815fe334ad080b --- /dev/null +++ b/packages/kbn-monaco/scripts/utils/create_autocomplete_exports.js @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const { licenseHeader, supportedContexts } = require('../constants'); + +const toCamelcase = (string) => { + return string.replace(/([_][a-z])/gi, (match) => { + return match.toUpperCase().replace('_', ''); + }); +}; + +const createAutocompleteExports = () => { + const imports = supportedContexts.reduce((importList, context) => { + const importStatement = ` +import * as ${toCamelcase(context)}Context from './${context}.json';`; + importList = `${importStatement}${importList}`; + return importList; + }, ''); + + const exports = supportedContexts.reduce((exportList, context) => { + const exportStatement = ` +export { ${toCamelcase(context)}Context };`; + exportList = `${exportStatement}${exportList}`; + return exportList; + }, ''); + + const doNotEditComment = `// DO NOT EDIT: THIS FILE CONTAINS GENERATED CODE. REFER TO THE PAINLESS README FOR MORE INFORMATION.`; + + return `${licenseHeader}${doNotEditComment}${imports}${exports} +`; +}; + +module.exports = createAutocompleteExports; diff --git a/packages/kbn-monaco/scripts/utils/index.js b/packages/kbn-monaco/scripts/utils/index.js new file mode 100644 index 00000000000000..b38bbfe52d7cd4 --- /dev/null +++ b/packages/kbn-monaco/scripts/utils/index.js @@ -0,0 +1,28 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const cloneAndCheckout = require('./clone_es'); +const { createAutocompleteDefinitions } = require('./create_autocomplete_definitions'); +const createAutocompleteExports = require('./create_autocomplete_exports'); + +module.exports = { + cloneAndCheckout, + createAutocompleteDefinitions, + createAutocompleteExports, +}; diff --git a/packages/kbn-monaco/src/index.ts b/packages/kbn-monaco/src/index.ts index 2a8467d6ef8fd3..41600d96ff7c90 100644 --- a/packages/kbn-monaco/src/index.ts +++ b/packages/kbn-monaco/src/index.ts @@ -22,7 +22,7 @@ import './register_globals'; export { monaco } from './monaco_imports'; export { XJsonLang } from './xjson'; -export { PainlessLang } from './painless'; +export { PainlessLang, PainlessContext, PainlessAutocompleteField } from './painless'; /* eslint-disable-next-line @kbn/eslint/module_migration */ import * as BarePluginApi from 'monaco-editor/esm/vs/editor/editor.api'; diff --git a/packages/kbn-monaco/src/painless/README.md b/packages/kbn-monaco/src/painless/README.md new file mode 100644 index 00000000000000..6969e4045cba6b --- /dev/null +++ b/packages/kbn-monaco/src/painless/README.md @@ -0,0 +1,124 @@ +# Painless + +This folder contains the language definitions for Painless used by the Monaco editor. + +## Summary of contents + +### ./language + +Initializes the worker proxy service when the Painless language is first needed. It also exports the [suggestion provider](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html) needed for autocompletion. + +### ./lib +This directory exports two services: + +1. Worker proxy: Responsible for holding a reference to the Monaco-provided proxy getter. +2. Editor state: Responsible for holding a reference to the current Painless context and fields provided as props via the React `` component. + +### ./completion_adapter + +Implements the monaco [CompletionItemProvider](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html). Returns autocomplete suggestions based on the editor context and current characters. + +### ./constants + +Contains the unique language ID. + +### ./types + +Exports common Typescript interfaces. + +### ./lexer_rules + +Contains the Monarch-specific language tokenization rules for Painless. + +### ./worker + +The worker proxy and worker instantiation code used in both the main thread and the worker thread. The logic for providing autocomplete suggestions and error reporting resides here. + +### ./autocomplete_definitions + +This directory is generated by a script and should not be changed manually. Read [Updating autocomplete definitions](#updating-autocomplete-definitions) for more information. + +### ./antlr +This directory contains the Painless lexer and grammar rules, as well as the generated Typescript code. Read [Compiling ANTLR](#compiling-ANTLR) for more information. + +## Example usage + +``` +import { PainlessLang, PainlessContext } from '@kbn/monaco'; +import { CodeEditor } from '../src/plugins/kibana_react/public'; + +// Fields are optional and only applicable in certain contexts +const fields = [ + { + name: 'field1', + type: 'float', + }, + { + name: 'field2', + type: 'boolean', + }, + { + name: 'field3', + type: 'boolean', + }, +]; + + +``` + +## Updating autocomplete definitions + +The autocomplete definitions are generated by the `kbn-monaco/scripts/generate_autocomplete.js` script. This script should be run each release to ensure the definitions are up-to-date. + +Run from the package root directory: + +``` +node scripts/generate_autocomplete --tag +# or +node scripts/generate_autocomplete --branch +``` + +**Note:** The script currently only generates autocomplete definitions for the following contexts: + + - `boolean_script_field_script_field` + - `date_script_field` + - `double_script_field_script_field` + - `filter` + - `ip_script_field_script_field` + - `long_script_field_script_field` + - `painless_test` + - `processor_conditional` + - `score` + - `string_script_field_script_field` + +To add additional contexts, edit the `supportedContexts` constant in `kbn-monaco/scripts/constants.js`. + +## Compiling ANTLR + +[ANTLR](https://www.antlr.org/) generates lexical and syntax errors out of the box, which we can use to set error markers in monaco. + +Elasticsearch has defined [lexer and parser grammar](https://github.com/elastic/elasticsearch/tree/master/modules/lang-painless/src/main/antlr) for the Painless language. For now, these rules have been largely copied from ES to Kibana and reside in the `antlr` directory with the `.g4` file extension. We then use [antlr4ts](https://github.com/tunnelvisionlabs/antlr4ts) to generate a lexer and a parser in Typescript. + +To regenerate the lexer and parser, run the following script: + +``` +npm run build:antlr4ts +``` + +*Note:* This script should only need to be run if a change has been made to `painless_lexer.g4` or `painless_parser.g4`. + +*Note:* There is a manual change made to the `sempred()` method in the generated `painless_lexer.ts`. This needs further investigation, but it appears there is an offset between the rule index and the token value. Without this manual change, ANTLR incorrectly reports an error when using a `/` or regex in a script. There is a comment in the generated code to this effect. diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.g4 b/packages/kbn-monaco/src/painless/antlr/painless_lexer.g4 new file mode 100644 index 00000000000000..d7cdf31e6d5875 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.g4 @@ -0,0 +1,122 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +lexer grammar painless_lexer; + +WS: [ \t\n\r]+ -> skip; +COMMENT: ( '//' .*? [\n\r] | '/*' .*? '*/' ) -> skip; + +LBRACK: '{'; +RBRACK: '}'; +LBRACE: '['; +RBRACE: ']'; +LP: '('; +RP: ')'; +// We switch modes after a dot to ensure there are not conflicts +// between shortcuts and decimal values. Without the mode switch +// shortcuts such as id.0.0 will fail because 0.0 will be interpreted +// as a decimal value instead of two individual list-style shortcuts. +DOT: '.' -> mode(AFTER_DOT); +NSDOT: '?.' -> mode(AFTER_DOT); +COMMA: ','; +SEMICOLON: ';'; +IF: 'if'; +IN: 'in'; +ELSE: 'else'; +WHILE: 'while'; +DO: 'do'; +FOR: 'for'; +CONTINUE: 'continue'; +BREAK: 'break'; +RETURN: 'return'; +NEW: 'new'; +TRY: 'try'; +CATCH: 'catch'; +THROW: 'throw'; +THIS: 'this'; +INSTANCEOF: 'instanceof'; + +BOOLNOT: '!'; +BWNOT: '~'; +MUL: '*'; +DIV: '/' { this.isSlashRegex() == false }?; +REM: '%'; +ADD: '+'; +SUB: '-'; +LSH: '<<'; +RSH: '>>'; +USH: '>>>'; +LT: '<'; +LTE: '<='; +GT: '>'; +GTE: '>='; +EQ: '=='; +EQR: '==='; +NE: '!='; +NER: '!=='; +BWAND: '&'; +XOR: '^'; +BWOR: '|'; +BOOLAND: '&&'; +BOOLOR: '||'; +COND: '?'; +COLON: ':'; +ELVIS: '?:'; +REF: '::'; +ARROW: '->'; +FIND: '=~'; +MATCH: '==~'; +INCR: '++'; +DECR: '--'; + +ASSIGN: '='; +AADD: '+='; +ASUB: '-='; +AMUL: '*='; +ADIV: '/='; +AREM: '%='; +AAND: '&='; +AXOR: '^='; +AOR: '|='; +ALSH: '<<='; +ARSH: '>>='; +AUSH: '>>>='; + +OCTAL: '0' [0-7]+ [lL]?; +HEX: '0' [xX] [0-9a-fA-F]+ [lL]?; +INTEGER: ( '0' | [1-9] [0-9]* ) [lLfFdD]?; +DECIMAL: ( '0' | [1-9] [0-9]* ) (DOT [0-9]+)? ( [eE] [+\-]? [0-9]+ )? [fFdD]?; + +STRING: ( '"' ( '\\"' | '\\\\' | ~[\\"] )*? '"' ) | ( '\'' ( '\\\'' | '\\\\' | ~[\\'] )*? '\'' ); +REGEX: '/' ( '\\' ~'\n' | ~('/' | '\n') )+? '/' [cilmsUux]* { this.isSlashRegex() }?; + +TRUE: 'true'; +FALSE: 'false'; + +NULL: 'null'; + +PRIMITIVE: 'boolean' | 'byte' | 'short' | 'char' | 'int' | 'long' | 'float' | 'double'; +DEF: 'def'; + +ID: [_a-zA-Z] [_a-zA-Z0-9]*; + +mode AFTER_DOT; + +DOTINTEGER: ( '0' | [1-9] [0-9]* ) -> mode(DEFAULT_MODE); +DOTID: [_a-zA-Z] [_a-zA-Z0-9]* -> mode(DEFAULT_MODE); diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp b/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp new file mode 100644 index 00000000000000..df5a0d52441248 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.interp @@ -0,0 +1,273 @@ +token literal names: +null +null +null +'{' +'}' +'[' +']' +'(' +')' +'.' +'?.' +',' +';' +'if' +'in' +'else' +'while' +'do' +'for' +'continue' +'break' +'return' +'new' +'try' +'catch' +'throw' +'this' +'instanceof' +'!' +'~' +'*' +'/' +'%' +'+' +'-' +'<<' +'>>' +'>>>' +'<' +'<=' +'>' +'>=' +'==' +'===' +'!=' +'!==' +'&' +'^' +'|' +'&&' +'||' +'?' +':' +'?:' +'::' +'->' +'=~' +'==~' +'++' +'--' +'=' +'+=' +'-=' +'*=' +'/=' +'%=' +'&=' +'^=' +'|=' +'<<=' +'>>=' +'>>>=' +null +null +null +null +null +null +'true' +'false' +'null' +null +'def' +null +null +null + +token symbolic names: +null +WS +COMMENT +LBRACK +RBRACK +LBRACE +RBRACE +LP +RP +DOT +NSDOT +COMMA +SEMICOLON +IF +IN +ELSE +WHILE +DO +FOR +CONTINUE +BREAK +RETURN +NEW +TRY +CATCH +THROW +THIS +INSTANCEOF +BOOLNOT +BWNOT +MUL +DIV +REM +ADD +SUB +LSH +RSH +USH +LT +LTE +GT +GTE +EQ +EQR +NE +NER +BWAND +XOR +BWOR +BOOLAND +BOOLOR +COND +COLON +ELVIS +REF +ARROW +FIND +MATCH +INCR +DECR +ASSIGN +AADD +ASUB +AMUL +ADIV +AREM +AAND +AXOR +AOR +ALSH +ARSH +AUSH +OCTAL +HEX +INTEGER +DECIMAL +STRING +REGEX +TRUE +FALSE +NULL +PRIMITIVE +DEF +ID +DOTINTEGER +DOTID + +rule names: +WS +COMMENT +LBRACK +RBRACK +LBRACE +RBRACE +LP +RP +DOT +NSDOT +COMMA +SEMICOLON +IF +IN +ELSE +WHILE +DO +FOR +CONTINUE +BREAK +RETURN +NEW +TRY +CATCH +THROW +THIS +INSTANCEOF +BOOLNOT +BWNOT +MUL +DIV +REM +ADD +SUB +LSH +RSH +USH +LT +LTE +GT +GTE +EQ +EQR +NE +NER +BWAND +XOR +BWOR +BOOLAND +BOOLOR +COND +COLON +ELVIS +REF +ARROW +FIND +MATCH +INCR +DECR +ASSIGN +AADD +ASUB +AMUL +ADIV +AREM +AAND +AXOR +AOR +ALSH +ARSH +AUSH +OCTAL +HEX +INTEGER +DECIMAL +STRING +REGEX +TRUE +FALSE +NULL +PRIMITIVE +DEF +ID +DOTINTEGER +DOTID + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE +AFTER_DOT + +atn: +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 87, 634, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 3, 2, 6, 2, 176, 10, 2, 13, 2, 14, 2, 177, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 186, 10, 3, 12, 3, 14, 3, 189, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 196, 10, 3, 12, 3, 14, 3, 199, 11, 3, 3, 3, 3, 3, 5, 3, 203, 10, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 6, 73, 442, 10, 73, 13, 73, 14, 73, 443, 3, 73, 5, 73, 447, 10, 73, 3, 74, 3, 74, 3, 74, 6, 74, 452, 10, 74, 13, 74, 14, 74, 453, 3, 74, 5, 74, 457, 10, 74, 3, 75, 3, 75, 3, 75, 7, 75, 462, 10, 75, 12, 75, 14, 75, 465, 11, 75, 5, 75, 467, 10, 75, 3, 75, 5, 75, 470, 10, 75, 3, 76, 3, 76, 3, 76, 7, 76, 475, 10, 76, 12, 76, 14, 76, 478, 11, 76, 5, 76, 480, 10, 76, 3, 76, 3, 76, 6, 76, 484, 10, 76, 13, 76, 14, 76, 485, 5, 76, 488, 10, 76, 3, 76, 3, 76, 5, 76, 492, 10, 76, 3, 76, 6, 76, 495, 10, 76, 13, 76, 14, 76, 496, 5, 76, 499, 10, 76, 3, 76, 5, 76, 502, 10, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 510, 10, 77, 12, 77, 14, 77, 513, 11, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 7, 77, 522, 10, 77, 12, 77, 14, 77, 525, 11, 77, 3, 77, 5, 77, 528, 10, 77, 3, 78, 3, 78, 3, 78, 3, 78, 6, 78, 534, 10, 78, 13, 78, 14, 78, 535, 3, 78, 3, 78, 7, 78, 540, 10, 78, 12, 78, 14, 78, 543, 11, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 601, 10, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 7, 84, 609, 10, 84, 12, 84, 14, 84, 612, 11, 84, 3, 85, 3, 85, 3, 85, 7, 85, 617, 10, 85, 12, 85, 14, 85, 620, 11, 85, 5, 85, 622, 10, 85, 3, 85, 3, 85, 3, 86, 3, 86, 7, 86, 628, 10, 86, 12, 86, 14, 86, 631, 11, 86, 3, 86, 3, 86, 7, 187, 197, 511, 523, 535, 2, 2, 87, 4, 2, 3, 6, 2, 4, 8, 2, 5, 10, 2, 6, 12, 2, 7, 14, 2, 8, 16, 2, 9, 18, 2, 10, 20, 2, 11, 22, 2, 12, 24, 2, 13, 26, 2, 14, 28, 2, 15, 30, 2, 16, 32, 2, 17, 34, 2, 18, 36, 2, 19, 38, 2, 20, 40, 2, 21, 42, 2, 22, 44, 2, 23, 46, 2, 24, 48, 2, 25, 50, 2, 26, 52, 2, 27, 54, 2, 28, 56, 2, 29, 58, 2, 30, 60, 2, 31, 62, 2, 32, 64, 2, 33, 66, 2, 34, 68, 2, 35, 70, 2, 36, 72, 2, 37, 74, 2, 38, 76, 2, 39, 78, 2, 40, 80, 2, 41, 82, 2, 42, 84, 2, 43, 86, 2, 44, 88, 2, 45, 90, 2, 46, 92, 2, 47, 94, 2, 48, 96, 2, 49, 98, 2, 50, 100, 2, 51, 102, 2, 52, 104, 2, 53, 106, 2, 54, 108, 2, 55, 110, 2, 56, 112, 2, 57, 114, 2, 58, 116, 2, 59, 118, 2, 60, 120, 2, 61, 122, 2, 62, 124, 2, 63, 126, 2, 64, 128, 2, 65, 130, 2, 66, 132, 2, 67, 134, 2, 68, 136, 2, 69, 138, 2, 70, 140, 2, 71, 142, 2, 72, 144, 2, 73, 146, 2, 74, 148, 2, 75, 150, 2, 76, 152, 2, 77, 154, 2, 78, 156, 2, 79, 158, 2, 80, 160, 2, 81, 162, 2, 82, 164, 2, 83, 166, 2, 84, 168, 2, 85, 170, 2, 86, 172, 2, 87, 4, 2, 3, 21, 5, 2, 11, 12, 15, 15, 34, 34, 4, 2, 12, 12, 15, 15, 3, 2, 50, 57, 4, 2, 78, 78, 110, 110, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 51, 59, 3, 2, 50, 59, 8, 2, 70, 70, 72, 72, 78, 78, 102, 102, 104, 104, 110, 110, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 6, 2, 70, 70, 72, 72, 102, 102, 104, 104, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 3, 2, 12, 12, 4, 2, 12, 12, 49, 49, 9, 2, 87, 87, 101, 101, 107, 107, 110, 111, 117, 117, 119, 119, 122, 122, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 2, 672, 2, 4, 3, 2, 2, 2, 2, 6, 3, 2, 2, 2, 2, 8, 3, 2, 2, 2, 2, 10, 3, 2, 2, 2, 2, 12, 3, 2, 2, 2, 2, 14, 3, 2, 2, 2, 2, 16, 3, 2, 2, 2, 2, 18, 3, 2, 2, 2, 2, 20, 3, 2, 2, 2, 2, 22, 3, 2, 2, 2, 2, 24, 3, 2, 2, 2, 2, 26, 3, 2, 2, 2, 2, 28, 3, 2, 2, 2, 2, 30, 3, 2, 2, 2, 2, 32, 3, 2, 2, 2, 2, 34, 3, 2, 2, 2, 2, 36, 3, 2, 2, 2, 2, 38, 3, 2, 2, 2, 2, 40, 3, 2, 2, 2, 2, 42, 3, 2, 2, 2, 2, 44, 3, 2, 2, 2, 2, 46, 3, 2, 2, 2, 2, 48, 3, 2, 2, 2, 2, 50, 3, 2, 2, 2, 2, 52, 3, 2, 2, 2, 2, 54, 3, 2, 2, 2, 2, 56, 3, 2, 2, 2, 2, 58, 3, 2, 2, 2, 2, 60, 3, 2, 2, 2, 2, 62, 3, 2, 2, 2, 2, 64, 3, 2, 2, 2, 2, 66, 3, 2, 2, 2, 2, 68, 3, 2, 2, 2, 2, 70, 3, 2, 2, 2, 2, 72, 3, 2, 2, 2, 2, 74, 3, 2, 2, 2, 2, 76, 3, 2, 2, 2, 2, 78, 3, 2, 2, 2, 2, 80, 3, 2, 2, 2, 2, 82, 3, 2, 2, 2, 2, 84, 3, 2, 2, 2, 2, 86, 3, 2, 2, 2, 2, 88, 3, 2, 2, 2, 2, 90, 3, 2, 2, 2, 2, 92, 3, 2, 2, 2, 2, 94, 3, 2, 2, 2, 2, 96, 3, 2, 2, 2, 2, 98, 3, 2, 2, 2, 2, 100, 3, 2, 2, 2, 2, 102, 3, 2, 2, 2, 2, 104, 3, 2, 2, 2, 2, 106, 3, 2, 2, 2, 2, 108, 3, 2, 2, 2, 2, 110, 3, 2, 2, 2, 2, 112, 3, 2, 2, 2, 2, 114, 3, 2, 2, 2, 2, 116, 3, 2, 2, 2, 2, 118, 3, 2, 2, 2, 2, 120, 3, 2, 2, 2, 2, 122, 3, 2, 2, 2, 2, 124, 3, 2, 2, 2, 2, 126, 3, 2, 2, 2, 2, 128, 3, 2, 2, 2, 2, 130, 3, 2, 2, 2, 2, 132, 3, 2, 2, 2, 2, 134, 3, 2, 2, 2, 2, 136, 3, 2, 2, 2, 2, 138, 3, 2, 2, 2, 2, 140, 3, 2, 2, 2, 2, 142, 3, 2, 2, 2, 2, 144, 3, 2, 2, 2, 2, 146, 3, 2, 2, 2, 2, 148, 3, 2, 2, 2, 2, 150, 3, 2, 2, 2, 2, 152, 3, 2, 2, 2, 2, 154, 3, 2, 2, 2, 2, 156, 3, 2, 2, 2, 2, 158, 3, 2, 2, 2, 2, 160, 3, 2, 2, 2, 2, 162, 3, 2, 2, 2, 2, 164, 3, 2, 2, 2, 2, 166, 3, 2, 2, 2, 2, 168, 3, 2, 2, 2, 3, 170, 3, 2, 2, 2, 3, 172, 3, 2, 2, 2, 4, 175, 3, 2, 2, 2, 6, 202, 3, 2, 2, 2, 8, 206, 3, 2, 2, 2, 10, 208, 3, 2, 2, 2, 12, 210, 3, 2, 2, 2, 14, 212, 3, 2, 2, 2, 16, 214, 3, 2, 2, 2, 18, 216, 3, 2, 2, 2, 20, 218, 3, 2, 2, 2, 22, 222, 3, 2, 2, 2, 24, 227, 3, 2, 2, 2, 26, 229, 3, 2, 2, 2, 28, 231, 3, 2, 2, 2, 30, 234, 3, 2, 2, 2, 32, 237, 3, 2, 2, 2, 34, 242, 3, 2, 2, 2, 36, 248, 3, 2, 2, 2, 38, 251, 3, 2, 2, 2, 40, 255, 3, 2, 2, 2, 42, 264, 3, 2, 2, 2, 44, 270, 3, 2, 2, 2, 46, 277, 3, 2, 2, 2, 48, 281, 3, 2, 2, 2, 50, 285, 3, 2, 2, 2, 52, 291, 3, 2, 2, 2, 54, 297, 3, 2, 2, 2, 56, 302, 3, 2, 2, 2, 58, 313, 3, 2, 2, 2, 60, 315, 3, 2, 2, 2, 62, 317, 3, 2, 2, 2, 64, 319, 3, 2, 2, 2, 66, 322, 3, 2, 2, 2, 68, 324, 3, 2, 2, 2, 70, 326, 3, 2, 2, 2, 72, 328, 3, 2, 2, 2, 74, 331, 3, 2, 2, 2, 76, 334, 3, 2, 2, 2, 78, 338, 3, 2, 2, 2, 80, 340, 3, 2, 2, 2, 82, 343, 3, 2, 2, 2, 84, 345, 3, 2, 2, 2, 86, 348, 3, 2, 2, 2, 88, 351, 3, 2, 2, 2, 90, 355, 3, 2, 2, 2, 92, 358, 3, 2, 2, 2, 94, 362, 3, 2, 2, 2, 96, 364, 3, 2, 2, 2, 98, 366, 3, 2, 2, 2, 100, 368, 3, 2, 2, 2, 102, 371, 3, 2, 2, 2, 104, 374, 3, 2, 2, 2, 106, 376, 3, 2, 2, 2, 108, 378, 3, 2, 2, 2, 110, 381, 3, 2, 2, 2, 112, 384, 3, 2, 2, 2, 114, 387, 3, 2, 2, 2, 116, 390, 3, 2, 2, 2, 118, 394, 3, 2, 2, 2, 120, 397, 3, 2, 2, 2, 122, 400, 3, 2, 2, 2, 124, 402, 3, 2, 2, 2, 126, 405, 3, 2, 2, 2, 128, 408, 3, 2, 2, 2, 130, 411, 3, 2, 2, 2, 132, 414, 3, 2, 2, 2, 134, 417, 3, 2, 2, 2, 136, 420, 3, 2, 2, 2, 138, 423, 3, 2, 2, 2, 140, 426, 3, 2, 2, 2, 142, 430, 3, 2, 2, 2, 144, 434, 3, 2, 2, 2, 146, 439, 3, 2, 2, 2, 148, 448, 3, 2, 2, 2, 150, 466, 3, 2, 2, 2, 152, 479, 3, 2, 2, 2, 154, 527, 3, 2, 2, 2, 156, 529, 3, 2, 2, 2, 158, 546, 3, 2, 2, 2, 160, 551, 3, 2, 2, 2, 162, 557, 3, 2, 2, 2, 164, 600, 3, 2, 2, 2, 166, 602, 3, 2, 2, 2, 168, 606, 3, 2, 2, 2, 170, 621, 3, 2, 2, 2, 172, 625, 3, 2, 2, 2, 174, 176, 9, 2, 2, 2, 175, 174, 3, 2, 2, 2, 176, 177, 3, 2, 2, 2, 177, 175, 3, 2, 2, 2, 177, 178, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 180, 8, 2, 2, 2, 180, 5, 3, 2, 2, 2, 181, 182, 7, 49, 2, 2, 182, 183, 7, 49, 2, 2, 183, 187, 3, 2, 2, 2, 184, 186, 11, 2, 2, 2, 185, 184, 3, 2, 2, 2, 186, 189, 3, 2, 2, 2, 187, 188, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 188, 190, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 190, 203, 9, 3, 2, 2, 191, 192, 7, 49, 2, 2, 192, 193, 7, 44, 2, 2, 193, 197, 3, 2, 2, 2, 194, 196, 11, 2, 2, 2, 195, 194, 3, 2, 2, 2, 196, 199, 3, 2, 2, 2, 197, 198, 3, 2, 2, 2, 197, 195, 3, 2, 2, 2, 198, 200, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 200, 201, 7, 44, 2, 2, 201, 203, 7, 49, 2, 2, 202, 181, 3, 2, 2, 2, 202, 191, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 205, 8, 3, 2, 2, 205, 7, 3, 2, 2, 2, 206, 207, 7, 125, 2, 2, 207, 9, 3, 2, 2, 2, 208, 209, 7, 127, 2, 2, 209, 11, 3, 2, 2, 2, 210, 211, 7, 93, 2, 2, 211, 13, 3, 2, 2, 2, 212, 213, 7, 95, 2, 2, 213, 15, 3, 2, 2, 2, 214, 215, 7, 42, 2, 2, 215, 17, 3, 2, 2, 2, 216, 217, 7, 43, 2, 2, 217, 19, 3, 2, 2, 2, 218, 219, 7, 48, 2, 2, 219, 220, 3, 2, 2, 2, 220, 221, 8, 10, 3, 2, 221, 21, 3, 2, 2, 2, 222, 223, 7, 65, 2, 2, 223, 224, 7, 48, 2, 2, 224, 225, 3, 2, 2, 2, 225, 226, 8, 11, 3, 2, 226, 23, 3, 2, 2, 2, 227, 228, 7, 46, 2, 2, 228, 25, 3, 2, 2, 2, 229, 230, 7, 61, 2, 2, 230, 27, 3, 2, 2, 2, 231, 232, 7, 107, 2, 2, 232, 233, 7, 104, 2, 2, 233, 29, 3, 2, 2, 2, 234, 235, 7, 107, 2, 2, 235, 236, 7, 112, 2, 2, 236, 31, 3, 2, 2, 2, 237, 238, 7, 103, 2, 2, 238, 239, 7, 110, 2, 2, 239, 240, 7, 117, 2, 2, 240, 241, 7, 103, 2, 2, 241, 33, 3, 2, 2, 2, 242, 243, 7, 121, 2, 2, 243, 244, 7, 106, 2, 2, 244, 245, 7, 107, 2, 2, 245, 246, 7, 110, 2, 2, 246, 247, 7, 103, 2, 2, 247, 35, 3, 2, 2, 2, 248, 249, 7, 102, 2, 2, 249, 250, 7, 113, 2, 2, 250, 37, 3, 2, 2, 2, 251, 252, 7, 104, 2, 2, 252, 253, 7, 113, 2, 2, 253, 254, 7, 116, 2, 2, 254, 39, 3, 2, 2, 2, 255, 256, 7, 101, 2, 2, 256, 257, 7, 113, 2, 2, 257, 258, 7, 112, 2, 2, 258, 259, 7, 118, 2, 2, 259, 260, 7, 107, 2, 2, 260, 261, 7, 112, 2, 2, 261, 262, 7, 119, 2, 2, 262, 263, 7, 103, 2, 2, 263, 41, 3, 2, 2, 2, 264, 265, 7, 100, 2, 2, 265, 266, 7, 116, 2, 2, 266, 267, 7, 103, 2, 2, 267, 268, 7, 99, 2, 2, 268, 269, 7, 109, 2, 2, 269, 43, 3, 2, 2, 2, 270, 271, 7, 116, 2, 2, 271, 272, 7, 103, 2, 2, 272, 273, 7, 118, 2, 2, 273, 274, 7, 119, 2, 2, 274, 275, 7, 116, 2, 2, 275, 276, 7, 112, 2, 2, 276, 45, 3, 2, 2, 2, 277, 278, 7, 112, 2, 2, 278, 279, 7, 103, 2, 2, 279, 280, 7, 121, 2, 2, 280, 47, 3, 2, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 116, 2, 2, 283, 284, 7, 123, 2, 2, 284, 49, 3, 2, 2, 2, 285, 286, 7, 101, 2, 2, 286, 287, 7, 99, 2, 2, 287, 288, 7, 118, 2, 2, 288, 289, 7, 101, 2, 2, 289, 290, 7, 106, 2, 2, 290, 51, 3, 2, 2, 2, 291, 292, 7, 118, 2, 2, 292, 293, 7, 106, 2, 2, 293, 294, 7, 116, 2, 2, 294, 295, 7, 113, 2, 2, 295, 296, 7, 121, 2, 2, 296, 53, 3, 2, 2, 2, 297, 298, 7, 118, 2, 2, 298, 299, 7, 106, 2, 2, 299, 300, 7, 107, 2, 2, 300, 301, 7, 117, 2, 2, 301, 55, 3, 2, 2, 2, 302, 303, 7, 107, 2, 2, 303, 304, 7, 112, 2, 2, 304, 305, 7, 117, 2, 2, 305, 306, 7, 118, 2, 2, 306, 307, 7, 99, 2, 2, 307, 308, 7, 112, 2, 2, 308, 309, 7, 101, 2, 2, 309, 310, 7, 103, 2, 2, 310, 311, 7, 113, 2, 2, 311, 312, 7, 104, 2, 2, 312, 57, 3, 2, 2, 2, 313, 314, 7, 35, 2, 2, 314, 59, 3, 2, 2, 2, 315, 316, 7, 128, 2, 2, 316, 61, 3, 2, 2, 2, 317, 318, 7, 44, 2, 2, 318, 63, 3, 2, 2, 2, 319, 320, 7, 49, 2, 2, 320, 321, 6, 32, 2, 2, 321, 65, 3, 2, 2, 2, 322, 323, 7, 39, 2, 2, 323, 67, 3, 2, 2, 2, 324, 325, 7, 45, 2, 2, 325, 69, 3, 2, 2, 2, 326, 327, 7, 47, 2, 2, 327, 71, 3, 2, 2, 2, 328, 329, 7, 62, 2, 2, 329, 330, 7, 62, 2, 2, 330, 73, 3, 2, 2, 2, 331, 332, 7, 64, 2, 2, 332, 333, 7, 64, 2, 2, 333, 75, 3, 2, 2, 2, 334, 335, 7, 64, 2, 2, 335, 336, 7, 64, 2, 2, 336, 337, 7, 64, 2, 2, 337, 77, 3, 2, 2, 2, 338, 339, 7, 62, 2, 2, 339, 79, 3, 2, 2, 2, 340, 341, 7, 62, 2, 2, 341, 342, 7, 63, 2, 2, 342, 81, 3, 2, 2, 2, 343, 344, 7, 64, 2, 2, 344, 83, 3, 2, 2, 2, 345, 346, 7, 64, 2, 2, 346, 347, 7, 63, 2, 2, 347, 85, 3, 2, 2, 2, 348, 349, 7, 63, 2, 2, 349, 350, 7, 63, 2, 2, 350, 87, 3, 2, 2, 2, 351, 352, 7, 63, 2, 2, 352, 353, 7, 63, 2, 2, 353, 354, 7, 63, 2, 2, 354, 89, 3, 2, 2, 2, 355, 356, 7, 35, 2, 2, 356, 357, 7, 63, 2, 2, 357, 91, 3, 2, 2, 2, 358, 359, 7, 35, 2, 2, 359, 360, 7, 63, 2, 2, 360, 361, 7, 63, 2, 2, 361, 93, 3, 2, 2, 2, 362, 363, 7, 40, 2, 2, 363, 95, 3, 2, 2, 2, 364, 365, 7, 96, 2, 2, 365, 97, 3, 2, 2, 2, 366, 367, 7, 126, 2, 2, 367, 99, 3, 2, 2, 2, 368, 369, 7, 40, 2, 2, 369, 370, 7, 40, 2, 2, 370, 101, 3, 2, 2, 2, 371, 372, 7, 126, 2, 2, 372, 373, 7, 126, 2, 2, 373, 103, 3, 2, 2, 2, 374, 375, 7, 65, 2, 2, 375, 105, 3, 2, 2, 2, 376, 377, 7, 60, 2, 2, 377, 107, 3, 2, 2, 2, 378, 379, 7, 65, 2, 2, 379, 380, 7, 60, 2, 2, 380, 109, 3, 2, 2, 2, 381, 382, 7, 60, 2, 2, 382, 383, 7, 60, 2, 2, 383, 111, 3, 2, 2, 2, 384, 385, 7, 47, 2, 2, 385, 386, 7, 64, 2, 2, 386, 113, 3, 2, 2, 2, 387, 388, 7, 63, 2, 2, 388, 389, 7, 128, 2, 2, 389, 115, 3, 2, 2, 2, 390, 391, 7, 63, 2, 2, 391, 392, 7, 63, 2, 2, 392, 393, 7, 128, 2, 2, 393, 117, 3, 2, 2, 2, 394, 395, 7, 45, 2, 2, 395, 396, 7, 45, 2, 2, 396, 119, 3, 2, 2, 2, 397, 398, 7, 47, 2, 2, 398, 399, 7, 47, 2, 2, 399, 121, 3, 2, 2, 2, 400, 401, 7, 63, 2, 2, 401, 123, 3, 2, 2, 2, 402, 403, 7, 45, 2, 2, 403, 404, 7, 63, 2, 2, 404, 125, 3, 2, 2, 2, 405, 406, 7, 47, 2, 2, 406, 407, 7, 63, 2, 2, 407, 127, 3, 2, 2, 2, 408, 409, 7, 44, 2, 2, 409, 410, 7, 63, 2, 2, 410, 129, 3, 2, 2, 2, 411, 412, 7, 49, 2, 2, 412, 413, 7, 63, 2, 2, 413, 131, 3, 2, 2, 2, 414, 415, 7, 39, 2, 2, 415, 416, 7, 63, 2, 2, 416, 133, 3, 2, 2, 2, 417, 418, 7, 40, 2, 2, 418, 419, 7, 63, 2, 2, 419, 135, 3, 2, 2, 2, 420, 421, 7, 96, 2, 2, 421, 422, 7, 63, 2, 2, 422, 137, 3, 2, 2, 2, 423, 424, 7, 126, 2, 2, 424, 425, 7, 63, 2, 2, 425, 139, 3, 2, 2, 2, 426, 427, 7, 62, 2, 2, 427, 428, 7, 62, 2, 2, 428, 429, 7, 63, 2, 2, 429, 141, 3, 2, 2, 2, 430, 431, 7, 64, 2, 2, 431, 432, 7, 64, 2, 2, 432, 433, 7, 63, 2, 2, 433, 143, 3, 2, 2, 2, 434, 435, 7, 64, 2, 2, 435, 436, 7, 64, 2, 2, 436, 437, 7, 64, 2, 2, 437, 438, 7, 63, 2, 2, 438, 145, 3, 2, 2, 2, 439, 441, 7, 50, 2, 2, 440, 442, 9, 4, 2, 2, 441, 440, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 441, 3, 2, 2, 2, 443, 444, 3, 2, 2, 2, 444, 446, 3, 2, 2, 2, 445, 447, 9, 5, 2, 2, 446, 445, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 147, 3, 2, 2, 2, 448, 449, 7, 50, 2, 2, 449, 451, 9, 6, 2, 2, 450, 452, 9, 7, 2, 2, 451, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 456, 3, 2, 2, 2, 455, 457, 9, 5, 2, 2, 456, 455, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 149, 3, 2, 2, 2, 458, 467, 7, 50, 2, 2, 459, 463, 9, 8, 2, 2, 460, 462, 9, 9, 2, 2, 461, 460, 3, 2, 2, 2, 462, 465, 3, 2, 2, 2, 463, 461, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 467, 3, 2, 2, 2, 465, 463, 3, 2, 2, 2, 466, 458, 3, 2, 2, 2, 466, 459, 3, 2, 2, 2, 467, 469, 3, 2, 2, 2, 468, 470, 9, 10, 2, 2, 469, 468, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 151, 3, 2, 2, 2, 471, 480, 7, 50, 2, 2, 472, 476, 9, 8, 2, 2, 473, 475, 9, 9, 2, 2, 474, 473, 3, 2, 2, 2, 475, 478, 3, 2, 2, 2, 476, 474, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 480, 3, 2, 2, 2, 478, 476, 3, 2, 2, 2, 479, 471, 3, 2, 2, 2, 479, 472, 3, 2, 2, 2, 480, 487, 3, 2, 2, 2, 481, 483, 5, 20, 10, 2, 482, 484, 9, 9, 2, 2, 483, 482, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 483, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 488, 3, 2, 2, 2, 487, 481, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 498, 3, 2, 2, 2, 489, 491, 9, 11, 2, 2, 490, 492, 9, 12, 2, 2, 491, 490, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 494, 3, 2, 2, 2, 493, 495, 9, 9, 2, 2, 494, 493, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 499, 3, 2, 2, 2, 498, 489, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, 499, 501, 3, 2, 2, 2, 500, 502, 9, 13, 2, 2, 501, 500, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 153, 3, 2, 2, 2, 503, 511, 7, 36, 2, 2, 504, 505, 7, 94, 2, 2, 505, 510, 7, 36, 2, 2, 506, 507, 7, 94, 2, 2, 507, 510, 7, 94, 2, 2, 508, 510, 10, 14, 2, 2, 509, 504, 3, 2, 2, 2, 509, 506, 3, 2, 2, 2, 509, 508, 3, 2, 2, 2, 510, 513, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 512, 514, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 514, 528, 7, 36, 2, 2, 515, 523, 7, 41, 2, 2, 516, 517, 7, 94, 2, 2, 517, 522, 7, 41, 2, 2, 518, 519, 7, 94, 2, 2, 519, 522, 7, 94, 2, 2, 520, 522, 10, 15, 2, 2, 521, 516, 3, 2, 2, 2, 521, 518, 3, 2, 2, 2, 521, 520, 3, 2, 2, 2, 522, 525, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 523, 521, 3, 2, 2, 2, 524, 526, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 526, 528, 7, 41, 2, 2, 527, 503, 3, 2, 2, 2, 527, 515, 3, 2, 2, 2, 528, 155, 3, 2, 2, 2, 529, 533, 7, 49, 2, 2, 530, 531, 7, 94, 2, 2, 531, 534, 10, 16, 2, 2, 532, 534, 10, 17, 2, 2, 533, 530, 3, 2, 2, 2, 533, 532, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 535, 533, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 541, 7, 49, 2, 2, 538, 540, 9, 18, 2, 2, 539, 538, 3, 2, 2, 2, 540, 543, 3, 2, 2, 2, 541, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 544, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 544, 545, 6, 78, 3, 2, 545, 157, 3, 2, 2, 2, 546, 547, 7, 118, 2, 2, 547, 548, 7, 116, 2, 2, 548, 549, 7, 119, 2, 2, 549, 550, 7, 103, 2, 2, 550, 159, 3, 2, 2, 2, 551, 552, 7, 104, 2, 2, 552, 553, 7, 99, 2, 2, 553, 554, 7, 110, 2, 2, 554, 555, 7, 117, 2, 2, 555, 556, 7, 103, 2, 2, 556, 161, 3, 2, 2, 2, 557, 558, 7, 112, 2, 2, 558, 559, 7, 119, 2, 2, 559, 560, 7, 110, 2, 2, 560, 561, 7, 110, 2, 2, 561, 163, 3, 2, 2, 2, 562, 563, 7, 100, 2, 2, 563, 564, 7, 113, 2, 2, 564, 565, 7, 113, 2, 2, 565, 566, 7, 110, 2, 2, 566, 567, 7, 103, 2, 2, 567, 568, 7, 99, 2, 2, 568, 601, 7, 112, 2, 2, 569, 570, 7, 100, 2, 2, 570, 571, 7, 123, 2, 2, 571, 572, 7, 118, 2, 2, 572, 601, 7, 103, 2, 2, 573, 574, 7, 117, 2, 2, 574, 575, 7, 106, 2, 2, 575, 576, 7, 113, 2, 2, 576, 577, 7, 116, 2, 2, 577, 601, 7, 118, 2, 2, 578, 579, 7, 101, 2, 2, 579, 580, 7, 106, 2, 2, 580, 581, 7, 99, 2, 2, 581, 601, 7, 116, 2, 2, 582, 583, 7, 107, 2, 2, 583, 584, 7, 112, 2, 2, 584, 601, 7, 118, 2, 2, 585, 586, 7, 110, 2, 2, 586, 587, 7, 113, 2, 2, 587, 588, 7, 112, 2, 2, 588, 601, 7, 105, 2, 2, 589, 590, 7, 104, 2, 2, 590, 591, 7, 110, 2, 2, 591, 592, 7, 113, 2, 2, 592, 593, 7, 99, 2, 2, 593, 601, 7, 118, 2, 2, 594, 595, 7, 102, 2, 2, 595, 596, 7, 113, 2, 2, 596, 597, 7, 119, 2, 2, 597, 598, 7, 100, 2, 2, 598, 599, 7, 110, 2, 2, 599, 601, 7, 103, 2, 2, 600, 562, 3, 2, 2, 2, 600, 569, 3, 2, 2, 2, 600, 573, 3, 2, 2, 2, 600, 578, 3, 2, 2, 2, 600, 582, 3, 2, 2, 2, 600, 585, 3, 2, 2, 2, 600, 589, 3, 2, 2, 2, 600, 594, 3, 2, 2, 2, 601, 165, 3, 2, 2, 2, 602, 603, 7, 102, 2, 2, 603, 604, 7, 103, 2, 2, 604, 605, 7, 104, 2, 2, 605, 167, 3, 2, 2, 2, 606, 610, 9, 19, 2, 2, 607, 609, 9, 20, 2, 2, 608, 607, 3, 2, 2, 2, 609, 612, 3, 2, 2, 2, 610, 608, 3, 2, 2, 2, 610, 611, 3, 2, 2, 2, 611, 169, 3, 2, 2, 2, 612, 610, 3, 2, 2, 2, 613, 622, 7, 50, 2, 2, 614, 618, 9, 8, 2, 2, 615, 617, 9, 9, 2, 2, 616, 615, 3, 2, 2, 2, 617, 620, 3, 2, 2, 2, 618, 616, 3, 2, 2, 2, 618, 619, 3, 2, 2, 2, 619, 622, 3, 2, 2, 2, 620, 618, 3, 2, 2, 2, 621, 613, 3, 2, 2, 2, 621, 614, 3, 2, 2, 2, 622, 623, 3, 2, 2, 2, 623, 624, 8, 85, 4, 2, 624, 171, 3, 2, 2, 2, 625, 629, 9, 19, 2, 2, 626, 628, 9, 20, 2, 2, 627, 626, 3, 2, 2, 2, 628, 631, 3, 2, 2, 2, 629, 627, 3, 2, 2, 2, 629, 630, 3, 2, 2, 2, 630, 632, 3, 2, 2, 2, 631, 629, 3, 2, 2, 2, 632, 633, 8, 86, 4, 2, 633, 173, 3, 2, 2, 2, 36, 2, 3, 177, 187, 197, 202, 443, 446, 453, 456, 463, 466, 469, 476, 479, 485, 487, 491, 496, 498, 501, 509, 511, 521, 523, 527, 533, 535, 541, 600, 610, 618, 621, 629, 5, 8, 2, 2, 4, 3, 2, 4, 2, 2] \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.tokens b/packages/kbn-monaco/src/painless/antlr/painless_lexer.tokens new file mode 100644 index 00000000000000..ff62343c92ba5a --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.tokens @@ -0,0 +1,158 @@ +WS=1 +COMMENT=2 +LBRACK=3 +RBRACK=4 +LBRACE=5 +RBRACE=6 +LP=7 +RP=8 +DOT=9 +NSDOT=10 +COMMA=11 +SEMICOLON=12 +IF=13 +IN=14 +ELSE=15 +WHILE=16 +DO=17 +FOR=18 +CONTINUE=19 +BREAK=20 +RETURN=21 +NEW=22 +TRY=23 +CATCH=24 +THROW=25 +THIS=26 +INSTANCEOF=27 +BOOLNOT=28 +BWNOT=29 +MUL=30 +DIV=31 +REM=32 +ADD=33 +SUB=34 +LSH=35 +RSH=36 +USH=37 +LT=38 +LTE=39 +GT=40 +GTE=41 +EQ=42 +EQR=43 +NE=44 +NER=45 +BWAND=46 +XOR=47 +BWOR=48 +BOOLAND=49 +BOOLOR=50 +COND=51 +COLON=52 +ELVIS=53 +REF=54 +ARROW=55 +FIND=56 +MATCH=57 +INCR=58 +DECR=59 +ASSIGN=60 +AADD=61 +ASUB=62 +AMUL=63 +ADIV=64 +AREM=65 +AAND=66 +AXOR=67 +AOR=68 +ALSH=69 +ARSH=70 +AUSH=71 +OCTAL=72 +HEX=73 +INTEGER=74 +DECIMAL=75 +STRING=76 +REGEX=77 +TRUE=78 +FALSE=79 +NULL=80 +PRIMITIVE=81 +DEF=82 +ID=83 +DOTINTEGER=84 +DOTID=85 +'{'=3 +'}'=4 +'['=5 +']'=6 +'('=7 +')'=8 +'.'=9 +'?.'=10 +','=11 +';'=12 +'if'=13 +'in'=14 +'else'=15 +'while'=16 +'do'=17 +'for'=18 +'continue'=19 +'break'=20 +'return'=21 +'new'=22 +'try'=23 +'catch'=24 +'throw'=25 +'this'=26 +'instanceof'=27 +'!'=28 +'~'=29 +'*'=30 +'/'=31 +'%'=32 +'+'=33 +'-'=34 +'<<'=35 +'>>'=36 +'>>>'=37 +'<'=38 +'<='=39 +'>'=40 +'>='=41 +'=='=42 +'==='=43 +'!='=44 +'!=='=45 +'&'=46 +'^'=47 +'|'=48 +'&&'=49 +'||'=50 +'?'=51 +':'=52 +'?:'=53 +'::'=54 +'->'=55 +'=~'=56 +'==~'=57 +'++'=58 +'--'=59 +'='=60 +'+='=61 +'-='=62 +'*='=63 +'/='=64 +'%='=65 +'&='=66 +'^='=67 +'|='=68 +'<<='=69 +'>>='=70 +'>>>='=71 +'true'=78 +'false'=79 +'null'=80 +'def'=82 diff --git a/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts b/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts new file mode 100644 index 00000000000000..eb335c73d94b26 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_lexer.ts @@ -0,0 +1,538 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_lexer.g4 by ANTLR 4.7.3-SNAPSHOT + + +import { ATN } from "antlr4ts/atn/ATN"; +import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; +import { CharStream } from "antlr4ts/CharStream"; +import { Lexer } from "antlr4ts/Lexer"; +import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator"; +import { NotNull } from "antlr4ts/Decorators"; +import { Override } from "antlr4ts/Decorators"; +import { RuleContext } from "antlr4ts/RuleContext"; +import { Vocabulary } from "antlr4ts/Vocabulary"; +import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; + +import * as Utils from "antlr4ts/misc/Utils"; + + +export class painless_lexer extends Lexer { + public static readonly WS = 1; + public static readonly COMMENT = 2; + public static readonly LBRACK = 3; + public static readonly RBRACK = 4; + public static readonly LBRACE = 5; + public static readonly RBRACE = 6; + public static readonly LP = 7; + public static readonly RP = 8; + public static readonly DOT = 9; + public static readonly NSDOT = 10; + public static readonly COMMA = 11; + public static readonly SEMICOLON = 12; + public static readonly IF = 13; + public static readonly IN = 14; + public static readonly ELSE = 15; + public static readonly WHILE = 16; + public static readonly DO = 17; + public static readonly FOR = 18; + public static readonly CONTINUE = 19; + public static readonly BREAK = 20; + public static readonly RETURN = 21; + public static readonly NEW = 22; + public static readonly TRY = 23; + public static readonly CATCH = 24; + public static readonly THROW = 25; + public static readonly THIS = 26; + public static readonly INSTANCEOF = 27; + public static readonly BOOLNOT = 28; + public static readonly BWNOT = 29; + public static readonly MUL = 30; + public static readonly DIV = 31; + public static readonly REM = 32; + public static readonly ADD = 33; + public static readonly SUB = 34; + public static readonly LSH = 35; + public static readonly RSH = 36; + public static readonly USH = 37; + public static readonly LT = 38; + public static readonly LTE = 39; + public static readonly GT = 40; + public static readonly GTE = 41; + public static readonly EQ = 42; + public static readonly EQR = 43; + public static readonly NE = 44; + public static readonly NER = 45; + public static readonly BWAND = 46; + public static readonly XOR = 47; + public static readonly BWOR = 48; + public static readonly BOOLAND = 49; + public static readonly BOOLOR = 50; + public static readonly COND = 51; + public static readonly COLON = 52; + public static readonly ELVIS = 53; + public static readonly REF = 54; + public static readonly ARROW = 55; + public static readonly FIND = 56; + public static readonly MATCH = 57; + public static readonly INCR = 58; + public static readonly DECR = 59; + public static readonly ASSIGN = 60; + public static readonly AADD = 61; + public static readonly ASUB = 62; + public static readonly AMUL = 63; + public static readonly ADIV = 64; + public static readonly AREM = 65; + public static readonly AAND = 66; + public static readonly AXOR = 67; + public static readonly AOR = 68; + public static readonly ALSH = 69; + public static readonly ARSH = 70; + public static readonly AUSH = 71; + public static readonly OCTAL = 72; + public static readonly HEX = 73; + public static readonly INTEGER = 74; + public static readonly DECIMAL = 75; + public static readonly STRING = 76; + public static readonly REGEX = 77; + public static readonly TRUE = 78; + public static readonly FALSE = 79; + public static readonly NULL = 80; + public static readonly PRIMITIVE = 81; + public static readonly DEF = 82; + public static readonly ID = 83; + public static readonly DOTINTEGER = 84; + public static readonly DOTID = 85; + public static readonly AFTER_DOT = 1; + + // tslint:disable:no-trailing-whitespace + public static readonly channelNames: string[] = [ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + ]; + + // tslint:disable:no-trailing-whitespace + public static readonly modeNames: string[] = [ + "DEFAULT_MODE", "AFTER_DOT", + ]; + + public static readonly ruleNames: string[] = [ + "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", "RP", "DOT", + "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", "DO", "FOR", + "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", "THIS", + "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", "SUB", "LSH", + "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", "NER", "BWAND", + "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", "REF", "ARROW", + "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", "AMUL", "ADIV", + "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", "OCTAL", "HEX", + "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", "NULL", "PRIMITIVE", + "DEF", "ID", "DOTINTEGER", "DOTID", + ]; + + private static readonly _LITERAL_NAMES: Array = [ + undefined, undefined, undefined, "'{'", "'}'", "'['", "']'", "'('", "')'", + "'.'", "'?.'", "','", "';'", "'if'", "'in'", "'else'", "'while'", "'do'", + "'for'", "'continue'", "'break'", "'return'", "'new'", "'try'", "'catch'", + "'throw'", "'this'", "'instanceof'", "'!'", "'~'", "'*'", "'/'", "'%'", + "'+'", "'-'", "'<<'", "'>>'", "'>>>'", "'<'", "'<='", "'>'", "'>='", "'=='", + "'==='", "'!='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'?'", + "':'", "'?:'", "'::'", "'->'", "'=~'", "'==~'", "'++'", "'--'", "'='", + "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'<<='", + "'>>='", "'>>>='", undefined, undefined, undefined, undefined, undefined, + undefined, "'true'", "'false'", "'null'", undefined, "'def'", + ]; + private static readonly _SYMBOLIC_NAMES: Array = [ + undefined, "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", + "RP", "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", + "DO", "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", + "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", + "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", + "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", + "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", + "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", + "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", + "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", + ]; + public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(painless_lexer._LITERAL_NAMES, painless_lexer._SYMBOLIC_NAMES, []); + + // @Override + // @NotNull + public get vocabulary(): Vocabulary { + return painless_lexer.VOCABULARY; + } + // tslint:enable:no-trailing-whitespace + + + constructor(input: CharStream) { + super(input); + this._interp = new LexerATNSimulator(painless_lexer._ATN, this); + } + + // @Override + public get grammarFileName(): string { return "painless_lexer.g4"; } + + // @Override + public get ruleNames(): string[] { return painless_lexer.ruleNames; } + + // @Override + public get serializedATN(): string { return painless_lexer._serializedATN; } + + // @Override + public get channelNames(): string[] { return painless_lexer.channelNames; } + + // @Override + public get modeNames(): string[] { return painless_lexer.modeNames; } + + // @Override + public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + // DO NOT CHANGE + // This is a manual fix to handle slashes appropriately + case 31: + return this.DIV_sempred(_localctx, predIndex); + + // DO NOT CHANGE + // This is a manual fix to handle regexes appropriately + case 77: + return this.REGEX_sempred(_localctx, predIndex); + } + return true; + } + private DIV_sempred(_localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.isSlashRegex() == false ; + } + return true; + } + private REGEX_sempred(_localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.isSlashRegex() ; + } + return true; + } + + private static readonly _serializedATNSegments: number = 2; + private static readonly _serializedATNSegment0: string = + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02W\u027A\b\x01" + + "\b\x01\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06" + + "\t\x06\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f" + + "\x04\r\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04" + + "\x12\t\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04" + + "\x17\t\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04" + + "\x1C\t\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04" + + "\"\t\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*" + + "\t*\x04+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x04" + + "3\t3\x044\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04" + + "<\t<\x04=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04" + + "E\tE\x04F\tF\x04G\tG\x04H\tH\x04I\tI\x04J\tJ\x04K\tK\x04L\tL\x04M\tM\x04" + + "N\tN\x04O\tO\x04P\tP\x04Q\tQ\x04R\tR\x04S\tS\x04T\tT\x04U\tU\x04V\tV\x03" + + "\x02\x06\x02\xB0\n\x02\r\x02\x0E\x02\xB1\x03\x02\x03\x02\x03\x03\x03\x03" + + "\x03\x03\x03\x03\x07\x03\xBA\n\x03\f\x03\x0E\x03\xBD\v\x03\x03\x03\x03" + + "\x03\x03\x03\x03\x03\x03\x03\x07\x03\xC4\n\x03\f\x03\x0E\x03\xC7\v\x03" + + "\x03\x03\x03\x03\x05\x03\xCB\n\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03" + + "\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03\t\x03" + + "\n\x03\n\x03\n\x03\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\r\x03" + + "\r\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03" + + "\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" + + "\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03" + + "\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03" + + "\x15\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03" + + "\x16\x03\x16\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03" + + "\x18\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03" + + "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03" + + "\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03" + + "\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 \x03" + + " \x03 \x03!\x03!\x03\"\x03\"\x03#\x03#\x03$\x03$\x03$\x03%\x03%\x03%\x03" + + "&\x03&\x03&\x03&\x03\'\x03\'\x03(\x03(\x03(\x03)\x03)\x03*\x03*\x03*\x03" + + "+\x03+\x03+\x03,\x03,\x03,\x03,\x03-\x03-\x03-\x03.\x03.\x03.\x03.\x03" + + "/\x03/\x030\x030\x031\x031\x032\x032\x032\x033\x033\x033\x034\x034\x03" + + "5\x035\x036\x036\x036\x037\x037\x037\x038\x038\x038\x039\x039\x039\x03" + + ":\x03:\x03:\x03:\x03;\x03;\x03;\x03<\x03<\x03<\x03=\x03=\x03>\x03>\x03" + + ">\x03?\x03?\x03?\x03@\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03C\x03" + + "C\x03C\x03D\x03D\x03D\x03E\x03E\x03E\x03F\x03F\x03F\x03F\x03G\x03G\x03" + + "G\x03G\x03H\x03H\x03H\x03H\x03H\x03I\x03I\x06I\u01BA\nI\rI\x0EI\u01BB" + + "\x03I\x05I\u01BF\nI\x03J\x03J\x03J\x06J\u01C4\nJ\rJ\x0EJ\u01C5\x03J\x05" + + "J\u01C9\nJ\x03K\x03K\x03K\x07K\u01CE\nK\fK\x0EK\u01D1\vK\x05K\u01D3\n" + + "K\x03K\x05K\u01D6\nK\x03L\x03L\x03L\x07L\u01DB\nL\fL\x0EL\u01DE\vL\x05" + + "L\u01E0\nL\x03L\x03L\x06L\u01E4\nL\rL\x0EL\u01E5\x05L\u01E8\nL\x03L\x03" + + "L\x05L\u01EC\nL\x03L\x06L\u01EF\nL\rL\x0EL\u01F0\x05L\u01F3\nL\x03L\x05" + + "L\u01F6\nL\x03M\x03M\x03M\x03M\x03M\x03M\x07M\u01FE\nM\fM\x0EM\u0201\v" + + "M\x03M\x03M\x03M\x03M\x03M\x03M\x03M\x07M\u020A\nM\fM\x0EM\u020D\vM\x03" + + "M\x05M\u0210\nM\x03N\x03N\x03N\x03N\x06N\u0216\nN\rN\x0EN\u0217\x03N\x03" + + "N\x07N\u021C\nN\fN\x0EN\u021F\vN\x03N\x03N\x03O\x03O\x03O\x03O\x03O\x03" + + "P\x03P\x03P\x03P\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x03Q\x03R\x03R\x03R\x03" + + "R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03" + + "R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03R\x03" + + "R\x03R\x03R\x03R\x03R\x03R\x03R\x05R\u0259\nR\x03S\x03S\x03S\x03S\x03" + + "T\x03T\x07T\u0261\nT\fT\x0ET\u0264\vT\x03U\x03U\x03U\x07U\u0269\nU\fU" + + "\x0EU\u026C\vU\x05U\u026E\nU\x03U\x03U\x03V\x03V\x07V\u0274\nV\fV\x0E" + + "V\u0277\vV\x03V\x03V\x07\xBB\xC5\u01FF\u020B\u0217\x02\x02W\x04\x02\x03" + + "\x06\x02\x04\b\x02\x05\n\x02\x06\f\x02\x07\x0E\x02\b\x10\x02\t\x12\x02" + + "\n\x14\x02\v\x16\x02\f\x18\x02\r\x1A\x02\x0E\x1C\x02\x0F\x1E\x02\x10 " + + "\x02\x11\"\x02\x12$\x02\x13&\x02\x14(\x02\x15*\x02\x16,\x02\x17.\x02\x18" + + "0\x02\x192\x02\x1A4\x02\x1B6\x02\x1C8\x02\x1D:\x02\x1E<\x02\x1F>\x02 " + + "@\x02!B\x02\"D\x02#F\x02$H\x02%J\x02&L\x02\'N\x02(P\x02)R\x02*T\x02+V" + + "\x02,X\x02-Z\x02.\\\x02/^\x020`\x021b\x022d\x023f\x024h\x025j\x026l\x02" + + "7n\x028p\x029r\x02:t\x02;v\x02|\x02?~\x02@\x80\x02A\x82\x02" + + "B\x84\x02C\x86\x02D\x88\x02E\x8A\x02F\x8C\x02G\x8E\x02H\x90\x02I\x92\x02" + + "J\x94\x02K\x96\x02L\x98\x02M\x9A\x02N\x9C\x02O\x9E\x02P\xA0\x02Q\xA2\x02" + + "R\xA4\x02S\xA6\x02T\xA8\x02U\xAA\x02V\xAC\x02W\x04\x02\x03\x15\x05\x02" + + "\v\f\x0F\x0F\"\"\x04\x02\f\f\x0F\x0F\x03\x0229\x04\x02NNnn\x04\x02ZZz" + + "z\x05\x022;CHch\x03\x023;\x03\x022;\b\x02FFHHNNffhhnn\x04\x02GGgg\x04" + + "\x02--//\x06\x02FFHHffhh\x04\x02$$^^\x04\x02))^^\x03\x02\f\f\x04\x02\f" + + "\f11\t\x02WWeekknouuwwzz\x05\x02C\\aac|\x06\x022;C\\aac|\x02\u02A0\x02" + + "\x04\x03\x02\x02\x02\x02\x06\x03\x02\x02\x02\x02\b\x03\x02\x02\x02\x02" + + "\n\x03\x02\x02\x02\x02\f\x03\x02\x02\x02\x02\x0E\x03\x02\x02\x02\x02\x10" + + "\x03\x02\x02\x02\x02\x12\x03\x02\x02\x02\x02\x14\x03\x02\x02\x02\x02\x16" + + "\x03\x02\x02\x02\x02\x18\x03\x02\x02\x02\x02\x1A\x03\x02\x02\x02\x02\x1C" + + "\x03\x02\x02\x02\x02\x1E\x03\x02\x02\x02\x02 \x03\x02\x02\x02\x02\"\x03" + + "\x02\x02\x02\x02$\x03\x02\x02\x02\x02&\x03\x02\x02\x02\x02(\x03\x02\x02" + + "\x02\x02*\x03\x02\x02\x02\x02,\x03\x02\x02\x02\x02.\x03\x02\x02\x02\x02" + + "0\x03\x02\x02\x02\x022\x03\x02\x02\x02\x024\x03\x02\x02\x02\x026\x03\x02" + + "\x02\x02\x028\x03\x02\x02\x02\x02:\x03\x02\x02\x02\x02<\x03\x02\x02\x02" + + "\x02>\x03\x02\x02\x02\x02@\x03\x02\x02\x02\x02B\x03\x02\x02\x02\x02D\x03" + + "\x02\x02\x02\x02F\x03\x02\x02\x02\x02H\x03\x02\x02\x02\x02J\x03\x02\x02" + + "\x02\x02L\x03\x02\x02\x02\x02N\x03\x02\x02\x02\x02P\x03\x02\x02\x02\x02" + + "R\x03\x02\x02\x02\x02T\x03\x02\x02\x02\x02V\x03\x02\x02\x02\x02X\x03\x02" + + "\x02\x02\x02Z\x03\x02\x02\x02\x02\\\x03\x02\x02\x02\x02^\x03\x02\x02\x02" + + "\x02`\x03\x02\x02\x02\x02b\x03\x02\x02\x02\x02d\x03\x02\x02\x02\x02f\x03" + + "\x02\x02\x02\x02h\x03\x02\x02\x02\x02j\x03\x02\x02\x02\x02l\x03\x02\x02" + + "\x02\x02n\x03\x02\x02\x02\x02p\x03\x02\x02\x02\x02r\x03\x02\x02\x02\x02" + + "t\x03\x02\x02\x02\x02v\x03\x02\x02\x02\x02x\x03\x02\x02\x02\x02z\x03\x02" + + "\x02\x02\x02|\x03\x02\x02\x02\x02~\x03\x02\x02\x02\x02\x80\x03\x02\x02" + + "\x02\x02\x82\x03\x02\x02\x02\x02\x84\x03\x02\x02\x02\x02\x86\x03\x02\x02" + + "\x02\x02\x88\x03\x02\x02\x02\x02\x8A\x03\x02\x02\x02\x02\x8C\x03\x02\x02" + + "\x02\x02\x8E\x03\x02\x02\x02\x02\x90\x03\x02\x02\x02\x02\x92\x03\x02\x02" + + "\x02\x02\x94\x03\x02\x02\x02\x02\x96\x03\x02\x02\x02\x02\x98\x03\x02\x02" + + "\x02\x02\x9A\x03\x02\x02\x02\x02\x9C\x03\x02\x02\x02\x02\x9E\x03\x02\x02" + + "\x02\x02\xA0\x03\x02\x02\x02\x02\xA2\x03\x02\x02\x02\x02\xA4\x03\x02\x02" + + "\x02\x02\xA6\x03\x02\x02\x02\x02\xA8\x03\x02\x02\x02\x03\xAA\x03\x02\x02" + + "\x02\x03\xAC\x03\x02\x02\x02\x04\xAF\x03\x02\x02\x02\x06\xCA\x03\x02\x02" + + "\x02\b\xCE\x03\x02\x02\x02\n\xD0\x03\x02\x02\x02\f\xD2\x03\x02\x02\x02" + + "\x0E\xD4\x03\x02\x02\x02\x10\xD6\x03\x02\x02\x02\x12\xD8\x03\x02\x02\x02" + + "\x14\xDA\x03\x02\x02\x02\x16\xDE\x03\x02\x02\x02\x18\xE3\x03\x02\x02\x02" + + "\x1A\xE5\x03\x02\x02\x02\x1C\xE7\x03\x02\x02\x02\x1E\xEA\x03\x02\x02\x02" + + " \xED\x03\x02\x02\x02\"\xF2\x03\x02\x02\x02$\xF8\x03\x02\x02\x02&\xFB" + + "\x03\x02\x02\x02(\xFF\x03\x02\x02\x02*\u0108\x03\x02\x02\x02,\u010E\x03" + + "\x02\x02\x02.\u0115\x03\x02\x02\x020\u0119\x03\x02\x02\x022\u011D\x03" + + "\x02\x02\x024\u0123\x03\x02\x02\x026\u0129\x03\x02\x02\x028\u012E\x03" + + "\x02\x02\x02:\u0139\x03\x02\x02\x02<\u013B\x03\x02\x02\x02>\u013D\x03" + + "\x02\x02\x02@\u013F\x03\x02\x02\x02B\u0142\x03\x02\x02\x02D\u0144\x03" + + "\x02\x02\x02F\u0146\x03\x02\x02\x02H\u0148\x03\x02\x02\x02J\u014B\x03" + + "\x02\x02\x02L\u014E\x03\x02\x02\x02N\u0152\x03\x02\x02\x02P\u0154\x03" + + "\x02\x02\x02R\u0157\x03\x02\x02\x02T\u0159\x03\x02\x02\x02V\u015C\x03" + + "\x02\x02\x02X\u015F\x03\x02\x02\x02Z\u0163\x03\x02\x02\x02\\\u0166\x03" + + "\x02\x02\x02^\u016A\x03\x02\x02\x02`\u016C\x03\x02\x02\x02b\u016E\x03" + + "\x02\x02\x02d\u0170\x03\x02\x02\x02f\u0173\x03\x02\x02\x02h\u0176\x03" + + "\x02\x02\x02j\u0178\x03\x02\x02\x02l\u017A\x03\x02\x02\x02n\u017D\x03" + + "\x02\x02\x02p\u0180\x03\x02\x02\x02r\u0183\x03\x02\x02\x02t\u0186\x03" + + "\x02\x02\x02v\u018A\x03\x02\x02\x02x\u018D\x03\x02\x02\x02z\u0190\x03" + + "\x02\x02\x02|\u0192\x03\x02\x02\x02~\u0195\x03\x02\x02\x02\x80\u0198\x03" + + "\x02\x02\x02\x82\u019B\x03\x02\x02\x02\x84\u019E\x03\x02\x02\x02\x86\u01A1" + + "\x03\x02\x02\x02\x88\u01A4\x03\x02\x02\x02\x8A\u01A7\x03\x02\x02\x02\x8C" + + "\u01AA\x03\x02\x02\x02\x8E\u01AE\x03\x02\x02\x02\x90\u01B2\x03\x02\x02" + + "\x02\x92\u01B7\x03\x02\x02\x02\x94\u01C0\x03\x02\x02\x02\x96\u01D2\x03" + + "\x02\x02\x02\x98\u01DF\x03\x02\x02\x02\x9A\u020F\x03\x02\x02\x02\x9C\u0211" + + "\x03\x02\x02\x02\x9E\u0222\x03\x02\x02\x02\xA0\u0227\x03\x02\x02\x02\xA2" + + "\u022D\x03\x02\x02\x02\xA4\u0258\x03\x02\x02\x02\xA6\u025A\x03\x02\x02" + + "\x02\xA8\u025E\x03\x02\x02\x02\xAA\u026D\x03\x02\x02\x02\xAC\u0271\x03" + + "\x02\x02\x02\xAE\xB0\t\x02\x02\x02\xAF\xAE\x03\x02\x02\x02\xB0\xB1\x03" + + "\x02\x02\x02\xB1\xAF\x03\x02\x02\x02\xB1\xB2\x03\x02\x02\x02\xB2\xB3\x03" + + "\x02\x02\x02\xB3\xB4\b\x02\x02\x02\xB4\x05\x03\x02\x02\x02\xB5\xB6\x07" + + "1\x02\x02\xB6\xB7\x071\x02\x02\xB7\xBB\x03\x02\x02\x02\xB8\xBA\v\x02\x02" + + "\x02\xB9\xB8\x03\x02\x02\x02\xBA\xBD\x03\x02\x02\x02\xBB\xBC\x03\x02\x02" + + "\x02\xBB\xB9\x03\x02\x02\x02\xBC\xBE\x03\x02\x02\x02\xBD\xBB\x03\x02\x02" + + "\x02\xBE\xCB\t\x03\x02\x02\xBF\xC0\x071\x02\x02\xC0\xC1\x07,\x02\x02\xC1" + + "\xC5\x03\x02\x02\x02\xC2\xC4\v\x02\x02\x02\xC3\xC2\x03\x02\x02\x02\xC4" + + "\xC7\x03\x02\x02\x02\xC5\xC6\x03\x02\x02\x02\xC5\xC3\x03\x02\x02\x02\xC6" + + "\xC8\x03\x02\x02\x02\xC7\xC5\x03\x02\x02\x02\xC8\xC9\x07,\x02\x02\xC9" + + "\xCB\x071\x02\x02\xCA\xB5\x03\x02\x02\x02\xCA\xBF\x03\x02\x02\x02\xCB" + + "\xCC\x03\x02\x02\x02\xCC\xCD\b\x03\x02\x02\xCD\x07\x03\x02\x02\x02\xCE" + + "\xCF\x07}\x02\x02\xCF\t\x03\x02\x02\x02\xD0\xD1\x07\x7F\x02\x02\xD1\v" + + "\x03\x02\x02\x02\xD2\xD3\x07]\x02\x02\xD3\r\x03\x02\x02\x02\xD4\xD5\x07" + + "_\x02\x02\xD5\x0F\x03\x02\x02\x02\xD6\xD7\x07*\x02\x02\xD7\x11\x03\x02" + + "\x02\x02\xD8\xD9\x07+\x02\x02\xD9\x13\x03\x02\x02\x02\xDA\xDB\x070\x02" + + "\x02\xDB\xDC\x03\x02\x02\x02\xDC\xDD\b\n\x03\x02\xDD\x15\x03\x02\x02\x02" + + "\xDE\xDF\x07A\x02\x02\xDF\xE0\x070\x02\x02\xE0\xE1\x03\x02\x02\x02\xE1" + + "\xE2\b\v\x03\x02\xE2\x17\x03\x02\x02\x02\xE3\xE4\x07.\x02\x02\xE4\x19" + + "\x03\x02\x02\x02\xE5\xE6\x07=\x02\x02\xE6\x1B\x03\x02\x02\x02\xE7\xE8" + + "\x07k\x02\x02\xE8\xE9\x07h\x02\x02\xE9\x1D\x03\x02\x02\x02\xEA\xEB\x07" + + "k\x02\x02\xEB\xEC\x07p\x02\x02\xEC\x1F\x03\x02\x02\x02\xED\xEE\x07g\x02" + + "\x02\xEE\xEF\x07n\x02\x02\xEF\xF0\x07u\x02\x02\xF0\xF1\x07g\x02\x02\xF1" + + "!\x03\x02\x02\x02\xF2\xF3\x07y\x02\x02\xF3\xF4\x07j\x02\x02\xF4\xF5\x07" + + "k\x02\x02\xF5\xF6\x07n\x02\x02\xF6\xF7\x07g\x02\x02\xF7#\x03\x02\x02\x02" + + "\xF8\xF9\x07f\x02\x02\xF9\xFA\x07q\x02\x02\xFA%\x03\x02\x02\x02\xFB\xFC" + + "\x07h\x02\x02\xFC\xFD\x07q\x02\x02\xFD\xFE\x07t\x02\x02\xFE\'\x03\x02" + + "\x02\x02\xFF\u0100\x07e\x02\x02\u0100\u0101\x07q\x02\x02\u0101\u0102\x07" + + "p\x02\x02\u0102\u0103\x07v\x02\x02\u0103\u0104\x07k\x02\x02\u0104\u0105" + + "\x07p\x02\x02\u0105\u0106\x07w\x02\x02\u0106\u0107\x07g\x02\x02\u0107" + + ")\x03\x02\x02\x02\u0108\u0109\x07d\x02\x02\u0109\u010A\x07t\x02\x02\u010A" + + "\u010B\x07g\x02\x02\u010B\u010C\x07c\x02\x02\u010C\u010D\x07m\x02\x02" + + "\u010D+\x03\x02\x02\x02\u010E\u010F\x07t\x02\x02\u010F\u0110\x07g\x02" + + "\x02\u0110\u0111\x07v\x02\x02\u0111\u0112\x07w\x02\x02\u0112\u0113\x07" + + "t\x02\x02\u0113\u0114\x07p\x02\x02\u0114-\x03\x02\x02\x02\u0115\u0116" + + "\x07p\x02\x02\u0116\u0117\x07g\x02\x02\u0117\u0118\x07y\x02\x02\u0118" + + "/\x03\x02\x02\x02\u0119\u011A\x07v\x02\x02\u011A\u011B\x07t\x02\x02\u011B" + + "\u011C\x07{\x02\x02\u011C1\x03\x02\x02\x02\u011D\u011E\x07e\x02\x02\u011E" + + "\u011F\x07c\x02\x02\u011F\u0120\x07v\x02\x02\u0120\u0121\x07e\x02\x02" + + "\u0121\u0122\x07j\x02\x02\u01223\x03\x02\x02\x02\u0123\u0124\x07v\x02" + + "\x02\u0124\u0125\x07j\x02\x02\u0125\u0126\x07t\x02\x02\u0126\u0127\x07" + + "q\x02\x02\u0127\u0128\x07y\x02\x02\u01285\x03\x02\x02\x02\u0129\u012A" + + "\x07v\x02\x02\u012A\u012B\x07j\x02\x02\u012B\u012C\x07k\x02\x02\u012C" + + "\u012D\x07u\x02\x02\u012D7\x03\x02\x02\x02\u012E\u012F\x07k\x02\x02\u012F" + + "\u0130\x07p\x02\x02\u0130\u0131\x07u\x02\x02\u0131\u0132\x07v\x02\x02" + + "\u0132\u0133\x07c\x02\x02\u0133\u0134\x07p\x02\x02\u0134\u0135\x07e\x02" + + "\x02\u0135\u0136\x07g\x02\x02\u0136\u0137\x07q\x02\x02\u0137\u0138\x07" + + "h\x02\x02\u01389\x03\x02\x02\x02\u0139\u013A\x07#\x02\x02\u013A;\x03\x02" + + "\x02\x02\u013B\u013C\x07\x80\x02\x02\u013C=\x03\x02\x02\x02\u013D\u013E" + + "\x07,\x02\x02\u013E?\x03\x02\x02\x02\u013F\u0140\x071\x02\x02\u0140\u0141" + + "\x06 \x02\x02\u0141A\x03\x02\x02\x02\u0142\u0143\x07\'\x02\x02\u0143C" + + "\x03\x02\x02\x02\u0144\u0145\x07-\x02\x02\u0145E\x03\x02\x02\x02\u0146" + + "\u0147\x07/\x02\x02\u0147G\x03\x02\x02\x02\u0148\u0149\x07>\x02\x02\u0149" + + "\u014A\x07>\x02\x02\u014AI\x03\x02\x02\x02\u014B\u014C\x07@\x02\x02\u014C" + + "\u014D\x07@\x02\x02\u014DK\x03\x02\x02\x02\u014E\u014F\x07@\x02\x02\u014F" + + "\u0150\x07@\x02\x02\u0150\u0151\x07@\x02\x02\u0151M\x03\x02\x02\x02\u0152" + + "\u0153\x07>\x02\x02\u0153O\x03\x02\x02\x02\u0154\u0155\x07>\x02\x02\u0155" + + "\u0156\x07?\x02\x02\u0156Q\x03\x02\x02\x02\u0157\u0158\x07@\x02\x02\u0158" + + "S\x03\x02\x02\x02\u0159\u015A\x07@\x02\x02\u015A\u015B\x07?\x02\x02\u015B" + + "U\x03\x02\x02\x02\u015C\u015D\x07?\x02\x02\u015D\u015E\x07?\x02\x02\u015E" + + "W\x03\x02\x02\x02\u015F\u0160\x07?\x02\x02\u0160\u0161\x07?\x02\x02\u0161" + + "\u0162\x07?\x02\x02\u0162Y\x03\x02\x02\x02\u0163\u0164\x07#\x02\x02\u0164" + + "\u0165\x07?\x02\x02\u0165[\x03\x02\x02\x02\u0166\u0167\x07#\x02\x02\u0167" + + "\u0168\x07?\x02\x02\u0168\u0169\x07?\x02\x02\u0169]\x03\x02\x02\x02\u016A" + + "\u016B\x07(\x02\x02\u016B_\x03\x02\x02\x02\u016C\u016D\x07`\x02\x02\u016D" + + "a\x03\x02\x02\x02\u016E\u016F\x07~\x02\x02\u016Fc\x03\x02\x02\x02\u0170" + + "\u0171\x07(\x02\x02\u0171\u0172\x07(\x02\x02\u0172e\x03\x02\x02\x02\u0173" + + "\u0174\x07~\x02\x02\u0174\u0175\x07~\x02\x02\u0175g\x03\x02\x02\x02\u0176" + + "\u0177\x07A\x02\x02\u0177i\x03\x02\x02\x02\u0178\u0179\x07<\x02\x02\u0179" + + "k\x03\x02\x02\x02\u017A\u017B\x07A\x02\x02\u017B\u017C\x07<\x02\x02\u017C" + + "m\x03\x02\x02\x02\u017D\u017E\x07<\x02\x02\u017E\u017F\x07<\x02\x02\u017F" + + "o\x03\x02\x02\x02\u0180\u0181\x07/\x02\x02\u0181\u0182\x07@\x02\x02\u0182" + + "q\x03\x02\x02\x02\u0183\u0184\x07?\x02\x02\u0184\u0185\x07\x80\x02\x02" + + "\u0185s\x03\x02\x02\x02\u0186\u0187\x07?\x02\x02\u0187\u0188\x07?\x02" + + "\x02\u0188\u0189\x07\x80\x02\x02\u0189u\x03\x02\x02\x02\u018A\u018B\x07" + + "-\x02\x02\u018B\u018C\x07-\x02\x02\u018Cw\x03\x02\x02\x02\u018D\u018E" + + "\x07/\x02\x02\u018E\u018F\x07/\x02\x02\u018Fy\x03\x02\x02\x02\u0190\u0191" + + "\x07?\x02\x02\u0191{\x03\x02\x02\x02\u0192\u0193\x07-\x02\x02\u0193\u0194" + + "\x07?\x02\x02\u0194}\x03\x02\x02\x02\u0195\u0196\x07/\x02\x02\u0196\u0197" + + "\x07?\x02\x02\u0197\x7F\x03\x02\x02\x02\u0198\u0199\x07,\x02\x02\u0199" + + "\u019A\x07?\x02\x02\u019A\x81\x03\x02\x02\x02\u019B\u019C\x071\x02\x02" + + "\u019C\u019D\x07?\x02\x02\u019D\x83\x03\x02\x02\x02\u019E\u019F\x07\'" + + "\x02\x02\u019F\u01A0\x07?\x02\x02\u01A0\x85\x03\x02\x02\x02\u01A1\u01A2" + + "\x07(\x02\x02\u01A2\u01A3\x07?\x02\x02\u01A3\x87\x03\x02\x02\x02\u01A4" + + "\u01A5\x07`\x02\x02\u01A5\u01A6\x07?\x02\x02\u01A6\x89\x03\x02\x02\x02" + + "\u01A7\u01A8\x07~\x02\x02\u01A8\u01A9\x07?\x02\x02\u01A9\x8B\x03\x02\x02" + + "\x02\u01AA\u01AB\x07>\x02\x02\u01AB\u01AC\x07>\x02\x02\u01AC\u01AD\x07" + + "?\x02\x02\u01AD\x8D\x03\x02\x02\x02\u01AE\u01AF\x07@\x02\x02\u01AF\u01B0" + + "\x07@\x02\x02\u01B0\u01B1\x07?\x02\x02\u01B1\x8F\x03\x02\x02\x02\u01B2" + + "\u01B3\x07@\x02\x02\u01B3\u01B4\x07@\x02\x02\u01B4\u01B5\x07@\x02\x02" + + "\u01B5\u01B6\x07?\x02\x02\u01B6\x91\x03\x02\x02\x02\u01B7\u01B9\x072\x02" + + "\x02\u01B8\u01BA\t\x04\x02\x02\u01B9\u01B8\x03\x02\x02\x02\u01BA\u01BB" + + "\x03\x02\x02\x02\u01BB\u01B9\x03\x02\x02\x02\u01BB\u01BC\x03\x02\x02\x02" + + "\u01BC\u01BE\x03\x02\x02\x02\u01BD\u01BF\t\x05\x02\x02\u01BE\u01BD\x03" + + "\x02\x02\x02\u01BE\u01BF\x03\x02\x02\x02\u01BF\x93\x03\x02\x02\x02\u01C0" + + "\u01C1\x072\x02\x02\u01C1\u01C3\t\x06\x02\x02\u01C2\u01C4\t\x07\x02\x02" + + "\u01C3\u01C2\x03\x02\x02\x02\u01C4\u01C5\x03\x02\x02\x02\u01C5\u01C3\x03" + + "\x02\x02\x02\u01C5\u01C6\x03\x02\x02\x02\u01C6\u01C8\x03\x02\x02\x02\u01C7" + + "\u01C9\t\x05\x02\x02\u01C8\u01C7\x03\x02\x02\x02\u01C8\u01C9\x03\x02\x02" + + "\x02\u01C9\x95\x03\x02\x02\x02\u01CA\u01D3\x072\x02\x02\u01CB\u01CF\t" + + "\b\x02\x02\u01CC\u01CE\t\t\x02\x02\u01CD\u01CC\x03\x02\x02\x02\u01CE\u01D1" + + "\x03\x02\x02\x02\u01CF\u01CD\x03\x02\x02\x02\u01CF\u01D0\x03\x02\x02\x02" + + "\u01D0\u01D3\x03\x02\x02\x02\u01D1\u01CF\x03\x02\x02\x02\u01D2\u01CA\x03" + + "\x02\x02\x02\u01D2\u01CB\x03\x02\x02\x02\u01D3\u01D5\x03\x02\x02\x02\u01D4" + + "\u01D6\t\n\x02\x02\u01D5\u01D4\x03\x02\x02\x02\u01D5\u01D6\x03\x02\x02" + + "\x02\u01D6\x97\x03\x02\x02\x02\u01D7\u01E0\x072\x02\x02\u01D8\u01DC\t" + + "\b\x02\x02\u01D9\u01DB\t\t\x02\x02\u01DA\u01D9\x03\x02\x02\x02\u01DB\u01DE" + + "\x03\x02\x02\x02\u01DC\u01DA\x03\x02\x02\x02\u01DC\u01DD\x03\x02\x02\x02" + + "\u01DD\u01E0\x03\x02\x02\x02\u01DE\u01DC\x03\x02\x02\x02\u01DF\u01D7\x03" + + "\x02\x02\x02\u01DF\u01D8\x03\x02\x02\x02\u01E0\u01E7\x03\x02\x02\x02\u01E1" + + "\u01E3\x05\x14\n\x02\u01E2\u01E4\t\t\x02\x02\u01E3\u01E2\x03\x02\x02\x02" + + "\u01E4\u01E5\x03\x02\x02\x02\u01E5\u01E3\x03\x02\x02\x02\u01E5\u01E6\x03" + + "\x02\x02\x02\u01E6\u01E8\x03\x02\x02\x02\u01E7\u01E1\x03\x02\x02\x02\u01E7" + + "\u01E8\x03\x02\x02\x02\u01E8\u01F2\x03\x02\x02\x02\u01E9\u01EB\t\v\x02" + + "\x02\u01EA\u01EC\t\f\x02\x02\u01EB\u01EA\x03\x02\x02\x02\u01EB\u01EC\x03" + + "\x02\x02\x02\u01EC\u01EE\x03\x02\x02\x02\u01ED\u01EF\t\t\x02\x02\u01EE" + + "\u01ED\x03\x02\x02\x02\u01EF\u01F0\x03\x02\x02\x02\u01F0\u01EE\x03\x02" + + "\x02\x02\u01F0\u01F1\x03\x02\x02\x02\u01F1\u01F3\x03\x02\x02\x02\u01F2" + + "\u01E9\x03\x02\x02\x02\u01F2\u01F3\x03\x02\x02\x02\u01F3\u01F5\x03\x02" + + "\x02\x02\u01F4\u01F6\t\r\x02\x02\u01F5\u01F4\x03\x02\x02\x02\u01F5\u01F6" + + "\x03\x02\x02\x02\u01F6\x99\x03\x02\x02\x02\u01F7\u01FF\x07$\x02\x02\u01F8" + + "\u01F9\x07^\x02\x02\u01F9\u01FE\x07$\x02\x02\u01FA\u01FB\x07^\x02\x02" + + "\u01FB\u01FE\x07^\x02\x02\u01FC\u01FE\n\x0E\x02\x02\u01FD\u01F8\x03\x02" + + "\x02\x02\u01FD\u01FA\x03\x02\x02\x02\u01FD\u01FC\x03\x02\x02\x02\u01FE" + + "\u0201\x03\x02\x02\x02\u01FF\u0200\x03\x02\x02\x02\u01FF\u01FD\x03\x02" + + "\x02\x02\u0200\u0202\x03\x02\x02\x02\u0201\u01FF\x03\x02\x02\x02\u0202" + + "\u0210\x07$\x02\x02\u0203\u020B\x07)\x02\x02\u0204\u0205\x07^\x02\x02" + + "\u0205\u020A\x07)\x02\x02\u0206\u0207\x07^\x02\x02\u0207\u020A\x07^\x02" + + "\x02\u0208\u020A\n\x0F\x02\x02\u0209\u0204\x03\x02\x02\x02\u0209\u0206" + + "\x03\x02\x02\x02\u0209\u0208\x03\x02\x02\x02\u020A\u020D\x03\x02\x02\x02" + + "\u020B\u020C\x03\x02\x02\x02\u020B\u0209\x03\x02\x02\x02\u020C"; + private static readonly _serializedATNSegment1: string = + "\u020E\x03\x02\x02\x02\u020D\u020B\x03\x02\x02\x02\u020E\u0210\x07)\x02" + + "\x02\u020F\u01F7\x03\x02\x02\x02\u020F\u0203\x03\x02\x02\x02\u0210\x9B" + + "\x03\x02\x02\x02\u0211\u0215\x071\x02\x02\u0212\u0213\x07^\x02\x02\u0213" + + "\u0216\n\x10\x02\x02\u0214\u0216\n\x11\x02\x02\u0215\u0212\x03\x02\x02" + + "\x02\u0215\u0214\x03\x02\x02\x02\u0216\u0217\x03\x02\x02\x02\u0217\u0218" + + "\x03\x02\x02\x02\u0217\u0215\x03\x02\x02\x02\u0218\u0219\x03\x02\x02\x02" + + "\u0219\u021D\x071\x02\x02\u021A\u021C\t\x12\x02\x02\u021B\u021A\x03\x02" + + "\x02\x02\u021C\u021F\x03\x02\x02\x02\u021D\u021B\x03\x02\x02\x02\u021D" + + "\u021E\x03\x02\x02\x02\u021E\u0220\x03\x02\x02\x02\u021F\u021D\x03\x02" + + "\x02\x02\u0220\u0221\x06N\x03\x02\u0221\x9D\x03\x02\x02\x02\u0222\u0223" + + "\x07v\x02\x02\u0223\u0224\x07t\x02\x02\u0224\u0225\x07w\x02\x02\u0225" + + "\u0226\x07g\x02\x02\u0226\x9F\x03\x02\x02\x02\u0227\u0228\x07h\x02\x02" + + "\u0228\u0229\x07c\x02\x02\u0229\u022A\x07n\x02\x02\u022A\u022B\x07u\x02" + + "\x02\u022B\u022C\x07g\x02\x02\u022C\xA1\x03\x02\x02\x02\u022D\u022E\x07" + + "p\x02\x02\u022E\u022F\x07w\x02\x02\u022F\u0230\x07n\x02\x02\u0230\u0231" + + "\x07n\x02\x02\u0231\xA3\x03\x02\x02\x02\u0232\u0233\x07d\x02\x02\u0233" + + "\u0234\x07q\x02\x02\u0234\u0235\x07q\x02\x02\u0235\u0236\x07n\x02\x02" + + "\u0236\u0237\x07g\x02\x02\u0237\u0238\x07c\x02\x02\u0238\u0259\x07p\x02" + + "\x02\u0239\u023A\x07d\x02\x02\u023A\u023B\x07{\x02\x02\u023B\u023C\x07" + + "v\x02\x02\u023C\u0259\x07g\x02\x02\u023D\u023E\x07u\x02\x02\u023E\u023F" + + "\x07j\x02\x02\u023F\u0240\x07q\x02\x02\u0240\u0241\x07t\x02\x02\u0241" + + "\u0259\x07v\x02\x02\u0242\u0243\x07e\x02\x02\u0243\u0244\x07j\x02\x02" + + "\u0244\u0245\x07c\x02\x02\u0245\u0259\x07t\x02\x02\u0246\u0247\x07k\x02" + + "\x02\u0247\u0248\x07p\x02\x02\u0248\u0259\x07v\x02\x02\u0249\u024A\x07" + + "n\x02\x02\u024A\u024B\x07q\x02\x02\u024B\u024C\x07p\x02\x02\u024C\u0259" + + "\x07i\x02\x02\u024D\u024E\x07h\x02\x02\u024E\u024F\x07n\x02\x02\u024F" + + "\u0250\x07q\x02\x02\u0250\u0251\x07c\x02\x02\u0251\u0259\x07v\x02\x02" + + "\u0252\u0253\x07f\x02\x02\u0253\u0254\x07q\x02\x02\u0254\u0255\x07w\x02" + + "\x02\u0255\u0256\x07d\x02\x02\u0256\u0257\x07n\x02\x02\u0257\u0259\x07" + + "g\x02\x02\u0258\u0232\x03\x02\x02\x02\u0258\u0239\x03\x02\x02\x02\u0258" + + "\u023D\x03\x02\x02\x02\u0258\u0242\x03\x02\x02\x02\u0258\u0246\x03\x02" + + "\x02\x02\u0258\u0249\x03\x02\x02\x02\u0258\u024D\x03\x02\x02\x02\u0258" + + "\u0252\x03\x02\x02\x02\u0259\xA5\x03\x02\x02\x02\u025A\u025B\x07f\x02" + + "\x02\u025B\u025C\x07g\x02\x02\u025C\u025D\x07h\x02\x02\u025D\xA7\x03\x02" + + "\x02\x02\u025E\u0262\t\x13\x02\x02\u025F\u0261\t\x14\x02\x02\u0260\u025F" + + "\x03\x02\x02\x02\u0261\u0264\x03\x02\x02\x02\u0262\u0260\x03\x02\x02\x02" + + "\u0262\u0263\x03\x02\x02\x02\u0263\xA9\x03\x02\x02\x02\u0264\u0262\x03" + + "\x02\x02\x02\u0265\u026E\x072\x02\x02\u0266\u026A\t\b\x02\x02\u0267\u0269" + + "\t\t\x02\x02\u0268\u0267\x03\x02\x02\x02\u0269\u026C\x03\x02\x02\x02\u026A" + + "\u0268\x03\x02\x02\x02\u026A\u026B\x03\x02\x02\x02\u026B\u026E\x03\x02" + + "\x02\x02\u026C\u026A\x03\x02\x02\x02\u026D\u0265\x03\x02\x02\x02\u026D" + + "\u0266\x03\x02\x02\x02\u026E\u026F\x03\x02\x02\x02\u026F\u0270\bU\x04" + + "\x02\u0270\xAB\x03\x02\x02\x02\u0271\u0275\t\x13\x02\x02\u0272\u0274\t" + + "\x14\x02\x02\u0273\u0272\x03\x02\x02\x02\u0274\u0277\x03\x02\x02\x02\u0275" + + "\u0273\x03\x02\x02\x02\u0275\u0276\x03\x02\x02\x02\u0276\u0278\x03\x02" + + "\x02\x02\u0277\u0275\x03\x02\x02\x02\u0278\u0279\bV\x04\x02\u0279\xAD" + + "\x03\x02\x02\x02$\x02\x03\xB1\xBB\xC5\xCA\u01BB\u01BE\u01C5\u01C8\u01CF" + + "\u01D2\u01D5\u01DC\u01DF\u01E5\u01E7\u01EB\u01F0\u01F2\u01F5\u01FD\u01FF" + + "\u0209\u020B\u020F\u0215\u0217\u021D\u0258\u0262\u026A\u026D\u0275\x05" + + "\b\x02\x02\x04\x03\x02\x04\x02\x02"; + public static readonly _serializedATN: string = Utils.join( + [ + painless_lexer._serializedATNSegment0, + painless_lexer._serializedATNSegment1, + ], + "", + ); + public static __ATN: ATN; + public static get _ATN(): ATN { + if (!painless_lexer.__ATN) { + painless_lexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(painless_lexer._serializedATN)); + } + + return painless_lexer.__ATN; + } + +} + diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.g4 b/packages/kbn-monaco/src/painless/antlr/painless_parser.g4 new file mode 100644 index 00000000000000..58a9285c57a006 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.g4 @@ -0,0 +1,226 @@ +parser grammar painless_parser; + +options { tokenVocab=painless_lexer; } + +source + : function* statement* EOF + ; + +function + : decltype ID parameters block + ; + +parameters + : LP ( decltype ID ( COMMA decltype ID )* )? RP + ; + +statement + : rstatement + | dstatement ( SEMICOLON | EOF ) + ; + +// Note we use a predicate on the if/else case here to prevent the +// "dangling-else" ambiguity by forcing the 'else' token to be consumed +// as soon as one is found. See (https://en.wikipedia.org/wiki/Dangling_else). +rstatement + : IF LP expression RP trailer ( ELSE trailer | { this._input.LA(1) != painless_parser.ELSE }? ) # if + | WHILE LP expression RP ( trailer | empty ) # while + | FOR LP initializer? SEMICOLON expression? SEMICOLON afterthought? RP ( trailer | empty ) # for + | FOR LP decltype ID COLON expression RP trailer # each + | FOR LP ID IN expression RP trailer # ineach + | TRY block trap+ # try + ; + +dstatement + : DO block WHILE LP expression RP # do + | declaration # decl + | CONTINUE # continue + | BREAK # break + | RETURN expression? # return + | THROW expression # throw + | expression # expr + ; + +trailer + : block + | statement + ; + +block + : LBRACK statement* dstatement? RBRACK + ; + +empty + : SEMICOLON + ; + +initializer + : declaration + | expression + ; + +afterthought + : expression + ; + +declaration + : decltype declvar (COMMA declvar)* + ; + +decltype + : type (LBRACE RBRACE)* + ; + +type + : DEF + | PRIMITIVE + | ID (DOT DOTID)* + ; + +declvar + : ID ( ASSIGN expression )? + ; + +trap + : CATCH LP type ID RP block + ; + +noncondexpression + : unary # single + | noncondexpression ( MUL | DIV | REM ) noncondexpression # binary + | noncondexpression ( ADD | SUB ) noncondexpression # binary + | noncondexpression ( FIND | MATCH ) noncondexpression # binary + | noncondexpression ( LSH | RSH | USH ) noncondexpression # binary + | noncondexpression ( LT | LTE | GT | GTE ) noncondexpression # comp + | noncondexpression INSTANCEOF decltype # instanceof + | noncondexpression ( EQ | EQR | NE | NER ) noncondexpression # comp + | noncondexpression BWAND noncondexpression # binary + | noncondexpression XOR noncondexpression # binary + | noncondexpression BWOR noncondexpression # binary + | noncondexpression BOOLAND noncondexpression # bool + | noncondexpression BOOLOR noncondexpression # bool + | noncondexpression ELVIS noncondexpression # elvis + ; + +expression + : noncondexpression # nonconditional + | noncondexpression COND expression COLON expression # conditional + | noncondexpression ( ASSIGN | AADD | ASUB | AMUL | + ADIV | AREM | AAND | AXOR | + AOR | ALSH | ARSH | AUSH ) expression # assignment + ; + +unary + : ( INCR | DECR ) chain # pre + | ( ADD | SUB ) unary # addsub + | unarynotaddsub # notaddsub + ; + +unarynotaddsub + : chain # read + | chain (INCR | DECR ) # post + | ( BOOLNOT | BWNOT ) unary # not + | castexpression # cast + ; + +castexpression + : LP primordefcasttype RP unary # primordefcast + | LP refcasttype RP unarynotaddsub # refcast + ; + +primordefcasttype + : DEF + | PRIMITIVE + ; + +refcasttype + : DEF (LBRACE RBRACE)+ + | PRIMITIVE (LBRACE RBRACE)+ + | ID (DOT DOTID)* (LBRACE RBRACE)* + ; + +chain + : primary postfix* # dynamic + | arrayinitializer # newarray + ; + +primary + : LP expression RP # precedence + | ( OCTAL | HEX | INTEGER | DECIMAL ) # numeric + | TRUE # true + | FALSE # false + | NULL # null + | STRING # string + | REGEX # regex + | listinitializer # listinit + | mapinitializer # mapinit + | ID # variable + | ID arguments # calllocal + | NEW type arguments # newobject + ; + +postfix + : callinvoke + | fieldaccess + | braceaccess + ; + +postdot + : callinvoke + | fieldaccess + ; + +callinvoke + : ( DOT | NSDOT ) DOTID arguments + ; + +fieldaccess + : ( DOT | NSDOT ) ( DOTID | DOTINTEGER ) + ; + +braceaccess + : LBRACE expression RBRACE + ; + +arrayinitializer + : NEW type ( LBRACE expression RBRACE )+ ( postdot postfix* )? # newstandardarray + | NEW type LBRACE RBRACE LBRACK ( expression ( COMMA expression )* )? RBRACK postfix* # newinitializedarray + ; + +listinitializer + : LBRACE expression ( COMMA expression)* RBRACE + | LBRACE RBRACE + ; + +mapinitializer + : LBRACE maptoken ( COMMA maptoken )* RBRACE + | LBRACE COLON RBRACE + ; + +maptoken + : expression COLON expression + ; + +arguments + : ( LP ( argument ( COMMA argument )* )? RP ) + ; + +argument + : expression + | lambda + | funcref + ; + +lambda + : ( lamtype | LP ( lamtype ( COMMA lamtype )* )? RP ) ARROW ( block | expression ) + ; + +lamtype + : decltype? ID + ; + +funcref + : decltype REF ID # classfuncref + | decltype REF NEW # constructorfuncref + | THIS REF ID # localfuncref + ; diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.interp b/packages/kbn-monaco/src/painless/antlr/painless_parser.interp new file mode 100644 index 00000000000000..4c0a7a4399e4ef --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.interp @@ -0,0 +1,220 @@ +token literal names: +null +null +null +'{' +'}' +'[' +']' +'(' +')' +'.' +'?.' +',' +';' +'if' +'in' +'else' +'while' +'do' +'for' +'continue' +'break' +'return' +'new' +'try' +'catch' +'throw' +'this' +'instanceof' +'!' +'~' +'*' +'/' +'%' +'+' +'-' +'<<' +'>>' +'>>>' +'<' +'<=' +'>' +'>=' +'==' +'===' +'!=' +'!==' +'&' +'^' +'|' +'&&' +'||' +'?' +':' +'?:' +'::' +'->' +'=~' +'==~' +'++' +'--' +'=' +'+=' +'-=' +'*=' +'/=' +'%=' +'&=' +'^=' +'|=' +'<<=' +'>>=' +'>>>=' +null +null +null +null +null +null +'true' +'false' +'null' +null +'def' +null +null +null + +token symbolic names: +null +WS +COMMENT +LBRACK +RBRACK +LBRACE +RBRACE +LP +RP +DOT +NSDOT +COMMA +SEMICOLON +IF +IN +ELSE +WHILE +DO +FOR +CONTINUE +BREAK +RETURN +NEW +TRY +CATCH +THROW +THIS +INSTANCEOF +BOOLNOT +BWNOT +MUL +DIV +REM +ADD +SUB +LSH +RSH +USH +LT +LTE +GT +GTE +EQ +EQR +NE +NER +BWAND +XOR +BWOR +BOOLAND +BOOLOR +COND +COLON +ELVIS +REF +ARROW +FIND +MATCH +INCR +DECR +ASSIGN +AADD +ASUB +AMUL +ADIV +AREM +AAND +AXOR +AOR +ALSH +ARSH +AUSH +OCTAL +HEX +INTEGER +DECIMAL +STRING +REGEX +TRUE +FALSE +NULL +PRIMITIVE +DEF +ID +DOTINTEGER +DOTID + +rule names: +source +function +parameters +statement +rstatement +dstatement +trailer +block +empty +initializer +afterthought +declaration +decltype +type +declvar +trap +noncondexpression +expression +unary +unarynotaddsub +castexpression +primordefcasttype +refcasttype +chain +primary +postfix +postdot +callinvoke +fieldaccess +braceaccess +arrayinitializer +listinitializer +mapinitializer +maptoken +arguments +argument +lambda +lamtype +funcref + + +atn: +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 87, 574, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 3, 2, 7, 2, 82, 10, 2, 12, 2, 14, 2, 85, 11, 2, 3, 2, 7, 2, 88, 10, 2, 12, 2, 14, 2, 91, 11, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 107, 10, 4, 12, 4, 14, 4, 110, 11, 4, 5, 4, 112, 10, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 120, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 130, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 138, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 143, 10, 6, 3, 6, 3, 6, 5, 6, 147, 10, 6, 3, 6, 3, 6, 5, 6, 151, 10, 6, 3, 6, 3, 6, 3, 6, 5, 6, 156, 10, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 6, 6, 178, 10, 6, 13, 6, 14, 6, 179, 5, 6, 182, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 196, 10, 7, 3, 7, 3, 7, 3, 7, 5, 7, 201, 10, 7, 3, 8, 3, 8, 5, 8, 205, 10, 8, 3, 9, 3, 9, 7, 9, 209, 10, 9, 12, 9, 14, 9, 212, 11, 9, 3, 9, 5, 9, 215, 10, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 223, 10, 11, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 231, 10, 13, 12, 13, 14, 13, 234, 11, 13, 3, 14, 3, 14, 3, 14, 7, 14, 239, 10, 14, 12, 14, 14, 14, 242, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 7, 15, 249, 10, 15, 12, 15, 14, 15, 252, 11, 15, 5, 15, 254, 10, 15, 3, 16, 3, 16, 3, 16, 5, 16, 259, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 310, 10, 18, 12, 18, 14, 18, 313, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 326, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 333, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 5, 21, 342, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 354, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 6, 24, 361, 10, 24, 13, 24, 14, 24, 362, 3, 24, 3, 24, 3, 24, 6, 24, 368, 10, 24, 13, 24, 14, 24, 369, 3, 24, 3, 24, 3, 24, 7, 24, 375, 10, 24, 12, 24, 14, 24, 378, 11, 24, 3, 24, 3, 24, 7, 24, 382, 10, 24, 12, 24, 14, 24, 385, 11, 24, 5, 24, 387, 10, 24, 3, 25, 3, 25, 7, 25, 391, 10, 25, 12, 25, 14, 25, 394, 11, 25, 3, 25, 5, 25, 397, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 418, 10, 26, 3, 27, 3, 27, 3, 27, 5, 27, 423, 10, 27, 3, 28, 3, 28, 5, 28, 427, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 6, 32, 446, 10, 32, 13, 32, 14, 32, 447, 3, 32, 3, 32, 7, 32, 452, 10, 32, 12, 32, 14, 32, 455, 11, 32, 5, 32, 457, 10, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 7, 32, 467, 10, 32, 12, 32, 14, 32, 470, 11, 32, 5, 32, 472, 10, 32, 3, 32, 3, 32, 7, 32, 476, 10, 32, 12, 32, 14, 32, 479, 11, 32, 5, 32, 481, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 487, 10, 33, 12, 33, 14, 33, 490, 11, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 496, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 502, 10, 34, 12, 34, 14, 34, 505, 11, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 512, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 7, 36, 522, 10, 36, 12, 36, 14, 36, 525, 11, 36, 5, 36, 527, 10, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 5, 37, 534, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 7, 38, 541, 10, 38, 12, 38, 14, 38, 544, 11, 38, 5, 38, 546, 10, 38, 3, 38, 5, 38, 549, 10, 38, 3, 38, 3, 38, 3, 38, 5, 38, 554, 10, 38, 3, 39, 5, 39, 557, 10, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 572, 10, 40, 3, 40, 2, 2, 3, 34, 41, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 2, 16, 3, 3, 14, 14, 3, 2, 32, 34, 3, 2, 35, 36, 3, 2, 58, 59, 3, 2, 37, 39, 3, 2, 40, 43, 3, 2, 44, 47, 3, 2, 62, 73, 3, 2, 60, 61, 3, 2, 30, 31, 3, 2, 83, 84, 3, 2, 74, 77, 3, 2, 11, 12, 3, 2, 86, 87, 2, 633, 2, 83, 3, 2, 2, 2, 4, 94, 3, 2, 2, 2, 6, 99, 3, 2, 2, 2, 8, 119, 3, 2, 2, 2, 10, 181, 3, 2, 2, 2, 12, 200, 3, 2, 2, 2, 14, 204, 3, 2, 2, 2, 16, 206, 3, 2, 2, 2, 18, 218, 3, 2, 2, 2, 20, 222, 3, 2, 2, 2, 22, 224, 3, 2, 2, 2, 24, 226, 3, 2, 2, 2, 26, 235, 3, 2, 2, 2, 28, 253, 3, 2, 2, 2, 30, 255, 3, 2, 2, 2, 32, 260, 3, 2, 2, 2, 34, 267, 3, 2, 2, 2, 36, 325, 3, 2, 2, 2, 38, 332, 3, 2, 2, 2, 40, 341, 3, 2, 2, 2, 42, 353, 3, 2, 2, 2, 44, 355, 3, 2, 2, 2, 46, 386, 3, 2, 2, 2, 48, 396, 3, 2, 2, 2, 50, 417, 3, 2, 2, 2, 52, 422, 3, 2, 2, 2, 54, 426, 3, 2, 2, 2, 56, 428, 3, 2, 2, 2, 58, 432, 3, 2, 2, 2, 60, 435, 3, 2, 2, 2, 62, 480, 3, 2, 2, 2, 64, 495, 3, 2, 2, 2, 66, 511, 3, 2, 2, 2, 68, 513, 3, 2, 2, 2, 70, 517, 3, 2, 2, 2, 72, 533, 3, 2, 2, 2, 74, 548, 3, 2, 2, 2, 76, 556, 3, 2, 2, 2, 78, 571, 3, 2, 2, 2, 80, 82, 5, 4, 3, 2, 81, 80, 3, 2, 2, 2, 82, 85, 3, 2, 2, 2, 83, 81, 3, 2, 2, 2, 83, 84, 3, 2, 2, 2, 84, 89, 3, 2, 2, 2, 85, 83, 3, 2, 2, 2, 86, 88, 5, 8, 5, 2, 87, 86, 3, 2, 2, 2, 88, 91, 3, 2, 2, 2, 89, 87, 3, 2, 2, 2, 89, 90, 3, 2, 2, 2, 90, 92, 3, 2, 2, 2, 91, 89, 3, 2, 2, 2, 92, 93, 7, 2, 2, 3, 93, 3, 3, 2, 2, 2, 94, 95, 5, 26, 14, 2, 95, 96, 7, 85, 2, 2, 96, 97, 5, 6, 4, 2, 97, 98, 5, 16, 9, 2, 98, 5, 3, 2, 2, 2, 99, 111, 7, 9, 2, 2, 100, 101, 5, 26, 14, 2, 101, 108, 7, 85, 2, 2, 102, 103, 7, 13, 2, 2, 103, 104, 5, 26, 14, 2, 104, 105, 7, 85, 2, 2, 105, 107, 3, 2, 2, 2, 106, 102, 3, 2, 2, 2, 107, 110, 3, 2, 2, 2, 108, 106, 3, 2, 2, 2, 108, 109, 3, 2, 2, 2, 109, 112, 3, 2, 2, 2, 110, 108, 3, 2, 2, 2, 111, 100, 3, 2, 2, 2, 111, 112, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 114, 7, 10, 2, 2, 114, 7, 3, 2, 2, 2, 115, 120, 5, 10, 6, 2, 116, 117, 5, 12, 7, 2, 117, 118, 9, 2, 2, 2, 118, 120, 3, 2, 2, 2, 119, 115, 3, 2, 2, 2, 119, 116, 3, 2, 2, 2, 120, 9, 3, 2, 2, 2, 121, 122, 7, 15, 2, 2, 122, 123, 7, 9, 2, 2, 123, 124, 5, 36, 19, 2, 124, 125, 7, 10, 2, 2, 125, 129, 5, 14, 8, 2, 126, 127, 7, 17, 2, 2, 127, 130, 5, 14, 8, 2, 128, 130, 6, 6, 2, 2, 129, 126, 3, 2, 2, 2, 129, 128, 3, 2, 2, 2, 130, 182, 3, 2, 2, 2, 131, 132, 7, 18, 2, 2, 132, 133, 7, 9, 2, 2, 133, 134, 5, 36, 19, 2, 134, 137, 7, 10, 2, 2, 135, 138, 5, 14, 8, 2, 136, 138, 5, 18, 10, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 182, 3, 2, 2, 2, 139, 140, 7, 20, 2, 2, 140, 142, 7, 9, 2, 2, 141, 143, 5, 20, 11, 2, 142, 141, 3, 2, 2, 2, 142, 143, 3, 2, 2, 2, 143, 144, 3, 2, 2, 2, 144, 146, 7, 14, 2, 2, 145, 147, 5, 36, 19, 2, 146, 145, 3, 2, 2, 2, 146, 147, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 150, 7, 14, 2, 2, 149, 151, 5, 22, 12, 2, 150, 149, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 3, 2, 2, 2, 152, 155, 7, 10, 2, 2, 153, 156, 5, 14, 8, 2, 154, 156, 5, 18, 10, 2, 155, 153, 3, 2, 2, 2, 155, 154, 3, 2, 2, 2, 156, 182, 3, 2, 2, 2, 157, 158, 7, 20, 2, 2, 158, 159, 7, 9, 2, 2, 159, 160, 5, 26, 14, 2, 160, 161, 7, 85, 2, 2, 161, 162, 7, 54, 2, 2, 162, 163, 5, 36, 19, 2, 163, 164, 7, 10, 2, 2, 164, 165, 5, 14, 8, 2, 165, 182, 3, 2, 2, 2, 166, 167, 7, 20, 2, 2, 167, 168, 7, 9, 2, 2, 168, 169, 7, 85, 2, 2, 169, 170, 7, 16, 2, 2, 170, 171, 5, 36, 19, 2, 171, 172, 7, 10, 2, 2, 172, 173, 5, 14, 8, 2, 173, 182, 3, 2, 2, 2, 174, 175, 7, 25, 2, 2, 175, 177, 5, 16, 9, 2, 176, 178, 5, 32, 17, 2, 177, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 177, 3, 2, 2, 2, 179, 180, 3, 2, 2, 2, 180, 182, 3, 2, 2, 2, 181, 121, 3, 2, 2, 2, 181, 131, 3, 2, 2, 2, 181, 139, 3, 2, 2, 2, 181, 157, 3, 2, 2, 2, 181, 166, 3, 2, 2, 2, 181, 174, 3, 2, 2, 2, 182, 11, 3, 2, 2, 2, 183, 184, 7, 19, 2, 2, 184, 185, 5, 16, 9, 2, 185, 186, 7, 18, 2, 2, 186, 187, 7, 9, 2, 2, 187, 188, 5, 36, 19, 2, 188, 189, 7, 10, 2, 2, 189, 201, 3, 2, 2, 2, 190, 201, 5, 24, 13, 2, 191, 201, 7, 21, 2, 2, 192, 201, 7, 22, 2, 2, 193, 195, 7, 23, 2, 2, 194, 196, 5, 36, 19, 2, 195, 194, 3, 2, 2, 2, 195, 196, 3, 2, 2, 2, 196, 201, 3, 2, 2, 2, 197, 198, 7, 27, 2, 2, 198, 201, 5, 36, 19, 2, 199, 201, 5, 36, 19, 2, 200, 183, 3, 2, 2, 2, 200, 190, 3, 2, 2, 2, 200, 191, 3, 2, 2, 2, 200, 192, 3, 2, 2, 2, 200, 193, 3, 2, 2, 2, 200, 197, 3, 2, 2, 2, 200, 199, 3, 2, 2, 2, 201, 13, 3, 2, 2, 2, 202, 205, 5, 16, 9, 2, 203, 205, 5, 8, 5, 2, 204, 202, 3, 2, 2, 2, 204, 203, 3, 2, 2, 2, 205, 15, 3, 2, 2, 2, 206, 210, 7, 5, 2, 2, 207, 209, 5, 8, 5, 2, 208, 207, 3, 2, 2, 2, 209, 212, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 210, 211, 3, 2, 2, 2, 211, 214, 3, 2, 2, 2, 212, 210, 3, 2, 2, 2, 213, 215, 5, 12, 7, 2, 214, 213, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 216, 3, 2, 2, 2, 216, 217, 7, 6, 2, 2, 217, 17, 3, 2, 2, 2, 218, 219, 7, 14, 2, 2, 219, 19, 3, 2, 2, 2, 220, 223, 5, 24, 13, 2, 221, 223, 5, 36, 19, 2, 222, 220, 3, 2, 2, 2, 222, 221, 3, 2, 2, 2, 223, 21, 3, 2, 2, 2, 224, 225, 5, 36, 19, 2, 225, 23, 3, 2, 2, 2, 226, 227, 5, 26, 14, 2, 227, 232, 5, 30, 16, 2, 228, 229, 7, 13, 2, 2, 229, 231, 5, 30, 16, 2, 230, 228, 3, 2, 2, 2, 231, 234, 3, 2, 2, 2, 232, 230, 3, 2, 2, 2, 232, 233, 3, 2, 2, 2, 233, 25, 3, 2, 2, 2, 234, 232, 3, 2, 2, 2, 235, 240, 5, 28, 15, 2, 236, 237, 7, 7, 2, 2, 237, 239, 7, 8, 2, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 27, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 254, 7, 84, 2, 2, 244, 254, 7, 83, 2, 2, 245, 250, 7, 85, 2, 2, 246, 247, 7, 11, 2, 2, 247, 249, 7, 87, 2, 2, 248, 246, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 254, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 243, 3, 2, 2, 2, 253, 244, 3, 2, 2, 2, 253, 245, 3, 2, 2, 2, 254, 29, 3, 2, 2, 2, 255, 258, 7, 85, 2, 2, 256, 257, 7, 62, 2, 2, 257, 259, 5, 36, 19, 2, 258, 256, 3, 2, 2, 2, 258, 259, 3, 2, 2, 2, 259, 31, 3, 2, 2, 2, 260, 261, 7, 26, 2, 2, 261, 262, 7, 9, 2, 2, 262, 263, 5, 28, 15, 2, 263, 264, 7, 85, 2, 2, 264, 265, 7, 10, 2, 2, 265, 266, 5, 16, 9, 2, 266, 33, 3, 2, 2, 2, 267, 268, 8, 18, 1, 2, 268, 269, 5, 38, 20, 2, 269, 311, 3, 2, 2, 2, 270, 271, 12, 15, 2, 2, 271, 272, 9, 3, 2, 2, 272, 310, 5, 34, 18, 16, 273, 274, 12, 14, 2, 2, 274, 275, 9, 4, 2, 2, 275, 310, 5, 34, 18, 15, 276, 277, 12, 13, 2, 2, 277, 278, 9, 5, 2, 2, 278, 310, 5, 34, 18, 14, 279, 280, 12, 12, 2, 2, 280, 281, 9, 6, 2, 2, 281, 310, 5, 34, 18, 13, 282, 283, 12, 11, 2, 2, 283, 284, 9, 7, 2, 2, 284, 310, 5, 34, 18, 12, 285, 286, 12, 9, 2, 2, 286, 287, 9, 8, 2, 2, 287, 310, 5, 34, 18, 10, 288, 289, 12, 8, 2, 2, 289, 290, 7, 48, 2, 2, 290, 310, 5, 34, 18, 9, 291, 292, 12, 7, 2, 2, 292, 293, 7, 49, 2, 2, 293, 310, 5, 34, 18, 8, 294, 295, 12, 6, 2, 2, 295, 296, 7, 50, 2, 2, 296, 310, 5, 34, 18, 7, 297, 298, 12, 5, 2, 2, 298, 299, 7, 51, 2, 2, 299, 310, 5, 34, 18, 6, 300, 301, 12, 4, 2, 2, 301, 302, 7, 52, 2, 2, 302, 310, 5, 34, 18, 5, 303, 304, 12, 3, 2, 2, 304, 305, 7, 55, 2, 2, 305, 310, 5, 34, 18, 3, 306, 307, 12, 10, 2, 2, 307, 308, 7, 29, 2, 2, 308, 310, 5, 26, 14, 2, 309, 270, 3, 2, 2, 2, 309, 273, 3, 2, 2, 2, 309, 276, 3, 2, 2, 2, 309, 279, 3, 2, 2, 2, 309, 282, 3, 2, 2, 2, 309, 285, 3, 2, 2, 2, 309, 288, 3, 2, 2, 2, 309, 291, 3, 2, 2, 2, 309, 294, 3, 2, 2, 2, 309, 297, 3, 2, 2, 2, 309, 300, 3, 2, 2, 2, 309, 303, 3, 2, 2, 2, 309, 306, 3, 2, 2, 2, 310, 313, 3, 2, 2, 2, 311, 309, 3, 2, 2, 2, 311, 312, 3, 2, 2, 2, 312, 35, 3, 2, 2, 2, 313, 311, 3, 2, 2, 2, 314, 326, 5, 34, 18, 2, 315, 316, 5, 34, 18, 2, 316, 317, 7, 53, 2, 2, 317, 318, 5, 36, 19, 2, 318, 319, 7, 54, 2, 2, 319, 320, 5, 36, 19, 2, 320, 326, 3, 2, 2, 2, 321, 322, 5, 34, 18, 2, 322, 323, 9, 9, 2, 2, 323, 324, 5, 36, 19, 2, 324, 326, 3, 2, 2, 2, 325, 314, 3, 2, 2, 2, 325, 315, 3, 2, 2, 2, 325, 321, 3, 2, 2, 2, 326, 37, 3, 2, 2, 2, 327, 328, 9, 10, 2, 2, 328, 333, 5, 48, 25, 2, 329, 330, 9, 4, 2, 2, 330, 333, 5, 38, 20, 2, 331, 333, 5, 40, 21, 2, 332, 327, 3, 2, 2, 2, 332, 329, 3, 2, 2, 2, 332, 331, 3, 2, 2, 2, 333, 39, 3, 2, 2, 2, 334, 342, 5, 48, 25, 2, 335, 336, 5, 48, 25, 2, 336, 337, 9, 10, 2, 2, 337, 342, 3, 2, 2, 2, 338, 339, 9, 11, 2, 2, 339, 342, 5, 38, 20, 2, 340, 342, 5, 42, 22, 2, 341, 334, 3, 2, 2, 2, 341, 335, 3, 2, 2, 2, 341, 338, 3, 2, 2, 2, 341, 340, 3, 2, 2, 2, 342, 41, 3, 2, 2, 2, 343, 344, 7, 9, 2, 2, 344, 345, 5, 44, 23, 2, 345, 346, 7, 10, 2, 2, 346, 347, 5, 38, 20, 2, 347, 354, 3, 2, 2, 2, 348, 349, 7, 9, 2, 2, 349, 350, 5, 46, 24, 2, 350, 351, 7, 10, 2, 2, 351, 352, 5, 40, 21, 2, 352, 354, 3, 2, 2, 2, 353, 343, 3, 2, 2, 2, 353, 348, 3, 2, 2, 2, 354, 43, 3, 2, 2, 2, 355, 356, 9, 12, 2, 2, 356, 45, 3, 2, 2, 2, 357, 360, 7, 84, 2, 2, 358, 359, 7, 7, 2, 2, 359, 361, 7, 8, 2, 2, 360, 358, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 362, 363, 3, 2, 2, 2, 363, 387, 3, 2, 2, 2, 364, 367, 7, 83, 2, 2, 365, 366, 7, 7, 2, 2, 366, 368, 7, 8, 2, 2, 367, 365, 3, 2, 2, 2, 368, 369, 3, 2, 2, 2, 369, 367, 3, 2, 2, 2, 369, 370, 3, 2, 2, 2, 370, 387, 3, 2, 2, 2, 371, 376, 7, 85, 2, 2, 372, 373, 7, 11, 2, 2, 373, 375, 7, 87, 2, 2, 374, 372, 3, 2, 2, 2, 375, 378, 3, 2, 2, 2, 376, 374, 3, 2, 2, 2, 376, 377, 3, 2, 2, 2, 377, 383, 3, 2, 2, 2, 378, 376, 3, 2, 2, 2, 379, 380, 7, 7, 2, 2, 380, 382, 7, 8, 2, 2, 381, 379, 3, 2, 2, 2, 382, 385, 3, 2, 2, 2, 383, 381, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 387, 3, 2, 2, 2, 385, 383, 3, 2, 2, 2, 386, 357, 3, 2, 2, 2, 386, 364, 3, 2, 2, 2, 386, 371, 3, 2, 2, 2, 387, 47, 3, 2, 2, 2, 388, 392, 5, 50, 26, 2, 389, 391, 5, 52, 27, 2, 390, 389, 3, 2, 2, 2, 391, 394, 3, 2, 2, 2, 392, 390, 3, 2, 2, 2, 392, 393, 3, 2, 2, 2, 393, 397, 3, 2, 2, 2, 394, 392, 3, 2, 2, 2, 395, 397, 5, 62, 32, 2, 396, 388, 3, 2, 2, 2, 396, 395, 3, 2, 2, 2, 397, 49, 3, 2, 2, 2, 398, 399, 7, 9, 2, 2, 399, 400, 5, 36, 19, 2, 400, 401, 7, 10, 2, 2, 401, 418, 3, 2, 2, 2, 402, 418, 9, 13, 2, 2, 403, 418, 7, 80, 2, 2, 404, 418, 7, 81, 2, 2, 405, 418, 7, 82, 2, 2, 406, 418, 7, 78, 2, 2, 407, 418, 7, 79, 2, 2, 408, 418, 5, 64, 33, 2, 409, 418, 5, 66, 34, 2, 410, 418, 7, 85, 2, 2, 411, 412, 7, 85, 2, 2, 412, 418, 5, 70, 36, 2, 413, 414, 7, 24, 2, 2, 414, 415, 5, 28, 15, 2, 415, 416, 5, 70, 36, 2, 416, 418, 3, 2, 2, 2, 417, 398, 3, 2, 2, 2, 417, 402, 3, 2, 2, 2, 417, 403, 3, 2, 2, 2, 417, 404, 3, 2, 2, 2, 417, 405, 3, 2, 2, 2, 417, 406, 3, 2, 2, 2, 417, 407, 3, 2, 2, 2, 417, 408, 3, 2, 2, 2, 417, 409, 3, 2, 2, 2, 417, 410, 3, 2, 2, 2, 417, 411, 3, 2, 2, 2, 417, 413, 3, 2, 2, 2, 418, 51, 3, 2, 2, 2, 419, 423, 5, 56, 29, 2, 420, 423, 5, 58, 30, 2, 421, 423, 5, 60, 31, 2, 422, 419, 3, 2, 2, 2, 422, 420, 3, 2, 2, 2, 422, 421, 3, 2, 2, 2, 423, 53, 3, 2, 2, 2, 424, 427, 5, 56, 29, 2, 425, 427, 5, 58, 30, 2, 426, 424, 3, 2, 2, 2, 426, 425, 3, 2, 2, 2, 427, 55, 3, 2, 2, 2, 428, 429, 9, 14, 2, 2, 429, 430, 7, 87, 2, 2, 430, 431, 5, 70, 36, 2, 431, 57, 3, 2, 2, 2, 432, 433, 9, 14, 2, 2, 433, 434, 9, 15, 2, 2, 434, 59, 3, 2, 2, 2, 435, 436, 7, 7, 2, 2, 436, 437, 5, 36, 19, 2, 437, 438, 7, 8, 2, 2, 438, 61, 3, 2, 2, 2, 439, 440, 7, 24, 2, 2, 440, 445, 5, 28, 15, 2, 441, 442, 7, 7, 2, 2, 442, 443, 5, 36, 19, 2, 443, 444, 7, 8, 2, 2, 444, 446, 3, 2, 2, 2, 445, 441, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 456, 3, 2, 2, 2, 449, 453, 5, 54, 28, 2, 450, 452, 5, 52, 27, 2, 451, 450, 3, 2, 2, 2, 452, 455, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 453, 454, 3, 2, 2, 2, 454, 457, 3, 2, 2, 2, 455, 453, 3, 2, 2, 2, 456, 449, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 481, 3, 2, 2, 2, 458, 459, 7, 24, 2, 2, 459, 460, 5, 28, 15, 2, 460, 461, 7, 7, 2, 2, 461, 462, 7, 8, 2, 2, 462, 471, 7, 5, 2, 2, 463, 468, 5, 36, 19, 2, 464, 465, 7, 13, 2, 2, 465, 467, 5, 36, 19, 2, 466, 464, 3, 2, 2, 2, 467, 470, 3, 2, 2, 2, 468, 466, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 472, 3, 2, 2, 2, 470, 468, 3, 2, 2, 2, 471, 463, 3, 2, 2, 2, 471, 472, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 477, 7, 6, 2, 2, 474, 476, 5, 52, 27, 2, 475, 474, 3, 2, 2, 2, 476, 479, 3, 2, 2, 2, 477, 475, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 481, 3, 2, 2, 2, 479, 477, 3, 2, 2, 2, 480, 439, 3, 2, 2, 2, 480, 458, 3, 2, 2, 2, 481, 63, 3, 2, 2, 2, 482, 483, 7, 7, 2, 2, 483, 488, 5, 36, 19, 2, 484, 485, 7, 13, 2, 2, 485, 487, 5, 36, 19, 2, 486, 484, 3, 2, 2, 2, 487, 490, 3, 2, 2, 2, 488, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 491, 3, 2, 2, 2, 490, 488, 3, 2, 2, 2, 491, 492, 7, 8, 2, 2, 492, 496, 3, 2, 2, 2, 493, 494, 7, 7, 2, 2, 494, 496, 7, 8, 2, 2, 495, 482, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 496, 65, 3, 2, 2, 2, 497, 498, 7, 7, 2, 2, 498, 503, 5, 68, 35, 2, 499, 500, 7, 13, 2, 2, 500, 502, 5, 68, 35, 2, 501, 499, 3, 2, 2, 2, 502, 505, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 506, 3, 2, 2, 2, 505, 503, 3, 2, 2, 2, 506, 507, 7, 8, 2, 2, 507, 512, 3, 2, 2, 2, 508, 509, 7, 7, 2, 2, 509, 510, 7, 54, 2, 2, 510, 512, 7, 8, 2, 2, 511, 497, 3, 2, 2, 2, 511, 508, 3, 2, 2, 2, 512, 67, 3, 2, 2, 2, 513, 514, 5, 36, 19, 2, 514, 515, 7, 54, 2, 2, 515, 516, 5, 36, 19, 2, 516, 69, 3, 2, 2, 2, 517, 526, 7, 9, 2, 2, 518, 523, 5, 72, 37, 2, 519, 520, 7, 13, 2, 2, 520, 522, 5, 72, 37, 2, 521, 519, 3, 2, 2, 2, 522, 525, 3, 2, 2, 2, 523, 521, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 527, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 526, 518, 3, 2, 2, 2, 526, 527, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 529, 7, 10, 2, 2, 529, 71, 3, 2, 2, 2, 530, 534, 5, 36, 19, 2, 531, 534, 5, 74, 38, 2, 532, 534, 5, 78, 40, 2, 533, 530, 3, 2, 2, 2, 533, 531, 3, 2, 2, 2, 533, 532, 3, 2, 2, 2, 534, 73, 3, 2, 2, 2, 535, 549, 5, 76, 39, 2, 536, 545, 7, 9, 2, 2, 537, 542, 5, 76, 39, 2, 538, 539, 7, 13, 2, 2, 539, 541, 5, 76, 39, 2, 540, 538, 3, 2, 2, 2, 541, 544, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 546, 3, 2, 2, 2, 544, 542, 3, 2, 2, 2, 545, 537, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 547, 3, 2, 2, 2, 547, 549, 7, 10, 2, 2, 548, 535, 3, 2, 2, 2, 548, 536, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 553, 7, 57, 2, 2, 551, 554, 5, 16, 9, 2, 552, 554, 5, 36, 19, 2, 553, 551, 3, 2, 2, 2, 553, 552, 3, 2, 2, 2, 554, 75, 3, 2, 2, 2, 555, 557, 5, 26, 14, 2, 556, 555, 3, 2, 2, 2, 556, 557, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 559, 7, 85, 2, 2, 559, 77, 3, 2, 2, 2, 560, 561, 5, 26, 14, 2, 561, 562, 7, 56, 2, 2, 562, 563, 7, 85, 2, 2, 563, 572, 3, 2, 2, 2, 564, 565, 5, 26, 14, 2, 565, 566, 7, 56, 2, 2, 566, 567, 7, 24, 2, 2, 567, 572, 3, 2, 2, 2, 568, 569, 7, 28, 2, 2, 569, 570, 7, 56, 2, 2, 570, 572, 7, 85, 2, 2, 571, 560, 3, 2, 2, 2, 571, 564, 3, 2, 2, 2, 571, 568, 3, 2, 2, 2, 572, 79, 3, 2, 2, 2, 62, 83, 89, 108, 111, 119, 129, 137, 142, 146, 150, 155, 179, 181, 195, 200, 204, 210, 214, 222, 232, 240, 250, 253, 258, 309, 311, 325, 332, 341, 353, 362, 369, 376, 383, 386, 392, 396, 417, 422, 426, 447, 453, 456, 468, 471, 477, 480, 488, 495, 503, 511, 523, 526, 533, 542, 545, 548, 553, 556, 571] \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.tokens b/packages/kbn-monaco/src/painless/antlr/painless_parser.tokens new file mode 100644 index 00000000000000..ff62343c92ba5a --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.tokens @@ -0,0 +1,158 @@ +WS=1 +COMMENT=2 +LBRACK=3 +RBRACK=4 +LBRACE=5 +RBRACE=6 +LP=7 +RP=8 +DOT=9 +NSDOT=10 +COMMA=11 +SEMICOLON=12 +IF=13 +IN=14 +ELSE=15 +WHILE=16 +DO=17 +FOR=18 +CONTINUE=19 +BREAK=20 +RETURN=21 +NEW=22 +TRY=23 +CATCH=24 +THROW=25 +THIS=26 +INSTANCEOF=27 +BOOLNOT=28 +BWNOT=29 +MUL=30 +DIV=31 +REM=32 +ADD=33 +SUB=34 +LSH=35 +RSH=36 +USH=37 +LT=38 +LTE=39 +GT=40 +GTE=41 +EQ=42 +EQR=43 +NE=44 +NER=45 +BWAND=46 +XOR=47 +BWOR=48 +BOOLAND=49 +BOOLOR=50 +COND=51 +COLON=52 +ELVIS=53 +REF=54 +ARROW=55 +FIND=56 +MATCH=57 +INCR=58 +DECR=59 +ASSIGN=60 +AADD=61 +ASUB=62 +AMUL=63 +ADIV=64 +AREM=65 +AAND=66 +AXOR=67 +AOR=68 +ALSH=69 +ARSH=70 +AUSH=71 +OCTAL=72 +HEX=73 +INTEGER=74 +DECIMAL=75 +STRING=76 +REGEX=77 +TRUE=78 +FALSE=79 +NULL=80 +PRIMITIVE=81 +DEF=82 +ID=83 +DOTINTEGER=84 +DOTID=85 +'{'=3 +'}'=4 +'['=5 +']'=6 +'('=7 +')'=8 +'.'=9 +'?.'=10 +','=11 +';'=12 +'if'=13 +'in'=14 +'else'=15 +'while'=16 +'do'=17 +'for'=18 +'continue'=19 +'break'=20 +'return'=21 +'new'=22 +'try'=23 +'catch'=24 +'throw'=25 +'this'=26 +'instanceof'=27 +'!'=28 +'~'=29 +'*'=30 +'/'=31 +'%'=32 +'+'=33 +'-'=34 +'<<'=35 +'>>'=36 +'>>>'=37 +'<'=38 +'<='=39 +'>'=40 +'>='=41 +'=='=42 +'==='=43 +'!='=44 +'!=='=45 +'&'=46 +'^'=47 +'|'=48 +'&&'=49 +'||'=50 +'?'=51 +':'=52 +'?:'=53 +'::'=54 +'->'=55 +'=~'=56 +'==~'=57 +'++'=58 +'--'=59 +'='=60 +'+='=61 +'-='=62 +'*='=63 +'/='=64 +'%='=65 +'&='=66 +'^='=67 +'|='=68 +'<<='=69 +'>>='=70 +'>>>='=71 +'true'=78 +'false'=79 +'null'=80 +'def'=82 diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser.ts new file mode 100644 index 00000000000000..320e310a0a9a2a --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser.ts @@ -0,0 +1,5832 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.7.3-SNAPSHOT + + +import { ATN } from "antlr4ts/atn/ATN"; +import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer"; +import { FailedPredicateException } from "antlr4ts/FailedPredicateException"; +import { NotNull } from "antlr4ts/Decorators"; +import { NoViableAltException } from "antlr4ts/NoViableAltException"; +import { Override } from "antlr4ts/Decorators"; +import { Parser } from "antlr4ts/Parser"; +import { ParserRuleContext } from "antlr4ts/ParserRuleContext"; +import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator"; +import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; +import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor"; +import { RecognitionException } from "antlr4ts/RecognitionException"; +import { RuleContext } from "antlr4ts/RuleContext"; +//import { RuleVersion } from "antlr4ts/RuleVersion"; +import { TerminalNode } from "antlr4ts/tree/TerminalNode"; +import { Token } from "antlr4ts/Token"; +import { TokenStream } from "antlr4ts/TokenStream"; +import { Vocabulary } from "antlr4ts/Vocabulary"; +import { VocabularyImpl } from "antlr4ts/VocabularyImpl"; + +import * as Utils from "antlr4ts/misc/Utils"; + +import { painless_parserListener } from "./painless_parserListener"; + +export class painless_parser extends Parser { + public static readonly WS = 1; + public static readonly COMMENT = 2; + public static readonly LBRACK = 3; + public static readonly RBRACK = 4; + public static readonly LBRACE = 5; + public static readonly RBRACE = 6; + public static readonly LP = 7; + public static readonly RP = 8; + public static readonly DOT = 9; + public static readonly NSDOT = 10; + public static readonly COMMA = 11; + public static readonly SEMICOLON = 12; + public static readonly IF = 13; + public static readonly IN = 14; + public static readonly ELSE = 15; + public static readonly WHILE = 16; + public static readonly DO = 17; + public static readonly FOR = 18; + public static readonly CONTINUE = 19; + public static readonly BREAK = 20; + public static readonly RETURN = 21; + public static readonly NEW = 22; + public static readonly TRY = 23; + public static readonly CATCH = 24; + public static readonly THROW = 25; + public static readonly THIS = 26; + public static readonly INSTANCEOF = 27; + public static readonly BOOLNOT = 28; + public static readonly BWNOT = 29; + public static readonly MUL = 30; + public static readonly DIV = 31; + public static readonly REM = 32; + public static readonly ADD = 33; + public static readonly SUB = 34; + public static readonly LSH = 35; + public static readonly RSH = 36; + public static readonly USH = 37; + public static readonly LT = 38; + public static readonly LTE = 39; + public static readonly GT = 40; + public static readonly GTE = 41; + public static readonly EQ = 42; + public static readonly EQR = 43; + public static readonly NE = 44; + public static readonly NER = 45; + public static readonly BWAND = 46; + public static readonly XOR = 47; + public static readonly BWOR = 48; + public static readonly BOOLAND = 49; + public static readonly BOOLOR = 50; + public static readonly COND = 51; + public static readonly COLON = 52; + public static readonly ELVIS = 53; + public static readonly REF = 54; + public static readonly ARROW = 55; + public static readonly FIND = 56; + public static readonly MATCH = 57; + public static readonly INCR = 58; + public static readonly DECR = 59; + public static readonly ASSIGN = 60; + public static readonly AADD = 61; + public static readonly ASUB = 62; + public static readonly AMUL = 63; + public static readonly ADIV = 64; + public static readonly AREM = 65; + public static readonly AAND = 66; + public static readonly AXOR = 67; + public static readonly AOR = 68; + public static readonly ALSH = 69; + public static readonly ARSH = 70; + public static readonly AUSH = 71; + public static readonly OCTAL = 72; + public static readonly HEX = 73; + public static readonly INTEGER = 74; + public static readonly DECIMAL = 75; + public static readonly STRING = 76; + public static readonly REGEX = 77; + public static readonly TRUE = 78; + public static readonly FALSE = 79; + public static readonly NULL = 80; + public static readonly PRIMITIVE = 81; + public static readonly DEF = 82; + public static readonly ID = 83; + public static readonly DOTINTEGER = 84; + public static readonly DOTID = 85; + public static readonly RULE_source = 0; + public static readonly RULE_function = 1; + public static readonly RULE_parameters = 2; + public static readonly RULE_statement = 3; + public static readonly RULE_rstatement = 4; + public static readonly RULE_dstatement = 5; + public static readonly RULE_trailer = 6; + public static readonly RULE_block = 7; + public static readonly RULE_empty = 8; + public static readonly RULE_initializer = 9; + public static readonly RULE_afterthought = 10; + public static readonly RULE_declaration = 11; + public static readonly RULE_decltype = 12; + public static readonly RULE_type = 13; + public static readonly RULE_declvar = 14; + public static readonly RULE_trap = 15; + public static readonly RULE_noncondexpression = 16; + public static readonly RULE_expression = 17; + public static readonly RULE_unary = 18; + public static readonly RULE_unarynotaddsub = 19; + public static readonly RULE_castexpression = 20; + public static readonly RULE_primordefcasttype = 21; + public static readonly RULE_refcasttype = 22; + public static readonly RULE_chain = 23; + public static readonly RULE_primary = 24; + public static readonly RULE_postfix = 25; + public static readonly RULE_postdot = 26; + public static readonly RULE_callinvoke = 27; + public static readonly RULE_fieldaccess = 28; + public static readonly RULE_braceaccess = 29; + public static readonly RULE_arrayinitializer = 30; + public static readonly RULE_listinitializer = 31; + public static readonly RULE_mapinitializer = 32; + public static readonly RULE_maptoken = 33; + public static readonly RULE_arguments = 34; + public static readonly RULE_argument = 35; + public static readonly RULE_lambda = 36; + public static readonly RULE_lamtype = 37; + public static readonly RULE_funcref = 38; + // tslint:disable:no-trailing-whitespace + public static readonly ruleNames: string[] = [ + "source", "function", "parameters", "statement", "rstatement", "dstatement", + "trailer", "block", "empty", "initializer", "afterthought", "declaration", + "decltype", "type", "declvar", "trap", "noncondexpression", "expression", + "unary", "unarynotaddsub", "castexpression", "primordefcasttype", "refcasttype", + "chain", "primary", "postfix", "postdot", "callinvoke", "fieldaccess", + "braceaccess", "arrayinitializer", "listinitializer", "mapinitializer", + "maptoken", "arguments", "argument", "lambda", "lamtype", "funcref", + ]; + + private static readonly _LITERAL_NAMES: Array = [ + undefined, undefined, undefined, "'{'", "'}'", "'['", "']'", "'('", "')'", + "'.'", "'?.'", "','", "';'", "'if'", "'in'", "'else'", "'while'", "'do'", + "'for'", "'continue'", "'break'", "'return'", "'new'", "'try'", "'catch'", + "'throw'", "'this'", "'instanceof'", "'!'", "'~'", "'*'", "'/'", "'%'", + "'+'", "'-'", "'<<'", "'>>'", "'>>>'", "'<'", "'<='", "'>'", "'>='", "'=='", + "'==='", "'!='", "'!=='", "'&'", "'^'", "'|'", "'&&'", "'||'", "'?'", + "':'", "'?:'", "'::'", "'->'", "'=~'", "'==~'", "'++'", "'--'", "'='", + "'+='", "'-='", "'*='", "'/='", "'%='", "'&='", "'^='", "'|='", "'<<='", + "'>>='", "'>>>='", undefined, undefined, undefined, undefined, undefined, + undefined, "'true'", "'false'", "'null'", undefined, "'def'", + ]; + private static readonly _SYMBOLIC_NAMES: Array = [ + undefined, "WS", "COMMENT", "LBRACK", "RBRACK", "LBRACE", "RBRACE", "LP", + "RP", "DOT", "NSDOT", "COMMA", "SEMICOLON", "IF", "IN", "ELSE", "WHILE", + "DO", "FOR", "CONTINUE", "BREAK", "RETURN", "NEW", "TRY", "CATCH", "THROW", + "THIS", "INSTANCEOF", "BOOLNOT", "BWNOT", "MUL", "DIV", "REM", "ADD", + "SUB", "LSH", "RSH", "USH", "LT", "LTE", "GT", "GTE", "EQ", "EQR", "NE", + "NER", "BWAND", "XOR", "BWOR", "BOOLAND", "BOOLOR", "COND", "COLON", "ELVIS", + "REF", "ARROW", "FIND", "MATCH", "INCR", "DECR", "ASSIGN", "AADD", "ASUB", + "AMUL", "ADIV", "AREM", "AAND", "AXOR", "AOR", "ALSH", "ARSH", "AUSH", + "OCTAL", "HEX", "INTEGER", "DECIMAL", "STRING", "REGEX", "TRUE", "FALSE", + "NULL", "PRIMITIVE", "DEF", "ID", "DOTINTEGER", "DOTID", + ]; + public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(painless_parser._LITERAL_NAMES, painless_parser._SYMBOLIC_NAMES, []); + + // @Override + // @NotNull + public get vocabulary(): Vocabulary { + return painless_parser.VOCABULARY; + } + // tslint:enable:no-trailing-whitespace + + // @Override + public get grammarFileName(): string { return "painless_parser.g4"; } + + // @Override + public get ruleNames(): string[] { return painless_parser.ruleNames; } + + // @Override + public get serializedATN(): string { return painless_parser._serializedATN; } + + constructor(input: TokenStream) { + super(input); + this._interp = new ParserATNSimulator(painless_parser._ATN, this); + } + // @RuleVersion(0) + public source(): SourceContext { + let _localctx: SourceContext = new SourceContext(this._ctx, this.state); + this.enterRule(_localctx, 0, painless_parser.RULE_source); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 81; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 78; + this.function(); + } + } + } + this.state = 83; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); + } + this.state = 87; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.IF - 5)) | (1 << (painless_parser.WHILE - 5)) | (1 << (painless_parser.DO - 5)) | (1 << (painless_parser.FOR - 5)) | (1 << (painless_parser.CONTINUE - 5)) | (1 << (painless_parser.BREAK - 5)) | (1 << (painless_parser.RETURN - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.TRY - 5)) | (1 << (painless_parser.THROW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.PRIMITIVE - 58)) | (1 << (painless_parser.DEF - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + { + this.state = 84; + this.statement(); + } + } + this.state = 89; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 90; + this.match(painless_parser.EOF); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public function(): FunctionContext { + let _localctx: FunctionContext = new FunctionContext(this._ctx, this.state); + this.enterRule(_localctx, 2, painless_parser.RULE_function); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 92; + this.decltype(); + this.state = 93; + this.match(painless_parser.ID); + this.state = 94; + this.parameters(); + this.state = 95; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public parameters(): ParametersContext { + let _localctx: ParametersContext = new ParametersContext(this._ctx, this.state); + this.enterRule(_localctx, 4, painless_parser.RULE_parameters); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 97; + this.match(painless_parser.LP); + this.state = 109; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (painless_parser.PRIMITIVE - 81)) | (1 << (painless_parser.DEF - 81)) | (1 << (painless_parser.ID - 81)))) !== 0)) { + { + this.state = 98; + this.decltype(); + this.state = 99; + this.match(painless_parser.ID); + this.state = 106; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 100; + this.match(painless_parser.COMMA); + this.state = 101; + this.decltype(); + this.state = 102; + this.match(painless_parser.ID); + } + } + this.state = 108; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 111; + this.match(painless_parser.RP); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public statement(): StatementContext { + let _localctx: StatementContext = new StatementContext(this._ctx, this.state); + this.enterRule(_localctx, 6, painless_parser.RULE_statement); + let _la: number; + try { + this.state = 117; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.IF: + case painless_parser.WHILE: + case painless_parser.FOR: + case painless_parser.TRY: + this.enterOuterAlt(_localctx, 1); + { + this.state = 113; + this.rstatement(); + } + break; + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.DO: + case painless_parser.CONTINUE: + case painless_parser.BREAK: + case painless_parser.RETURN: + case painless_parser.NEW: + case painless_parser.THROW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.ADD: + case painless_parser.SUB: + case painless_parser.INCR: + case painless_parser.DECR: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.PRIMITIVE: + case painless_parser.DEF: + case painless_parser.ID: + this.enterOuterAlt(_localctx, 2); + { + this.state = 114; + this.dstatement(); + this.state = 115; + _la = this._input.LA(1); + if (!(_la === painless_parser.EOF || _la === painless_parser.SEMICOLON)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public rstatement(): RstatementContext { + let _localctx: RstatementContext = new RstatementContext(this._ctx, this.state); + this.enterRule(_localctx, 8, painless_parser.RULE_rstatement); + let _la: number; + try { + let _alt: number; + this.state = 179; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { + case 1: + _localctx = new IfContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 119; + this.match(painless_parser.IF); + this.state = 120; + this.match(painless_parser.LP); + this.state = 121; + this.expression(); + this.state = 122; + this.match(painless_parser.RP); + this.state = 123; + this.trailer(); + this.state = 127; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 5, this._ctx) ) { + case 1: + { + this.state = 124; + this.match(painless_parser.ELSE); + this.state = 125; + this.trailer(); + } + break; + + case 2: + { + this.state = 126; + if (!( this._input.LA(1) != painless_parser.ELSE )) { + throw new FailedPredicateException(this, " this._input.LA(1) != painless_parser.ELSE "); + } + } + break; + } + } + break; + + case 2: + _localctx = new WhileContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 129; + this.match(painless_parser.WHILE); + this.state = 130; + this.match(painless_parser.LP); + this.state = 131; + this.expression(); + this.state = 132; + this.match(painless_parser.RP); + this.state = 135; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.LBRACK: + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.IF: + case painless_parser.WHILE: + case painless_parser.DO: + case painless_parser.FOR: + case painless_parser.CONTINUE: + case painless_parser.BREAK: + case painless_parser.RETURN: + case painless_parser.NEW: + case painless_parser.TRY: + case painless_parser.THROW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.ADD: + case painless_parser.SUB: + case painless_parser.INCR: + case painless_parser.DECR: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.PRIMITIVE: + case painless_parser.DEF: + case painless_parser.ID: + { + this.state = 133; + this.trailer(); + } + break; + case painless_parser.SEMICOLON: + { + this.state = 134; + this.empty(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + + case 3: + _localctx = new ForContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 137; + this.match(painless_parser.FOR); + this.state = 138; + this.match(painless_parser.LP); + this.state = 140; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.PRIMITIVE - 58)) | (1 << (painless_parser.DEF - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 139; + this.initializer(); + } + } + + this.state = 142; + this.match(painless_parser.SEMICOLON); + this.state = 144; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 143; + this.expression(); + } + } + + this.state = 146; + this.match(painless_parser.SEMICOLON); + this.state = 148; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 147; + this.afterthought(); + } + } + + this.state = 150; + this.match(painless_parser.RP); + this.state = 153; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.LBRACK: + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.IF: + case painless_parser.WHILE: + case painless_parser.DO: + case painless_parser.FOR: + case painless_parser.CONTINUE: + case painless_parser.BREAK: + case painless_parser.RETURN: + case painless_parser.NEW: + case painless_parser.TRY: + case painless_parser.THROW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.ADD: + case painless_parser.SUB: + case painless_parser.INCR: + case painless_parser.DECR: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.PRIMITIVE: + case painless_parser.DEF: + case painless_parser.ID: + { + this.state = 151; + this.trailer(); + } + break; + case painless_parser.SEMICOLON: + { + this.state = 152; + this.empty(); + } + break; + default: + throw new NoViableAltException(this); + } + } + break; + + case 4: + _localctx = new EachContext(_localctx); + this.enterOuterAlt(_localctx, 4); + { + this.state = 155; + this.match(painless_parser.FOR); + this.state = 156; + this.match(painless_parser.LP); + this.state = 157; + this.decltype(); + this.state = 158; + this.match(painless_parser.ID); + this.state = 159; + this.match(painless_parser.COLON); + this.state = 160; + this.expression(); + this.state = 161; + this.match(painless_parser.RP); + this.state = 162; + this.trailer(); + } + break; + + case 5: + _localctx = new IneachContext(_localctx); + this.enterOuterAlt(_localctx, 5); + { + this.state = 164; + this.match(painless_parser.FOR); + this.state = 165; + this.match(painless_parser.LP); + this.state = 166; + this.match(painless_parser.ID); + this.state = 167; + this.match(painless_parser.IN); + this.state = 168; + this.expression(); + this.state = 169; + this.match(painless_parser.RP); + this.state = 170; + this.trailer(); + } + break; + + case 6: + _localctx = new TryContext(_localctx); + this.enterOuterAlt(_localctx, 6); + { + this.state = 172; + this.match(painless_parser.TRY); + this.state = 173; + this.block(); + this.state = 175; + this._errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + this.state = 174; + this.trap(); + } + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 177; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 11, this._ctx); + } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public dstatement(): DstatementContext { + let _localctx: DstatementContext = new DstatementContext(this._ctx, this.state); + this.enterRule(_localctx, 10, painless_parser.RULE_dstatement); + let _la: number; + try { + this.state = 198; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { + case 1: + _localctx = new DoContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 181; + this.match(painless_parser.DO); + this.state = 182; + this.block(); + this.state = 183; + this.match(painless_parser.WHILE); + this.state = 184; + this.match(painless_parser.LP); + this.state = 185; + this.expression(); + this.state = 186; + this.match(painless_parser.RP); + } + break; + + case 2: + _localctx = new DeclContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 188; + this.declaration(); + } + break; + + case 3: + _localctx = new ContinueContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 189; + this.match(painless_parser.CONTINUE); + } + break; + + case 4: + _localctx = new BreakContext(_localctx); + this.enterOuterAlt(_localctx, 4); + { + this.state = 190; + this.match(painless_parser.BREAK); + } + break; + + case 5: + _localctx = new ReturnContext(_localctx); + this.enterOuterAlt(_localctx, 5); + { + this.state = 191; + this.match(painless_parser.RETURN); + this.state = 193; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 192; + this.expression(); + } + } + + } + break; + + case 6: + _localctx = new ThrowContext(_localctx); + this.enterOuterAlt(_localctx, 6); + { + this.state = 195; + this.match(painless_parser.THROW); + this.state = 196; + this.expression(); + } + break; + + case 7: + _localctx = new ExprContext(_localctx); + this.enterOuterAlt(_localctx, 7); + { + this.state = 197; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public trailer(): TrailerContext { + let _localctx: TrailerContext = new TrailerContext(this._ctx, this.state); + this.enterRule(_localctx, 12, painless_parser.RULE_trailer); + try { + this.state = 202; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.LBRACK: + this.enterOuterAlt(_localctx, 1); + { + this.state = 200; + this.block(); + } + break; + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.IF: + case painless_parser.WHILE: + case painless_parser.DO: + case painless_parser.FOR: + case painless_parser.CONTINUE: + case painless_parser.BREAK: + case painless_parser.RETURN: + case painless_parser.NEW: + case painless_parser.TRY: + case painless_parser.THROW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.ADD: + case painless_parser.SUB: + case painless_parser.INCR: + case painless_parser.DECR: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.PRIMITIVE: + case painless_parser.DEF: + case painless_parser.ID: + this.enterOuterAlt(_localctx, 2); + { + this.state = 201; + this.statement(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public block(): BlockContext { + let _localctx: BlockContext = new BlockContext(this._ctx, this.state); + this.enterRule(_localctx, 14, painless_parser.RULE_block); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 204; + this.match(painless_parser.LBRACK); + this.state = 208; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 16, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 205; + this.statement(); + } + } + } + this.state = 210; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 16, this._ctx); + } + this.state = 212; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.DO - 5)) | (1 << (painless_parser.CONTINUE - 5)) | (1 << (painless_parser.BREAK - 5)) | (1 << (painless_parser.RETURN - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.THROW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.PRIMITIVE - 58)) | (1 << (painless_parser.DEF - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 211; + this.dstatement(); + } + } + + this.state = 214; + this.match(painless_parser.RBRACK); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public empty(): EmptyContext { + let _localctx: EmptyContext = new EmptyContext(this._ctx, this.state); + this.enterRule(_localctx, 16, painless_parser.RULE_empty); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 216; + this.match(painless_parser.SEMICOLON); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public initializer(): InitializerContext { + let _localctx: InitializerContext = new InitializerContext(this._ctx, this.state); + this.enterRule(_localctx, 18, painless_parser.RULE_initializer); + try { + this.state = 220; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 18, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 218; + this.declaration(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 219; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public afterthought(): AfterthoughtContext { + let _localctx: AfterthoughtContext = new AfterthoughtContext(this._ctx, this.state); + this.enterRule(_localctx, 20, painless_parser.RULE_afterthought); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 222; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public declaration(): DeclarationContext { + let _localctx: DeclarationContext = new DeclarationContext(this._ctx, this.state); + this.enterRule(_localctx, 22, painless_parser.RULE_declaration); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 224; + this.decltype(); + this.state = 225; + this.declvar(); + this.state = 230; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 226; + this.match(painless_parser.COMMA); + this.state = 227; + this.declvar(); + } + } + this.state = 232; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public decltype(): DecltypeContext { + let _localctx: DecltypeContext = new DecltypeContext(this._ctx, this.state); + this.enterRule(_localctx, 24, painless_parser.RULE_decltype); + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + this.state = 233; + this.type(); + this.state = 238; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 20, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 234; + this.match(painless_parser.LBRACE); + this.state = 235; + this.match(painless_parser.RBRACE); + } + } + } + this.state = 240; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 20, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public type(): TypeContext { + let _localctx: TypeContext = new TypeContext(this._ctx, this.state); + this.enterRule(_localctx, 26, painless_parser.RULE_type); + try { + let _alt: number; + this.state = 251; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.DEF: + this.enterOuterAlt(_localctx, 1); + { + this.state = 241; + this.match(painless_parser.DEF); + } + break; + case painless_parser.PRIMITIVE: + this.enterOuterAlt(_localctx, 2); + { + this.state = 242; + this.match(painless_parser.PRIMITIVE); + } + break; + case painless_parser.ID: + this.enterOuterAlt(_localctx, 3); + { + this.state = 243; + this.match(painless_parser.ID); + this.state = 248; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 244; + this.match(painless_parser.DOT); + this.state = 245; + this.match(painless_parser.DOTID); + } + } + } + this.state = 250; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public declvar(): DeclvarContext { + let _localctx: DeclvarContext = new DeclvarContext(this._ctx, this.state); + this.enterRule(_localctx, 28, painless_parser.RULE_declvar); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 253; + this.match(painless_parser.ID); + this.state = 256; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (_la === painless_parser.ASSIGN) { + { + this.state = 254; + this.match(painless_parser.ASSIGN); + this.state = 255; + this.expression(); + } + } + + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public trap(): TrapContext { + let _localctx: TrapContext = new TrapContext(this._ctx, this.state); + this.enterRule(_localctx, 30, painless_parser.RULE_trap); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 258; + this.match(painless_parser.CATCH); + this.state = 259; + this.match(painless_parser.LP); + this.state = 260; + this.type(); + this.state = 261; + this.match(painless_parser.ID); + this.state = 262; + this.match(painless_parser.RP); + this.state = 263; + this.block(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + + public noncondexpression(): NoncondexpressionContext; + public noncondexpression(_p: number): NoncondexpressionContext; + // @RuleVersion(0) + public noncondexpression(_p?: number): NoncondexpressionContext { + if (_p === undefined) { + _p = 0; + } + + let _parentctx: ParserRuleContext = this._ctx; + let _parentState: number = this.state; + let _localctx: NoncondexpressionContext = new NoncondexpressionContext(this._ctx, _parentState); + let _prevctx: NoncondexpressionContext = _localctx; + let _startState: number = 32; + this.enterRecursionRule(_localctx, 32, painless_parser.RULE_noncondexpression, _p); + let _la: number; + try { + let _alt: number; + this.enterOuterAlt(_localctx, 1); + { + { + _localctx = new SingleContext(_localctx); + this._ctx = _localctx; + _prevctx = _localctx; + + this.state = 266; + this.unary(); + } + this._ctx._stop = this._input.tryLT(-1); + this.state = 309; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 25, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + _prevctx = _localctx; + { + this.state = 307; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 24, this._ctx) ) { + case 1: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 268; + if (!(this.precpred(this._ctx, 13))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 13)"); + } + this.state = 269; + _la = this._input.LA(1); + if (!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (painless_parser.MUL - 30)) | (1 << (painless_parser.DIV - 30)) | (1 << (painless_parser.REM - 30)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 270; + this.noncondexpression(14); + } + break; + + case 2: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 271; + if (!(this.precpred(this._ctx, 12))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 12)"); + } + this.state = 272; + _la = this._input.LA(1); + if (!(_la === painless_parser.ADD || _la === painless_parser.SUB)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 273; + this.noncondexpression(13); + } + break; + + case 3: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 274; + if (!(this.precpred(this._ctx, 11))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 11)"); + } + this.state = 275; + _la = this._input.LA(1); + if (!(_la === painless_parser.FIND || _la === painless_parser.MATCH)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 276; + this.noncondexpression(12); + } + break; + + case 4: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 277; + if (!(this.precpred(this._ctx, 10))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 10)"); + } + this.state = 278; + _la = this._input.LA(1); + if (!(((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & ((1 << (painless_parser.LSH - 35)) | (1 << (painless_parser.RSH - 35)) | (1 << (painless_parser.USH - 35)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 279; + this.noncondexpression(11); + } + break; + + case 5: + { + _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 280; + if (!(this.precpred(this._ctx, 9))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 9)"); + } + this.state = 281; + _la = this._input.LA(1); + if (!(((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (painless_parser.LT - 38)) | (1 << (painless_parser.LTE - 38)) | (1 << (painless_parser.GT - 38)) | (1 << (painless_parser.GTE - 38)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 282; + this.noncondexpression(10); + } + break; + + case 6: + { + _localctx = new CompContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 283; + if (!(this.precpred(this._ctx, 7))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 7)"); + } + this.state = 284; + _la = this._input.LA(1); + if (!(((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & ((1 << (painless_parser.EQ - 42)) | (1 << (painless_parser.EQR - 42)) | (1 << (painless_parser.NE - 42)) | (1 << (painless_parser.NER - 42)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 285; + this.noncondexpression(8); + } + break; + + case 7: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 286; + if (!(this.precpred(this._ctx, 6))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 6)"); + } + this.state = 287; + this.match(painless_parser.BWAND); + this.state = 288; + this.noncondexpression(7); + } + break; + + case 8: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 289; + if (!(this.precpred(this._ctx, 5))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 5)"); + } + this.state = 290; + this.match(painless_parser.XOR); + this.state = 291; + this.noncondexpression(6); + } + break; + + case 9: + { + _localctx = new BinaryContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 292; + if (!(this.precpred(this._ctx, 4))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 4)"); + } + this.state = 293; + this.match(painless_parser.BWOR); + this.state = 294; + this.noncondexpression(5); + } + break; + + case 10: + { + _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 295; + if (!(this.precpred(this._ctx, 3))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 3)"); + } + this.state = 296; + this.match(painless_parser.BOOLAND); + this.state = 297; + this.noncondexpression(4); + } + break; + + case 11: + { + _localctx = new BoolContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 298; + if (!(this.precpred(this._ctx, 2))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 2)"); + } + this.state = 299; + this.match(painless_parser.BOOLOR); + this.state = 300; + this.noncondexpression(3); + } + break; + + case 12: + { + _localctx = new ElvisContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 301; + if (!(this.precpred(this._ctx, 1))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); + } + this.state = 302; + this.match(painless_parser.ELVIS); + this.state = 303; + this.noncondexpression(1); + } + break; + + case 13: + { + _localctx = new InstanceofContext(new NoncondexpressionContext(_parentctx, _parentState)); + this.pushNewRecursionContext(_localctx, _startState, painless_parser.RULE_noncondexpression); + this.state = 304; + if (!(this.precpred(this._ctx, 8))) { + throw new FailedPredicateException(this, "this.precpred(this._ctx, 8)"); + } + this.state = 305; + this.match(painless_parser.INSTANCEOF); + this.state = 306; + this.decltype(); + } + break; + } + } + } + this.state = 311; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 25, this._ctx); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(_parentctx); + } + return _localctx; + } + // @RuleVersion(0) + public expression(): ExpressionContext { + let _localctx: ExpressionContext = new ExpressionContext(this._ctx, this.state); + this.enterRule(_localctx, 34, painless_parser.RULE_expression); + let _la: number; + try { + this.state = 323; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { + case 1: + _localctx = new NonconditionalContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 312; + this.noncondexpression(0); + } + break; + + case 2: + _localctx = new ConditionalContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 313; + this.noncondexpression(0); + this.state = 314; + this.match(painless_parser.COND); + this.state = 315; + this.expression(); + this.state = 316; + this.match(painless_parser.COLON); + this.state = 317; + this.expression(); + } + break; + + case 3: + _localctx = new AssignmentContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 319; + this.noncondexpression(0); + this.state = 320; + _la = this._input.LA(1); + if (!(((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & ((1 << (painless_parser.ASSIGN - 60)) | (1 << (painless_parser.AADD - 60)) | (1 << (painless_parser.ASUB - 60)) | (1 << (painless_parser.AMUL - 60)) | (1 << (painless_parser.ADIV - 60)) | (1 << (painless_parser.AREM - 60)) | (1 << (painless_parser.AAND - 60)) | (1 << (painless_parser.AXOR - 60)) | (1 << (painless_parser.AOR - 60)) | (1 << (painless_parser.ALSH - 60)) | (1 << (painless_parser.ARSH - 60)) | (1 << (painless_parser.AUSH - 60)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 321; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unary(): UnaryContext { + let _localctx: UnaryContext = new UnaryContext(this._ctx, this.state); + this.enterRule(_localctx, 36, painless_parser.RULE_unary); + let _la: number; + try { + this.state = 330; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.INCR: + case painless_parser.DECR: + _localctx = new PreContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 325; + _la = this._input.LA(1); + if (!(_la === painless_parser.INCR || _la === painless_parser.DECR)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 326; + this.chain(); + } + break; + case painless_parser.ADD: + case painless_parser.SUB: + _localctx = new AddsubContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 327; + _la = this._input.LA(1); + if (!(_la === painless_parser.ADD || _la === painless_parser.SUB)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 328; + this.unary(); + } + break; + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.NEW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.ID: + _localctx = new NotaddsubContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 329; + this.unarynotaddsub(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public unarynotaddsub(): UnarynotaddsubContext { + let _localctx: UnarynotaddsubContext = new UnarynotaddsubContext(this._ctx, this.state); + this.enterRule(_localctx, 38, painless_parser.RULE_unarynotaddsub); + let _la: number; + try { + this.state = 339; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 28, this._ctx) ) { + case 1: + _localctx = new ReadContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 332; + this.chain(); + } + break; + + case 2: + _localctx = new PostContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 333; + this.chain(); + this.state = 334; + _la = this._input.LA(1); + if (!(_la === painless_parser.INCR || _la === painless_parser.DECR)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + + case 3: + _localctx = new NotContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 336; + _la = this._input.LA(1); + if (!(_la === painless_parser.BOOLNOT || _la === painless_parser.BWNOT)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 337; + this.unary(); + } + break; + + case 4: + _localctx = new CastContext(_localctx); + this.enterOuterAlt(_localctx, 4); + { + this.state = 338; + this.castexpression(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public castexpression(): CastexpressionContext { + let _localctx: CastexpressionContext = new CastexpressionContext(this._ctx, this.state); + this.enterRule(_localctx, 40, painless_parser.RULE_castexpression); + try { + this.state = 351; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 29, this._ctx) ) { + case 1: + _localctx = new PrimordefcastContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 341; + this.match(painless_parser.LP); + this.state = 342; + this.primordefcasttype(); + this.state = 343; + this.match(painless_parser.RP); + this.state = 344; + this.unary(); + } + break; + + case 2: + _localctx = new RefcastContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 346; + this.match(painless_parser.LP); + this.state = 347; + this.refcasttype(); + this.state = 348; + this.match(painless_parser.RP); + this.state = 349; + this.unarynotaddsub(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public primordefcasttype(): PrimordefcasttypeContext { + let _localctx: PrimordefcasttypeContext = new PrimordefcasttypeContext(this._ctx, this.state); + this.enterRule(_localctx, 42, painless_parser.RULE_primordefcasttype); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 353; + _la = this._input.LA(1); + if (!(_la === painless_parser.PRIMITIVE || _la === painless_parser.DEF)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public refcasttype(): RefcasttypeContext { + let _localctx: RefcasttypeContext = new RefcasttypeContext(this._ctx, this.state); + this.enterRule(_localctx, 44, painless_parser.RULE_refcasttype); + let _la: number; + try { + this.state = 384; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.DEF: + this.enterOuterAlt(_localctx, 1); + { + this.state = 355; + this.match(painless_parser.DEF); + this.state = 358; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 356; + this.match(painless_parser.LBRACE); + this.state = 357; + this.match(painless_parser.RBRACE); + } + } + this.state = 360; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la === painless_parser.LBRACE); + } + break; + case painless_parser.PRIMITIVE: + this.enterOuterAlt(_localctx, 2); + { + this.state = 362; + this.match(painless_parser.PRIMITIVE); + this.state = 365; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 363; + this.match(painless_parser.LBRACE); + this.state = 364; + this.match(painless_parser.RBRACE); + } + } + this.state = 367; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la === painless_parser.LBRACE); + } + break; + case painless_parser.ID: + this.enterOuterAlt(_localctx, 3); + { + this.state = 369; + this.match(painless_parser.ID); + this.state = 374; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.DOT) { + { + { + this.state = 370; + this.match(painless_parser.DOT); + this.state = 371; + this.match(painless_parser.DOTID); + } + } + this.state = 376; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 381; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.LBRACE) { + { + { + this.state = 377; + this.match(painless_parser.LBRACE); + this.state = 378; + this.match(painless_parser.RBRACE); + } + } + this.state = 383; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public chain(): ChainContext { + let _localctx: ChainContext = new ChainContext(this._ctx, this.state); + this.enterRule(_localctx, 46, painless_parser.RULE_chain); + try { + let _alt: number; + this.state = 394; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) { + case 1: + _localctx = new DynamicContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 386; + this.primary(); + this.state = 390; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 387; + this.postfix(); + } + } + } + this.state = 392; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 35, this._ctx); + } + } + break; + + case 2: + _localctx = new NewarrayContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 393; + this.arrayinitializer(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public primary(): PrimaryContext { + let _localctx: PrimaryContext = new PrimaryContext(this._ctx, this.state); + this.enterRule(_localctx, 48, painless_parser.RULE_primary); + let _la: number; + try { + this.state = 415; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 37, this._ctx) ) { + case 1: + _localctx = new PrecedenceContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 396; + this.match(painless_parser.LP); + this.state = 397; + this.expression(); + this.state = 398; + this.match(painless_parser.RP); + } + break; + + case 2: + _localctx = new NumericContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 400; + _la = this._input.LA(1); + if (!(((((_la - 72)) & ~0x1F) === 0 && ((1 << (_la - 72)) & ((1 << (painless_parser.OCTAL - 72)) | (1 << (painless_parser.HEX - 72)) | (1 << (painless_parser.INTEGER - 72)) | (1 << (painless_parser.DECIMAL - 72)))) !== 0))) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + break; + + case 3: + _localctx = new TrueContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 401; + this.match(painless_parser.TRUE); + } + break; + + case 4: + _localctx = new FalseContext(_localctx); + this.enterOuterAlt(_localctx, 4); + { + this.state = 402; + this.match(painless_parser.FALSE); + } + break; + + case 5: + _localctx = new NullContext(_localctx); + this.enterOuterAlt(_localctx, 5); + { + this.state = 403; + this.match(painless_parser.NULL); + } + break; + + case 6: + _localctx = new StringContext(_localctx); + this.enterOuterAlt(_localctx, 6); + { + this.state = 404; + this.match(painless_parser.STRING); + } + break; + + case 7: + _localctx = new RegexContext(_localctx); + this.enterOuterAlt(_localctx, 7); + { + this.state = 405; + this.match(painless_parser.REGEX); + } + break; + + case 8: + _localctx = new ListinitContext(_localctx); + this.enterOuterAlt(_localctx, 8); + { + this.state = 406; + this.listinitializer(); + } + break; + + case 9: + _localctx = new MapinitContext(_localctx); + this.enterOuterAlt(_localctx, 9); + { + this.state = 407; + this.mapinitializer(); + } + break; + + case 10: + _localctx = new VariableContext(_localctx); + this.enterOuterAlt(_localctx, 10); + { + this.state = 408; + this.match(painless_parser.ID); + } + break; + + case 11: + _localctx = new CalllocalContext(_localctx); + this.enterOuterAlt(_localctx, 11); + { + this.state = 409; + this.match(painless_parser.ID); + this.state = 410; + this.arguments(); + } + break; + + case 12: + _localctx = new NewobjectContext(_localctx); + this.enterOuterAlt(_localctx, 12); + { + this.state = 411; + this.match(painless_parser.NEW); + this.state = 412; + this.type(); + this.state = 413; + this.arguments(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public postfix(): PostfixContext { + let _localctx: PostfixContext = new PostfixContext(this._ctx, this.state); + this.enterRule(_localctx, 50, painless_parser.RULE_postfix); + try { + this.state = 420; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 417; + this.callinvoke(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 418; + this.fieldaccess(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 419; + this.braceaccess(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public postdot(): PostdotContext { + let _localctx: PostdotContext = new PostdotContext(this._ctx, this.state); + this.enterRule(_localctx, 52, painless_parser.RULE_postdot); + try { + this.state = 424; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 39, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 422; + this.callinvoke(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 423; + this.fieldaccess(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public callinvoke(): CallinvokeContext { + let _localctx: CallinvokeContext = new CallinvokeContext(this._ctx, this.state); + this.enterRule(_localctx, 54, painless_parser.RULE_callinvoke); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 426; + _la = this._input.LA(1); + if (!(_la === painless_parser.DOT || _la === painless_parser.NSDOT)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 427; + this.match(painless_parser.DOTID); + this.state = 428; + this.arguments(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public fieldaccess(): FieldaccessContext { + let _localctx: FieldaccessContext = new FieldaccessContext(this._ctx, this.state); + this.enterRule(_localctx, 56, painless_parser.RULE_fieldaccess); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 430; + _la = this._input.LA(1); + if (!(_la === painless_parser.DOT || _la === painless_parser.NSDOT)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + this.state = 431; + _la = this._input.LA(1); + if (!(_la === painless_parser.DOTINTEGER || _la === painless_parser.DOTID)) { + this._errHandler.recoverInline(this); + } else { + if (this._input.LA(1) === Token.EOF) { + this.matchedEOF = true; + } + + this._errHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public braceaccess(): BraceaccessContext { + let _localctx: BraceaccessContext = new BraceaccessContext(this._ctx, this.state); + this.enterRule(_localctx, 58, painless_parser.RULE_braceaccess); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 433; + this.match(painless_parser.LBRACE); + this.state = 434; + this.expression(); + this.state = 435; + this.match(painless_parser.RBRACE); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public arrayinitializer(): ArrayinitializerContext { + let _localctx: ArrayinitializerContext = new ArrayinitializerContext(this._ctx, this.state); + this.enterRule(_localctx, 60, painless_parser.RULE_arrayinitializer); + let _la: number; + try { + let _alt: number; + this.state = 478; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { + case 1: + _localctx = new NewstandardarrayContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 437; + this.match(painless_parser.NEW); + this.state = 438; + this.type(); + this.state = 443; + this._errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + this.state = 439; + this.match(painless_parser.LBRACE); + this.state = 440; + this.expression(); + this.state = 441; + this.match(painless_parser.RBRACE); + } + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 445; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 40, this._ctx); + } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); + this.state = 454; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { + case 1: + { + this.state = 447; + this.postdot(); + this.state = 451; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 448; + this.postfix(); + } + } + } + this.state = 453; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); + } + } + break; + } + } + break; + + case 2: + _localctx = new NewinitializedarrayContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 456; + this.match(painless_parser.NEW); + this.state = 457; + this.type(); + this.state = 458; + this.match(painless_parser.LBRACE); + this.state = 459; + this.match(painless_parser.RBRACE); + this.state = 460; + this.match(painless_parser.LBRACK); + this.state = 469; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 461; + this.expression(); + this.state = 466; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 462; + this.match(painless_parser.COMMA); + this.state = 463; + this.expression(); + } + } + this.state = 468; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 471; + this.match(painless_parser.RBRACK); + this.state = 475; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); + while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + { + { + this.state = 472; + this.postfix(); + } + } + } + this.state = 477; + this._errHandler.sync(this); + _alt = this.interpreter.adaptivePredict(this._input, 45, this._ctx); + } + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public listinitializer(): ListinitializerContext { + let _localctx: ListinitializerContext = new ListinitializerContext(this._ctx, this.state); + this.enterRule(_localctx, 62, painless_parser.RULE_listinitializer); + let _la: number; + try { + this.state = 493; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 480; + this.match(painless_parser.LBRACE); + this.state = 481; + this.expression(); + this.state = 486; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 482; + this.match(painless_parser.COMMA); + this.state = 483; + this.expression(); + } + } + this.state = 488; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 489; + this.match(painless_parser.RBRACE); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 491; + this.match(painless_parser.LBRACE); + this.state = 492; + this.match(painless_parser.RBRACE); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public mapinitializer(): MapinitializerContext { + let _localctx: MapinitializerContext = new MapinitializerContext(this._ctx, this.state); + this.enterRule(_localctx, 64, painless_parser.RULE_mapinitializer); + let _la: number; + try { + this.state = 509; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 50, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 495; + this.match(painless_parser.LBRACE); + this.state = 496; + this.maptoken(); + this.state = 501; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 497; + this.match(painless_parser.COMMA); + this.state = 498; + this.maptoken(); + } + } + this.state = 503; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + this.state = 504; + this.match(painless_parser.RBRACE); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 506; + this.match(painless_parser.LBRACE); + this.state = 507; + this.match(painless_parser.COLON); + this.state = 508; + this.match(painless_parser.RBRACE); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public maptoken(): MaptokenContext { + let _localctx: MaptokenContext = new MaptokenContext(this._ctx, this.state); + this.enterRule(_localctx, 66, painless_parser.RULE_maptoken); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 511; + this.expression(); + this.state = 512; + this.match(painless_parser.COLON); + this.state = 513; + this.expression(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public arguments(): ArgumentsContext { + let _localctx: ArgumentsContext = new ArgumentsContext(this._ctx, this.state); + this.enterRule(_localctx, 68, painless_parser.RULE_arguments); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + { + this.state = 515; + this.match(painless_parser.LP); + this.state = 524; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 5)) & ~0x1F) === 0 && ((1 << (_la - 5)) & ((1 << (painless_parser.LBRACE - 5)) | (1 << (painless_parser.LP - 5)) | (1 << (painless_parser.NEW - 5)) | (1 << (painless_parser.THIS - 5)) | (1 << (painless_parser.BOOLNOT - 5)) | (1 << (painless_parser.BWNOT - 5)) | (1 << (painless_parser.ADD - 5)) | (1 << (painless_parser.SUB - 5)))) !== 0) || ((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & ((1 << (painless_parser.INCR - 58)) | (1 << (painless_parser.DECR - 58)) | (1 << (painless_parser.OCTAL - 58)) | (1 << (painless_parser.HEX - 58)) | (1 << (painless_parser.INTEGER - 58)) | (1 << (painless_parser.DECIMAL - 58)) | (1 << (painless_parser.STRING - 58)) | (1 << (painless_parser.REGEX - 58)) | (1 << (painless_parser.TRUE - 58)) | (1 << (painless_parser.FALSE - 58)) | (1 << (painless_parser.NULL - 58)) | (1 << (painless_parser.PRIMITIVE - 58)) | (1 << (painless_parser.DEF - 58)) | (1 << (painless_parser.ID - 58)))) !== 0)) { + { + this.state = 516; + this.argument(); + this.state = 521; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 517; + this.match(painless_parser.COMMA); + this.state = 518; + this.argument(); + } + } + this.state = 523; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 526; + this.match(painless_parser.RP); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public argument(): ArgumentContext { + let _localctx: ArgumentContext = new ArgumentContext(this._ctx, this.state); + this.enterRule(_localctx, 70, painless_parser.RULE_argument); + try { + this.state = 531; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 53, this._ctx) ) { + case 1: + this.enterOuterAlt(_localctx, 1); + { + this.state = 528; + this.expression(); + } + break; + + case 2: + this.enterOuterAlt(_localctx, 2); + { + this.state = 529; + this.lambda(); + } + break; + + case 3: + this.enterOuterAlt(_localctx, 3); + { + this.state = 530; + this.funcref(); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public lambda(): LambdaContext { + let _localctx: LambdaContext = new LambdaContext(this._ctx, this.state); + this.enterRule(_localctx, 72, painless_parser.RULE_lambda); + let _la: number; + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 546; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.PRIMITIVE: + case painless_parser.DEF: + case painless_parser.ID: + { + this.state = 533; + this.lamtype(); + } + break; + case painless_parser.LP: + { + this.state = 534; + this.match(painless_parser.LP); + this.state = 543; + this._errHandler.sync(this); + _la = this._input.LA(1); + if (((((_la - 81)) & ~0x1F) === 0 && ((1 << (_la - 81)) & ((1 << (painless_parser.PRIMITIVE - 81)) | (1 << (painless_parser.DEF - 81)) | (1 << (painless_parser.ID - 81)))) !== 0)) { + { + this.state = 535; + this.lamtype(); + this.state = 540; + this._errHandler.sync(this); + _la = this._input.LA(1); + while (_la === painless_parser.COMMA) { + { + { + this.state = 536; + this.match(painless_parser.COMMA); + this.state = 537; + this.lamtype(); + } + } + this.state = 542; + this._errHandler.sync(this); + _la = this._input.LA(1); + } + } + } + + this.state = 545; + this.match(painless_parser.RP); + } + break; + default: + throw new NoViableAltException(this); + } + this.state = 548; + this.match(painless_parser.ARROW); + this.state = 551; + this._errHandler.sync(this); + switch (this._input.LA(1)) { + case painless_parser.LBRACK: + { + this.state = 549; + this.block(); + } + break; + case painless_parser.LBRACE: + case painless_parser.LP: + case painless_parser.NEW: + case painless_parser.BOOLNOT: + case painless_parser.BWNOT: + case painless_parser.ADD: + case painless_parser.SUB: + case painless_parser.INCR: + case painless_parser.DECR: + case painless_parser.OCTAL: + case painless_parser.HEX: + case painless_parser.INTEGER: + case painless_parser.DECIMAL: + case painless_parser.STRING: + case painless_parser.REGEX: + case painless_parser.TRUE: + case painless_parser.FALSE: + case painless_parser.NULL: + case painless_parser.ID: + { + this.state = 550; + this.expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public lamtype(): LamtypeContext { + let _localctx: LamtypeContext = new LamtypeContext(this._ctx, this.state); + this.enterRule(_localctx, 74, painless_parser.RULE_lamtype); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 554; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 58, this._ctx) ) { + case 1: + { + this.state = 553; + this.decltype(); + } + break; + } + this.state = 556; + this.match(painless_parser.ID); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public funcref(): FuncrefContext { + let _localctx: FuncrefContext = new FuncrefContext(this._ctx, this.state); + this.enterRule(_localctx, 76, painless_parser.RULE_funcref); + try { + this.state = 569; + this._errHandler.sync(this); + switch ( this.interpreter.adaptivePredict(this._input, 59, this._ctx) ) { + case 1: + _localctx = new ClassfuncrefContext(_localctx); + this.enterOuterAlt(_localctx, 1); + { + this.state = 558; + this.decltype(); + this.state = 559; + this.match(painless_parser.REF); + this.state = 560; + this.match(painless_parser.ID); + } + break; + + case 2: + _localctx = new ConstructorfuncrefContext(_localctx); + this.enterOuterAlt(_localctx, 2); + { + this.state = 562; + this.decltype(); + this.state = 563; + this.match(painless_parser.REF); + this.state = 564; + this.match(painless_parser.NEW); + } + break; + + case 3: + _localctx = new LocalfuncrefContext(_localctx); + this.enterOuterAlt(_localctx, 3); + { + this.state = 566; + this.match(painless_parser.THIS); + this.state = 567; + this.match(painless_parser.REF); + this.state = 568; + this.match(painless_parser.ID); + } + break; + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + + public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 4: + return this.rstatement_sempred(_localctx as RstatementContext, predIndex); + + case 16: + return this.noncondexpression_sempred(_localctx as NoncondexpressionContext, predIndex); + } + return true; + } + private rstatement_sempred(_localctx: RstatementContext, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this._input.LA(1) != painless_parser.ELSE ; + } + return true; + } + private noncondexpression_sempred(_localctx: NoncondexpressionContext, predIndex: number): boolean { + switch (predIndex) { + case 1: + return this.precpred(this._ctx, 13); + + case 2: + return this.precpred(this._ctx, 12); + + case 3: + return this.precpred(this._ctx, 11); + + case 4: + return this.precpred(this._ctx, 10); + + case 5: + return this.precpred(this._ctx, 9); + + case 6: + return this.precpred(this._ctx, 7); + + case 7: + return this.precpred(this._ctx, 6); + + case 8: + return this.precpred(this._ctx, 5); + + case 9: + return this.precpred(this._ctx, 4); + + case 10: + return this.precpred(this._ctx, 3); + + case 11: + return this.precpred(this._ctx, 2); + + case 12: + return this.precpred(this._ctx, 1); + + case 13: + return this.precpred(this._ctx, 8); + } + return true; + } + + private static readonly _serializedATNSegments: number = 2; + private static readonly _serializedATNSegment0: string = + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03W\u023E\x04\x02" + + "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + + "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + + "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + + "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + + "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + + "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + + "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x03\x02\x07\x02R\n\x02\f" + + "\x02\x0E\x02U\v\x02\x03\x02\x07\x02X\n\x02\f\x02\x0E\x02[\v\x02\x03\x02" + + "\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04" + + "\x03\x04\x03\x04\x03\x04\x03\x04\x07\x04k\n\x04\f\x04\x0E\x04n\v\x04\x05" + + "\x04p\n\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05x\n" + + "\x05\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x05" + + "\x06\x82\n\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x05\x06" + + "\x8A\n\x06\x03\x06\x03\x06\x03\x06\x05\x06\x8F\n\x06\x03\x06\x03\x06\x05" + + "\x06\x93\n\x06\x03\x06\x03\x06\x05\x06\x97\n\x06\x03\x06\x03\x06\x03\x06" + + "\x05\x06\x9C\n\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" + + "\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03" + + "\x06\x03\x06\x03\x06\x03\x06\x03\x06\x06\x06\xB2\n\x06\r\x06\x0E\x06\xB3" + + "\x05\x06\xB6\n\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + + "\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07\xC4\n\x07\x03\x07" + + "\x03\x07\x03\x07\x05\x07\xC9\n\x07\x03\b\x03\b\x05\b\xCD\n\b\x03\t\x03" + + "\t\x07\t\xD1\n\t\f\t\x0E\t\xD4\v\t\x03\t\x05\t\xD7\n\t\x03\t\x03\t\x03" + + "\n\x03\n\x03\v\x03\v\x05\v\xDF\n\v\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r" + + "\x07\r\xE7\n\r\f\r\x0E\r\xEA\v\r\x03\x0E\x03\x0E\x03\x0E\x07\x0E\xEF\n" + + "\x0E\f\x0E\x0E\x0E\xF2\v\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x07" + + "\x0F\xF9\n\x0F\f\x0F\x0E\x0F\xFC\v\x0F\x05\x0F\xFE\n\x0F\x03\x10\x03\x10" + + "\x03\x10\x05\x10\u0103\n\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" + + "\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + + "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + + "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + + "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03" + + "\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x07\x12\u0136" + + "\n\x12\f\x12\x0E\x12\u0139\v\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + + "\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u0146\n\x13\x03" + + "\x14\x03\x14\x03\x14\x03\x14\x03\x14\x05\x14\u014D\n\x14\x03\x15\x03\x15" + + "\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u0156\n\x15\x03\x16\x03" + + "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05" + + "\x16\u0162\n\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x06\x18\u0169" + + "\n\x18\r\x18\x0E\x18\u016A\x03\x18\x03\x18\x03\x18\x06\x18\u0170\n\x18" + + "\r\x18\x0E\x18\u0171\x03\x18\x03\x18\x03\x18\x07\x18\u0177\n\x18\f\x18" + + "\x0E\x18\u017A\v\x18\x03\x18\x03\x18\x07\x18\u017E\n\x18\f\x18\x0E\x18" + + "\u0181\v\x18\x05\x18\u0183\n\x18\x03\x19\x03\x19\x07\x19\u0187\n\x19\f" + + "\x19\x0E\x19\u018A\v\x19\x03\x19\x05\x19\u018D\n\x19\x03\x1A\x03\x1A\x03" + + "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03" + + "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x05\x1A\u01A2" + + "\n\x1A\x03\x1B\x03\x1B\x03\x1B\x05\x1B\u01A7\n\x1B\x03\x1C\x03\x1C\x05" + + "\x1C\u01AB\n\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E" + + "\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x06 \u01BE" + + "\n \r \x0E \u01BF\x03 \x03 \x07 \u01C4\n \f \x0E \u01C7\v \x05 \u01C9" + + "\n \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x07 \u01D3\n \f \x0E \u01D6" + + "\v \x05 \u01D8\n \x03 \x03 \x07 \u01DC\n \f \x0E \u01DF\v \x05 \u01E1" + + "\n \x03!\x03!\x03!\x03!\x07!\u01E7\n!\f!\x0E!\u01EA\v!\x03!\x03!\x03!" + + "\x03!\x05!\u01F0\n!\x03\"\x03\"\x03\"\x03\"\x07\"\u01F6\n\"\f\"\x0E\"" + + "\u01F9\v\"\x03\"\x03\"\x03\"\x03\"\x03\"\x05\"\u0200\n\"\x03#\x03#\x03" + + "#\x03#\x03$\x03$\x03$\x03$\x07$\u020A\n$\f$\x0E$\u020D\v$\x05$\u020F\n" + + "$\x03$\x03$\x03%\x03%\x03%\x05%\u0216\n%\x03&\x03&\x03&\x03&\x03&\x07" + + "&\u021D\n&\f&\x0E&\u0220\v&\x05&\u0222\n&\x03&\x05&\u0225\n&\x03&\x03" + + "&\x03&\x05&\u022A\n&\x03\'\x05\'\u022D\n\'\x03\'\x03\'\x03(\x03(\x03(" + + "\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x03(\x05(\u023C\n(\x03(\x02\x02\x03" + + "\")\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02" + + "\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02" + + "(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02B\x02" + + "D\x02F\x02H\x02J\x02L\x02N\x02\x02\x10\x03\x03\x0E\x0E\x03\x02 \"\x03" + + "\x02#$\x03\x02:;\x03\x02%\'\x03\x02(+\x03\x02,/\x03\x02>I\x03\x02<=\x03" + + "\x02\x1E\x1F\x03\x02ST\x03\x02JM\x03\x02\v\f\x03\x02VW\x02\u0279\x02S" + + "\x03\x02\x02\x02\x04^\x03\x02\x02\x02\x06c\x03\x02\x02\x02\bw\x03\x02" + + "\x02\x02\n\xB5\x03\x02\x02\x02\f\xC8\x03\x02\x02\x02\x0E\xCC\x03\x02\x02" + + "\x02\x10\xCE\x03\x02\x02\x02\x12\xDA\x03\x02\x02\x02\x14\xDE\x03\x02\x02" + + "\x02\x16\xE0\x03\x02\x02\x02\x18\xE2\x03\x02\x02\x02\x1A\xEB\x03\x02\x02" + + "\x02\x1C\xFD\x03\x02\x02\x02\x1E\xFF\x03\x02\x02\x02 \u0104\x03\x02\x02" + + "\x02\"\u010B\x03\x02\x02\x02$\u0145\x03\x02\x02\x02&\u014C\x03\x02\x02" + + "\x02(\u0155\x03\x02\x02\x02*\u0161\x03\x02\x02\x02,\u0163\x03\x02\x02" + + "\x02.\u0182\x03\x02\x02\x020\u018C\x03\x02\x02\x022\u01A1\x03\x02\x02" + + "\x024\u01A6\x03\x02\x02\x026\u01AA\x03\x02\x02\x028\u01AC\x03\x02\x02" + + "\x02:\u01B0\x03\x02\x02\x02<\u01B3\x03\x02\x02\x02>\u01E0\x03\x02\x02" + + "\x02@\u01EF\x03\x02\x02\x02B\u01FF\x03\x02\x02\x02D\u0201\x03\x02\x02" + + "\x02F\u0205\x03\x02\x02\x02H\u0215\x03\x02\x02\x02J\u0224\x03\x02\x02" + + "\x02L\u022C\x03\x02\x02\x02N\u023B\x03\x02\x02\x02PR\x05\x04\x03\x02Q" + + "P\x03\x02\x02\x02RU\x03\x02\x02\x02SQ\x03\x02\x02\x02ST\x03\x02\x02\x02" + + "TY\x03\x02\x02\x02US\x03\x02\x02\x02VX\x05\b\x05\x02WV\x03\x02\x02\x02" + + "X[\x03\x02\x02\x02YW\x03\x02\x02\x02YZ\x03\x02\x02\x02Z\\\x03\x02\x02" + + "\x02[Y\x03\x02\x02\x02\\]\x07\x02\x02\x03]\x03\x03\x02\x02\x02^_\x05\x1A" + + "\x0E\x02_`\x07U\x02\x02`a\x05\x06\x04\x02ab\x05\x10\t\x02b\x05\x03\x02" + + "\x02\x02co\x07\t\x02\x02de\x05\x1A\x0E\x02el\x07U\x02\x02fg\x07\r\x02" + + "\x02gh\x05\x1A\x0E\x02hi\x07U\x02\x02ik\x03\x02\x02\x02jf\x03\x02\x02" + + "\x02kn\x03\x02\x02\x02lj\x03\x02\x02\x02lm\x03\x02\x02\x02mp\x03\x02\x02" + + "\x02nl\x03\x02\x02\x02od\x03\x02\x02\x02op\x03\x02\x02\x02pq\x03\x02\x02" + + "\x02qr\x07\n\x02\x02r\x07\x03\x02\x02\x02sx\x05\n\x06\x02tu\x05\f\x07" + + "\x02uv\t\x02\x02\x02vx\x03\x02\x02\x02ws\x03\x02\x02\x02wt\x03\x02\x02" + + "\x02x\t\x03\x02\x02\x02yz\x07\x0F\x02\x02z{\x07\t\x02\x02{|\x05$\x13\x02" + + "|}\x07\n\x02\x02}\x81\x05\x0E\b\x02~\x7F\x07\x11\x02\x02\x7F\x82\x05\x0E" + + "\b\x02\x80\x82\x06\x06\x02\x02\x81~\x03\x02\x02\x02\x81\x80\x03\x02\x02" + + "\x02\x82\xB6\x03\x02\x02\x02\x83\x84\x07\x12\x02\x02\x84\x85\x07\t\x02" + + "\x02\x85\x86\x05$\x13\x02\x86\x89\x07\n\x02\x02\x87\x8A\x05\x0E\b\x02" + + "\x88\x8A\x05\x12\n\x02\x89\x87\x03\x02\x02\x02\x89\x88\x03\x02\x02\x02" + + "\x8A\xB6\x03\x02\x02\x02\x8B\x8C\x07\x14\x02\x02\x8C\x8E\x07\t\x02\x02" + + "\x8D\x8F\x05\x14\v\x02\x8E\x8D\x03\x02\x02\x02\x8E\x8F\x03\x02\x02\x02" + + "\x8F\x90\x03\x02\x02\x02\x90\x92\x07\x0E\x02\x02\x91\x93\x05$\x13\x02" + + "\x92\x91\x03\x02\x02\x02\x92\x93\x03\x02\x02\x02\x93\x94\x03\x02\x02\x02" + + "\x94\x96\x07\x0E\x02\x02\x95\x97\x05\x16\f\x02\x96\x95\x03\x02\x02\x02" + + "\x96\x97\x03\x02\x02\x02\x97\x98\x03\x02\x02\x02\x98\x9B\x07\n\x02\x02" + + "\x99\x9C\x05\x0E\b\x02\x9A\x9C\x05\x12\n\x02\x9B\x99\x03\x02\x02\x02\x9B" + + "\x9A\x03\x02\x02\x02\x9C\xB6\x03\x02\x02\x02\x9D\x9E\x07\x14\x02\x02\x9E" + + "\x9F\x07\t\x02\x02\x9F\xA0\x05\x1A\x0E\x02\xA0\xA1\x07U\x02\x02\xA1\xA2" + + "\x076\x02\x02\xA2\xA3\x05$\x13\x02\xA3\xA4\x07\n\x02\x02\xA4\xA5\x05\x0E" + + "\b\x02\xA5\xB6\x03\x02\x02\x02\xA6\xA7\x07\x14\x02\x02\xA7\xA8\x07\t\x02" + + "\x02\xA8\xA9\x07U\x02\x02\xA9\xAA\x07\x10\x02\x02\xAA\xAB\x05$\x13\x02" + + "\xAB\xAC\x07\n\x02\x02\xAC\xAD\x05\x0E\b\x02\xAD\xB6\x03\x02\x02\x02\xAE" + + "\xAF\x07\x19\x02\x02\xAF\xB1\x05\x10\t\x02\xB0\xB2\x05 \x11\x02\xB1\xB0" + + "\x03\x02\x02\x02\xB2\xB3\x03\x02\x02\x02\xB3\xB1\x03\x02\x02\x02\xB3\xB4" + + "\x03\x02\x02\x02\xB4\xB6\x03\x02\x02\x02\xB5y\x03\x02\x02\x02\xB5\x83" + + "\x03\x02\x02\x02\xB5\x8B\x03\x02\x02\x02\xB5\x9D\x03\x02\x02\x02\xB5\xA6" + + "\x03\x02\x02\x02\xB5\xAE\x03\x02\x02\x02\xB6\v\x03\x02\x02\x02\xB7\xB8" + + "\x07\x13\x02\x02\xB8\xB9\x05\x10\t\x02\xB9\xBA\x07\x12\x02\x02\xBA\xBB" + + "\x07\t\x02\x02\xBB\xBC\x05$\x13\x02\xBC\xBD\x07\n\x02\x02\xBD\xC9\x03" + + "\x02\x02\x02\xBE\xC9\x05\x18\r\x02\xBF\xC9\x07\x15\x02\x02\xC0\xC9\x07" + + "\x16\x02\x02\xC1\xC3\x07\x17\x02\x02\xC2\xC4\x05$\x13\x02\xC3\xC2\x03" + + "\x02\x02\x02\xC3\xC4\x03\x02\x02\x02\xC4\xC9\x03\x02\x02\x02\xC5\xC6\x07" + + "\x1B\x02\x02\xC6\xC9\x05$\x13\x02\xC7\xC9\x05$\x13\x02\xC8\xB7\x03\x02" + + "\x02\x02\xC8\xBE\x03\x02\x02\x02\xC8\xBF\x03\x02\x02\x02\xC8\xC0\x03\x02" + + "\x02\x02\xC8\xC1\x03\x02\x02\x02\xC8\xC5\x03\x02\x02\x02\xC8\xC7\x03\x02" + + "\x02\x02\xC9\r\x03\x02\x02\x02\xCA\xCD\x05\x10\t\x02\xCB\xCD\x05\b\x05" + + "\x02\xCC\xCA\x03\x02\x02\x02\xCC\xCB\x03\x02\x02\x02\xCD\x0F\x03\x02\x02" + + "\x02\xCE\xD2\x07\x05\x02\x02\xCF\xD1\x05\b\x05\x02\xD0\xCF\x03\x02\x02" + + "\x02\xD1\xD4\x03\x02\x02\x02\xD2\xD0\x03\x02\x02\x02\xD2\xD3\x03\x02\x02" + + "\x02\xD3\xD6\x03\x02\x02\x02\xD4\xD2\x03\x02\x02\x02\xD5\xD7\x05\f\x07" + + "\x02\xD6\xD5\x03\x02\x02\x02\xD6\xD7\x03\x02\x02\x02\xD7\xD8\x03\x02\x02" + + "\x02\xD8\xD9\x07\x06\x02\x02\xD9\x11\x03\x02\x02\x02\xDA\xDB\x07\x0E\x02" + + "\x02\xDB\x13\x03\x02\x02\x02\xDC\xDF\x05\x18\r\x02\xDD\xDF\x05$\x13\x02" + + "\xDE\xDC\x03\x02\x02\x02\xDE\xDD\x03\x02\x02\x02\xDF\x15\x03\x02\x02\x02" + + "\xE0\xE1\x05$\x13\x02\xE1\x17\x03\x02\x02\x02\xE2\xE3\x05\x1A\x0E\x02" + + "\xE3\xE8\x05\x1E\x10\x02\xE4\xE5\x07\r\x02\x02\xE5\xE7\x05\x1E\x10\x02" + + "\xE6\xE4\x03\x02\x02\x02\xE7\xEA\x03\x02\x02\x02\xE8\xE6\x03\x02\x02\x02" + + "\xE8\xE9\x03\x02\x02\x02\xE9\x19\x03\x02\x02\x02\xEA\xE8\x03\x02\x02\x02" + + "\xEB\xF0\x05\x1C\x0F\x02\xEC\xED\x07\x07\x02\x02\xED\xEF\x07\b\x02\x02" + + "\xEE\xEC\x03\x02\x02\x02\xEF\xF2\x03\x02\x02\x02\xF0\xEE\x03\x02\x02\x02" + + "\xF0\xF1\x03\x02\x02\x02\xF1\x1B\x03\x02\x02\x02\xF2\xF0\x03\x02\x02\x02" + + "\xF3\xFE\x07T\x02\x02\xF4\xFE\x07S\x02\x02\xF5\xFA\x07U\x02\x02\xF6\xF7" + + "\x07\v\x02\x02\xF7\xF9\x07W\x02\x02\xF8\xF6\x03\x02\x02\x02\xF9\xFC\x03" + + "\x02\x02\x02\xFA\xF8\x03\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\xFE\x03" + + "\x02\x02\x02\xFC\xFA\x03\x02\x02\x02\xFD\xF3\x03\x02\x02\x02\xFD\xF4\x03" + + "\x02\x02\x02\xFD\xF5\x03\x02\x02\x02\xFE\x1D\x03\x02\x02\x02\xFF\u0102" + + "\x07U\x02\x02\u0100\u0101\x07>\x02\x02\u0101\u0103\x05$\x13\x02\u0102" + + "\u0100\x03\x02\x02\x02\u0102\u0103\x03\x02\x02\x02\u0103\x1F\x03\x02\x02" + + "\x02\u0104\u0105\x07\x1A\x02\x02\u0105\u0106\x07\t\x02\x02\u0106\u0107" + + "\x05\x1C\x0F\x02\u0107\u0108\x07U\x02\x02\u0108\u0109\x07\n\x02\x02\u0109" + + "\u010A\x05\x10\t\x02\u010A!\x03\x02\x02\x02\u010B\u010C\b\x12\x01\x02" + + "\u010C\u010D\x05&\x14\x02\u010D\u0137\x03\x02\x02\x02\u010E\u010F\f\x0F" + + "\x02\x02\u010F\u0110\t\x03\x02\x02\u0110\u0136\x05\"\x12\x10\u0111\u0112" + + "\f\x0E\x02\x02\u0112\u0113\t\x04\x02\x02\u0113\u0136\x05\"\x12\x0F\u0114" + + "\u0115\f\r\x02\x02\u0115\u0116\t\x05\x02\x02\u0116\u0136\x05\"\x12\x0E" + + "\u0117\u0118\f\f\x02\x02\u0118\u0119\t\x06\x02\x02\u0119\u0136\x05\"\x12" + + "\r\u011A\u011B\f\v\x02\x02\u011B\u011C\t\x07\x02\x02\u011C\u0136\x05\"" + + "\x12\f\u011D\u011E\f\t\x02\x02\u011E\u011F\t\b\x02\x02\u011F\u0136\x05" + + "\"\x12\n\u0120\u0121\f\b\x02\x02\u0121\u0122\x070\x02\x02\u0122\u0136" + + "\x05\"\x12\t\u0123\u0124\f\x07\x02\x02\u0124\u0125\x071\x02\x02\u0125" + + "\u0136\x05\"\x12\b\u0126\u0127\f\x06\x02\x02\u0127\u0128\x072\x02\x02" + + "\u0128\u0136\x05\"\x12\x07\u0129\u012A\f\x05\x02\x02\u012A\u012B\x073" + + "\x02\x02\u012B\u0136\x05\"\x12\x06\u012C\u012D\f\x04\x02\x02\u012D\u012E" + + "\x074\x02\x02\u012E\u0136\x05\"\x12\x05\u012F\u0130\f\x03\x02\x02\u0130" + + "\u0131\x077\x02\x02\u0131\u0136\x05\"\x12\x03\u0132\u0133\f\n\x02\x02" + + "\u0133\u0134\x07\x1D\x02\x02\u0134\u0136\x05\x1A\x0E\x02\u0135\u010E\x03" + + "\x02\x02\x02\u0135\u0111\x03\x02\x02\x02\u0135\u0114\x03\x02\x02\x02\u0135" + + "\u0117\x03\x02\x02\x02\u0135\u011A\x03\x02\x02\x02\u0135\u011D\x03\x02" + + "\x02\x02\u0135\u0120\x03\x02\x02\x02\u0135\u0123\x03\x02\x02\x02\u0135" + + "\u0126\x03\x02\x02\x02\u0135\u0129\x03\x02\x02\x02\u0135\u012C\x03\x02" + + "\x02\x02\u0135\u012F\x03\x02\x02\x02\u0135\u0132\x03\x02\x02\x02\u0136" + + "\u0139\x03\x02\x02\x02\u0137\u0135\x03\x02\x02\x02\u0137\u0138\x03\x02" + + "\x02\x02\u0138#\x03\x02\x02\x02\u0139\u0137\x03\x02\x02\x02\u013A\u0146" + + "\x05\"\x12\x02\u013B\u013C\x05\"\x12\x02\u013C\u013D\x075\x02\x02\u013D" + + "\u013E\x05$\x13\x02\u013E\u013F\x076\x02\x02\u013F\u0140\x05$\x13\x02" + + "\u0140\u0146\x03\x02\x02\x02\u0141\u0142\x05\"\x12\x02\u0142\u0143\t\t" + + "\x02\x02\u0143\u0144\x05$\x13\x02\u0144\u0146\x03\x02\x02\x02\u0145\u013A" + + "\x03\x02\x02\x02\u0145\u013B\x03\x02\x02\x02\u0145\u0141\x03\x02\x02\x02" + + "\u0146%\x03\x02\x02\x02\u0147\u0148\t\n\x02\x02\u0148\u014D\x050\x19\x02" + + "\u0149\u014A\t\x04\x02\x02\u014A\u014D\x05&\x14\x02\u014B\u014D\x05(\x15" + + "\x02\u014C\u0147\x03\x02\x02\x02\u014C\u0149\x03\x02\x02\x02\u014C\u014B" + + "\x03\x02\x02\x02\u014D\'\x03\x02\x02\x02\u014E\u0156\x050\x19\x02\u014F" + + "\u0150\x050\x19\x02\u0150\u0151\t\n\x02\x02\u0151\u0156\x03\x02\x02\x02" + + "\u0152\u0153\t\v\x02\x02\u0153\u0156\x05&\x14\x02\u0154\u0156\x05*\x16" + + "\x02\u0155\u014E\x03\x02\x02\x02\u0155\u014F\x03\x02\x02\x02\u0155\u0152" + + "\x03\x02\x02\x02\u0155\u0154\x03\x02\x02\x02\u0156)\x03\x02\x02\x02\u0157" + + "\u0158\x07\t\x02\x02\u0158\u0159\x05,\x17\x02\u0159\u015A\x07\n\x02\x02" + + "\u015A\u015B\x05&\x14\x02\u015B\u0162\x03\x02\x02\x02\u015C\u015D\x07" + + "\t\x02\x02\u015D\u015E\x05.\x18\x02\u015E\u015F\x07\n\x02\x02\u015F\u0160" + + "\x05(\x15\x02\u0160\u0162\x03\x02\x02\x02\u0161\u0157\x03\x02\x02\x02" + + "\u0161\u015C\x03\x02\x02\x02\u0162+\x03\x02\x02\x02\u0163\u0164\t\f\x02" + + "\x02\u0164-\x03\x02\x02\x02\u0165\u0168\x07T\x02\x02\u0166\u0167\x07\x07" + + "\x02\x02\u0167\u0169\x07\b\x02\x02\u0168\u0166\x03\x02\x02\x02\u0169\u016A" + + "\x03\x02\x02\x02\u016A\u0168\x03\x02\x02\x02\u016A\u016B\x03\x02\x02\x02" + + "\u016B\u0183\x03\x02\x02\x02\u016C\u016F\x07S\x02\x02\u016D\u016E\x07" + + "\x07\x02\x02\u016E\u0170\x07\b\x02\x02\u016F\u016D\x03\x02\x02\x02\u0170" + + "\u0171\x03\x02\x02\x02\u0171\u016F\x03\x02\x02\x02\u0171\u0172\x03\x02" + + "\x02\x02\u0172\u0183\x03\x02\x02\x02\u0173\u0178\x07U\x02\x02\u0174\u0175" + + "\x07\v\x02\x02\u0175\u0177\x07W\x02\x02\u0176\u0174\x03\x02\x02\x02\u0177" + + "\u017A\x03\x02\x02\x02\u0178\u0176\x03\x02\x02\x02\u0178\u0179\x03\x02" + + "\x02\x02\u0179\u017F\x03\x02\x02\x02\u017A\u0178\x03\x02\x02\x02\u017B" + + "\u017C\x07\x07\x02\x02\u017C\u017E\x07\b\x02\x02\u017D\u017B\x03\x02\x02" + + "\x02\u017E\u0181\x03\x02\x02\x02\u017F\u017D\x03\x02\x02\x02\u017F\u0180" + + "\x03\x02\x02\x02\u0180\u0183\x03\x02\x02\x02\u0181\u017F\x03\x02\x02\x02" + + "\u0182\u0165\x03\x02\x02\x02\u0182\u016C\x03\x02\x02\x02\u0182\u0173\x03" + + "\x02\x02\x02\u0183/\x03\x02\x02\x02\u0184\u0188\x052\x1A\x02\u0185\u0187" + + "\x054\x1B\x02\u0186\u0185\x03\x02\x02\x02\u0187\u018A\x03\x02\x02\x02" + + "\u0188\u0186\x03\x02\x02\x02\u0188\u0189\x03\x02\x02\x02\u0189\u018D\x03" + + "\x02\x02\x02\u018A\u0188\x03\x02\x02\x02\u018B\u018D\x05> \x02\u018C\u0184" + + "\x03\x02\x02\x02\u018C\u018B\x03\x02\x02\x02\u018D1\x03\x02\x02\x02\u018E" + + "\u018F\x07\t\x02\x02\u018F\u0190\x05$\x13\x02\u0190\u0191\x07\n\x02\x02" + + "\u0191\u01A2\x03\x02\x02\x02\u0192\u01A2\t\r\x02\x02\u0193\u01A2\x07P" + + "\x02\x02\u0194\u01A2\x07Q\x02\x02\u0195\u01A2\x07R\x02\x02\u0196\u01A2" + + "\x07N\x02\x02\u0197\u01A2\x07O\x02\x02\u0198\u01A2\x05@!\x02\u0199\u01A2" + + "\x05B\"\x02\u019A\u01A2\x07U\x02\x02\u019B\u019C\x07U\x02\x02\u019C\u01A2" + + "\x05F$\x02\u019D\u019E\x07\x18\x02\x02\u019E\u019F\x05\x1C\x0F\x02\u019F" + + "\u01A0\x05F$\x02\u01A0\u01A2\x03\x02\x02\x02\u01A1\u018E\x03\x02\x02\x02" + + "\u01A1\u0192\x03\x02\x02\x02\u01A1\u0193\x03\x02\x02\x02\u01A1\u0194\x03" + + "\x02\x02\x02\u01A1\u0195\x03\x02\x02\x02\u01A1\u0196\x03\x02\x02\x02\u01A1" + + "\u0197\x03\x02\x02\x02\u01A1\u0198\x03\x02\x02\x02\u01A1\u0199\x03\x02" + + "\x02\x02\u01A1\u019A\x03\x02\x02\x02\u01A1\u019B\x03\x02\x02\x02\u01A1" + + "\u019D\x03\x02\x02\x02\u01A23\x03\x02\x02\x02\u01A3\u01A7\x058\x1D\x02" + + "\u01A4\u01A7\x05:\x1E\x02\u01A5\u01A7\x05<\x1F\x02\u01A6\u01A3\x03\x02" + + "\x02\x02\u01A6\u01A4\x03\x02\x02\x02\u01A6\u01A5\x03\x02\x02\x02\u01A7" + + "5\x03\x02\x02\x02\u01A8\u01AB\x058\x1D\x02\u01A9\u01AB\x05:\x1E\x02\u01AA" + + "\u01A8\x03\x02\x02\x02\u01AA\u01A9\x03\x02\x02\x02\u01AB7\x03\x02\x02" + + "\x02\u01AC\u01AD\t\x0E\x02\x02\u01AD\u01AE\x07W\x02\x02\u01AE\u01AF\x05" + + "F$\x02\u01AF9\x03\x02\x02\x02\u01B0\u01B1\t\x0E\x02\x02\u01B1\u01B2\t" + + "\x0F\x02\x02\u01B2;\x03\x02\x02\x02\u01B3\u01B4\x07\x07\x02\x02\u01B4" + + "\u01B5\x05$\x13\x02\u01B5\u01B6\x07\b\x02\x02\u01B6=\x03\x02\x02\x02\u01B7" + + "\u01B8\x07\x18\x02\x02\u01B8\u01BD\x05\x1C\x0F\x02\u01B9\u01BA\x07\x07" + + "\x02\x02\u01BA\u01BB\x05$\x13\x02\u01BB\u01BC\x07\b\x02\x02\u01BC\u01BE" + + "\x03\x02\x02\x02\u01BD\u01B9\x03\x02\x02\x02\u01BE\u01BF\x03\x02\x02\x02" + + "\u01BF\u01BD\x03\x02\x02\x02\u01BF\u01C0\x03\x02\x02\x02\u01C0\u01C8\x03" + + "\x02\x02\x02\u01C1\u01C5\x056\x1C\x02\u01C2\u01C4\x054\x1B\x02\u01C3\u01C2" + + "\x03\x02\x02\x02\u01C4\u01C7\x03\x02\x02\x02\u01C5\u01C3\x03\x02\x02\x02" + + "\u01C5\u01C6\x03\x02\x02\x02\u01C6\u01C9\x03\x02\x02\x02\u01C7\u01C5\x03" + + "\x02\x02\x02\u01C8\u01C1\x03\x02\x02\x02\u01C8\u01C9\x03\x02\x02\x02\u01C9" + + "\u01E1\x03\x02\x02\x02\u01CA\u01CB\x07\x18\x02\x02\u01CB\u01CC\x05\x1C" + + "\x0F\x02\u01CC\u01CD\x07\x07\x02\x02\u01CD\u01CE\x07\b\x02\x02\u01CE\u01D7" + + "\x07\x05\x02\x02\u01CF\u01D4\x05$\x13\x02\u01D0\u01D1\x07\r\x02\x02\u01D1" + + "\u01D3\x05$\x13\x02\u01D2\u01D0\x03\x02\x02\x02\u01D3\u01D6\x03\x02\x02" + + "\x02\u01D4\u01D2\x03\x02\x02\x02\u01D4\u01D5\x03\x02\x02\x02\u01D5\u01D8" + + "\x03\x02\x02\x02\u01D6\u01D4\x03\x02\x02\x02\u01D7\u01CF\x03\x02\x02\x02" + + "\u01D7\u01D8\x03\x02\x02\x02\u01D8\u01D9\x03\x02\x02\x02\u01D9\u01DD\x07" + + "\x06\x02\x02\u01DA\u01DC\x054\x1B\x02\u01DB\u01DA\x03\x02\x02\x02\u01DC" + + "\u01DF\x03\x02\x02\x02\u01DD\u01DB\x03\x02\x02\x02\u01DD\u01DE\x03\x02" + + "\x02\x02\u01DE\u01E1\x03\x02\x02\x02\u01DF\u01DD\x03\x02\x02\x02\u01E0" + + "\u01B7\x03\x02\x02\x02\u01E0\u01CA\x03\x02\x02\x02\u01E1?\x03\x02\x02" + + "\x02\u01E2\u01E3\x07\x07\x02\x02\u01E3\u01E8\x05$\x13\x02\u01E4\u01E5" + + "\x07\r\x02\x02\u01E5\u01E7\x05$\x13\x02\u01E6\u01E4\x03\x02\x02\x02\u01E7" + + "\u01EA\x03\x02\x02\x02\u01E8\u01E6\x03\x02\x02\x02\u01E8\u01E9\x03\x02" + + "\x02\x02\u01E9\u01EB\x03\x02\x02\x02\u01EA\u01E8\x03\x02\x02\x02\u01EB" + + "\u01EC\x07\b\x02\x02\u01EC\u01F0\x03\x02\x02\x02\u01ED\u01EE\x07\x07\x02" + + "\x02\u01EE\u01F0\x07\b\x02\x02\u01EF\u01E2\x03\x02\x02\x02\u01EF\u01ED" + + "\x03\x02\x02\x02\u01F0A\x03\x02\x02\x02\u01F1\u01F2\x07\x07\x02\x02\u01F2" + + "\u01F7\x05D#\x02\u01F3\u01F4\x07\r\x02\x02\u01F4\u01F6\x05D#\x02\u01F5" + + "\u01F3\x03\x02\x02\x02\u01F6\u01F9\x03\x02\x02\x02\u01F7\u01F5\x03\x02" + + "\x02\x02\u01F7\u01F8\x03\x02\x02\x02\u01F8\u01FA\x03\x02\x02\x02\u01F9" + + "\u01F7\x03\x02\x02\x02\u01FA\u01FB\x07\b\x02\x02\u01FB\u0200\x03\x02\x02" + + "\x02\u01FC\u01FD\x07\x07\x02\x02\u01FD\u01FE\x076\x02\x02\u01FE\u0200" + + "\x07\b\x02\x02\u01FF\u01F1\x03\x02\x02\x02\u01FF\u01FC\x03\x02\x02\x02" + + "\u0200C\x03\x02\x02\x02\u0201\u0202\x05$\x13\x02\u0202\u0203\x076\x02" + + "\x02\u0203\u0204\x05$\x13\x02\u0204E\x03\x02\x02\x02\u0205\u020E\x07\t" + + "\x02\x02\u0206\u020B\x05H%\x02\u0207\u0208\x07\r\x02\x02\u0208\u020A\x05" + + "H%\x02\u0209\u0207\x03\x02\x02\x02\u020A\u020D\x03\x02\x02\x02\u020B\u0209" + + "\x03\x02\x02\x02\u020B\u020C\x03\x02\x02\x02\u020C\u020F\x03\x02\x02\x02" + + "\u020D\u020B\x03\x02\x02\x02\u020E\u0206\x03\x02\x02\x02\u020E\u020F\x03" + + "\x02\x02\x02\u020F\u0210\x03\x02\x02\x02\u0210\u0211\x07\n\x02\x02\u0211" + + "G\x03\x02\x02\x02\u0212\u0216\x05$\x13\x02\u0213\u0216\x05J&\x02\u0214" + + "\u0216\x05N(\x02\u0215\u0212\x03\x02\x02\x02\u0215\u0213\x03\x02\x02\x02" + + "\u0215\u0214\x03\x02\x02\x02\u0216I\x03\x02\x02\x02\u0217\u0225\x05L\'" + + "\x02\u0218\u0221\x07\t\x02\x02\u0219\u021E\x05L\'\x02\u021A\u021B\x07" + + "\r\x02\x02\u021B\u021D\x05L\'\x02\u021C\u021A\x03\x02\x02\x02\u021D\u0220" + + "\x03\x02\x02\x02\u021E\u021C\x03\x02\x02\x02\u021E\u021F\x03\x02\x02\x02" + + "\u021F\u0222\x03\x02\x02\x02\u0220\u021E\x03\x02\x02\x02\u0221\u0219\x03" + + "\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0222\u0223\x03\x02\x02\x02\u0223" + + "\u0225\x07\n\x02\x02\u0224\u0217\x03\x02\x02\x02\u0224\u0218\x03\x02\x02" + + "\x02\u0225\u0226"; + private static readonly _serializedATNSegment1: string = + "\x03\x02\x02\x02\u0226\u0229\x079\x02\x02\u0227\u022A\x05\x10\t\x02\u0228" + + "\u022A\x05$\x13\x02\u0229\u0227\x03\x02\x02\x02\u0229\u0228\x03\x02\x02" + + "\x02\u022AK\x03\x02\x02\x02\u022B\u022D\x05\x1A\x0E\x02\u022C\u022B\x03" + + "\x02\x02\x02\u022C\u022D\x03\x02\x02\x02\u022D\u022E\x03\x02\x02\x02\u022E" + + "\u022F\x07U\x02\x02\u022FM\x03\x02\x02\x02\u0230\u0231\x05\x1A\x0E\x02" + + "\u0231\u0232\x078\x02\x02\u0232\u0233\x07U\x02\x02\u0233\u023C\x03\x02" + + "\x02\x02\u0234\u0235\x05\x1A\x0E\x02\u0235\u0236\x078\x02\x02\u0236\u0237" + + "\x07\x18\x02\x02\u0237\u023C\x03\x02\x02\x02\u0238\u0239\x07\x1C\x02\x02" + + "\u0239\u023A\x078\x02\x02\u023A\u023C\x07U\x02\x02\u023B\u0230\x03\x02" + + "\x02\x02\u023B\u0234\x03\x02\x02\x02\u023B\u0238\x03\x02\x02\x02\u023C" + + "O\x03\x02\x02\x02>SYlow\x81\x89\x8E\x92\x96\x9B\xB3\xB5\xC3\xC8\xCC\xD2" + + "\xD6\xDE\xE8\xF0\xFA\xFD\u0102\u0135\u0137\u0145\u014C\u0155\u0161\u016A" + + "\u0171\u0178\u017F\u0182\u0188\u018C\u01A1\u01A6\u01AA\u01BF\u01C5\u01C8" + + "\u01D4\u01D7\u01DD\u01E0\u01E8\u01EF\u01F7\u01FF\u020B\u020E\u0215\u021E" + + "\u0221\u0224\u0229\u022C\u023B"; + public static readonly _serializedATN: string = Utils.join( + [ + painless_parser._serializedATNSegment0, + painless_parser._serializedATNSegment1, + ], + "", + ); + public static __ATN: ATN; + public static get _ATN(): ATN { + if (!painless_parser.__ATN) { + painless_parser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(painless_parser._serializedATN)); + } + + return painless_parser.__ATN; + } + +} + +export class SourceContext extends ParserRuleContext { + public EOF(): TerminalNode { return this.getToken(painless_parser.EOF, 0); } + public function(): FunctionContext[]; + public function(i: number): FunctionContext; + public function(i?: number): FunctionContext | FunctionContext[] { + if (i === undefined) { + return this.getRuleContexts(FunctionContext); + } else { + return this.getRuleContext(i, FunctionContext); + } + } + public statement(): StatementContext[]; + public statement(i: number): StatementContext; + public statement(i?: number): StatementContext | StatementContext[] { + if (i === undefined) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_source; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterSource) { + listener.enterSource(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitSource) { + listener.exitSource(this); + } + } +} + + +export class FunctionContext extends ParserRuleContext { + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public parameters(): ParametersContext { + return this.getRuleContext(0, ParametersContext); + } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_function; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterFunction) { + listener.enterFunction(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitFunction) { + listener.exitFunction(this); + } + } +} + + +export class ParametersContext extends ParserRuleContext { + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public decltype(): DecltypeContext[]; + public decltype(i: number): DecltypeContext; + public decltype(i?: number): DecltypeContext | DecltypeContext[] { + if (i === undefined) { + return this.getRuleContexts(DecltypeContext); + } else { + return this.getRuleContext(i, DecltypeContext); + } + } + public ID(): TerminalNode[]; + public ID(i: number): TerminalNode; + public ID(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.ID); + } else { + return this.getToken(painless_parser.ID, i); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_parameters; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterParameters) { + listener.enterParameters(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitParameters) { + listener.exitParameters(this); + } + } +} + + +export class StatementContext extends ParserRuleContext { + public rstatement(): RstatementContext | undefined { + return this.tryGetRuleContext(0, RstatementContext); + } + public dstatement(): DstatementContext | undefined { + return this.tryGetRuleContext(0, DstatementContext); + } + public SEMICOLON(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SEMICOLON, 0); } + public EOF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EOF, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_statement; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterStatement) { + listener.enterStatement(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitStatement) { + listener.exitStatement(this); + } + } +} + + +export class RstatementContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_rstatement; } + public copyFrom(ctx: RstatementContext): void { + super.copyFrom(ctx); + } +} +export class IfContext extends RstatementContext { + public IF(): TerminalNode { return this.getToken(painless_parser.IF, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public trailer(): TrailerContext[]; + public trailer(i: number): TrailerContext; + public trailer(i?: number): TrailerContext | TrailerContext[] { + if (i === undefined) { + return this.getRuleContexts(TrailerContext); + } else { + return this.getRuleContext(i, TrailerContext); + } + } + public ELSE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ELSE, 0); } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterIf) { + listener.enterIf(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitIf) { + listener.exitIf(this); + } + } +} +export class WhileContext extends RstatementContext { + public WHILE(): TerminalNode { return this.getToken(painless_parser.WHILE, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public trailer(): TrailerContext | undefined { + return this.tryGetRuleContext(0, TrailerContext); + } + public empty(): EmptyContext | undefined { + return this.tryGetRuleContext(0, EmptyContext); + } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterWhile) { + listener.enterWhile(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitWhile) { + listener.exitWhile(this); + } + } +} +export class ForContext extends RstatementContext { + public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public SEMICOLON(): TerminalNode[]; + public SEMICOLON(i: number): TerminalNode; + public SEMICOLON(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.SEMICOLON); + } else { + return this.getToken(painless_parser.SEMICOLON, i); + } + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public trailer(): TrailerContext | undefined { + return this.tryGetRuleContext(0, TrailerContext); + } + public empty(): EmptyContext | undefined { + return this.tryGetRuleContext(0, EmptyContext); + } + public initializer(): InitializerContext | undefined { + return this.tryGetRuleContext(0, InitializerContext); + } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + public afterthought(): AfterthoughtContext | undefined { + return this.tryGetRuleContext(0, AfterthoughtContext); + } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterFor) { + listener.enterFor(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitFor) { + listener.exitFor(this); + } + } +} +export class EachContext extends RstatementContext { + public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public trailer(): TrailerContext { + return this.getRuleContext(0, TrailerContext); + } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterEach) { + listener.enterEach(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitEach) { + listener.exitEach(this); + } + } +} +export class IneachContext extends RstatementContext { + public FOR(): TerminalNode { return this.getToken(painless_parser.FOR, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public IN(): TerminalNode { return this.getToken(painless_parser.IN, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public trailer(): TrailerContext { + return this.getRuleContext(0, TrailerContext); + } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterIneach) { + listener.enterIneach(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitIneach) { + listener.exitIneach(this); + } + } +} +export class TryContext extends RstatementContext { + public TRY(): TerminalNode { return this.getToken(painless_parser.TRY, 0); } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + public trap(): TrapContext[]; + public trap(i: number): TrapContext; + public trap(i?: number): TrapContext | TrapContext[] { + if (i === undefined) { + return this.getRuleContexts(TrapContext); + } else { + return this.getRuleContext(i, TrapContext); + } + } + constructor(ctx: RstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterTry) { + listener.enterTry(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitTry) { + listener.exitTry(this); + } + } +} + + +export class DstatementContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_dstatement; } + public copyFrom(ctx: DstatementContext): void { + super.copyFrom(ctx); + } +} +export class DoContext extends DstatementContext { + public DO(): TerminalNode { return this.getToken(painless_parser.DO, 0); } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + public WHILE(): TerminalNode { return this.getToken(painless_parser.WHILE, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDo) { + listener.enterDo(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDo) { + listener.exitDo(this); + } + } +} +export class DeclContext extends DstatementContext { + public declaration(): DeclarationContext { + return this.getRuleContext(0, DeclarationContext); + } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDecl) { + listener.enterDecl(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDecl) { + listener.exitDecl(this); + } + } +} +export class ContinueContext extends DstatementContext { + public CONTINUE(): TerminalNode { return this.getToken(painless_parser.CONTINUE, 0); } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterContinue) { + listener.enterContinue(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitContinue) { + listener.exitContinue(this); + } + } +} +export class BreakContext extends DstatementContext { + public BREAK(): TerminalNode { return this.getToken(painless_parser.BREAK, 0); } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterBreak) { + listener.enterBreak(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitBreak) { + listener.exitBreak(this); + } + } +} +export class ReturnContext extends DstatementContext { + public RETURN(): TerminalNode { return this.getToken(painless_parser.RETURN, 0); } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterReturn) { + listener.enterReturn(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitReturn) { + listener.exitReturn(this); + } + } +} +export class ThrowContext extends DstatementContext { + public THROW(): TerminalNode { return this.getToken(painless_parser.THROW, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterThrow) { + listener.enterThrow(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitThrow) { + listener.exitThrow(this); + } + } +} +export class ExprContext extends DstatementContext { + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(ctx: DstatementContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterExpr) { + listener.enterExpr(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitExpr) { + listener.exitExpr(this); + } + } +} + + +export class TrailerContext extends ParserRuleContext { + public block(): BlockContext | undefined { + return this.tryGetRuleContext(0, BlockContext); + } + public statement(): StatementContext | undefined { + return this.tryGetRuleContext(0, StatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_trailer; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterTrailer) { + listener.enterTrailer(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitTrailer) { + listener.exitTrailer(this); + } + } +} + + +export class BlockContext extends ParserRuleContext { + public LBRACK(): TerminalNode { return this.getToken(painless_parser.LBRACK, 0); } + public RBRACK(): TerminalNode { return this.getToken(painless_parser.RBRACK, 0); } + public statement(): StatementContext[]; + public statement(i: number): StatementContext; + public statement(i?: number): StatementContext | StatementContext[] { + if (i === undefined) { + return this.getRuleContexts(StatementContext); + } else { + return this.getRuleContext(i, StatementContext); + } + } + public dstatement(): DstatementContext | undefined { + return this.tryGetRuleContext(0, DstatementContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_block; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterBlock) { + listener.enterBlock(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitBlock) { + listener.exitBlock(this); + } + } +} + + +export class EmptyContext extends ParserRuleContext { + public SEMICOLON(): TerminalNode { return this.getToken(painless_parser.SEMICOLON, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_empty; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterEmpty) { + listener.enterEmpty(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitEmpty) { + listener.exitEmpty(this); + } + } +} + + +export class InitializerContext extends ParserRuleContext { + public declaration(): DeclarationContext | undefined { + return this.tryGetRuleContext(0, DeclarationContext); + } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_initializer; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterInitializer) { + listener.enterInitializer(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitInitializer) { + listener.exitInitializer(this); + } + } +} + + +export class AfterthoughtContext extends ParserRuleContext { + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_afterthought; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterAfterthought) { + listener.enterAfterthought(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitAfterthought) { + listener.exitAfterthought(this); + } + } +} + + +export class DeclarationContext extends ParserRuleContext { + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + public declvar(): DeclvarContext[]; + public declvar(i: number): DeclvarContext; + public declvar(i?: number): DeclvarContext | DeclvarContext[] { + if (i === undefined) { + return this.getRuleContexts(DeclvarContext); + } else { + return this.getRuleContext(i, DeclvarContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_declaration; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDeclaration) { + listener.enterDeclaration(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDeclaration) { + listener.exitDeclaration(this); + } + } +} + + +export class DecltypeContext extends ParserRuleContext { + public type(): TypeContext { + return this.getRuleContext(0, TypeContext); + } + public LBRACE(): TerminalNode[]; + public LBRACE(i: number): TerminalNode; + public LBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.LBRACE); + } else { + return this.getToken(painless_parser.LBRACE, i); + } + } + public RBRACE(): TerminalNode[]; + public RBRACE(i: number): TerminalNode; + public RBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.RBRACE); + } else { + return this.getToken(painless_parser.RBRACE, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_decltype; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDecltype) { + listener.enterDecltype(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDecltype) { + listener.exitDecltype(this); + } + } +} + + +export class TypeContext extends ParserRuleContext { + public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } + public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } + public ID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ID, 0); } + public DOT(): TerminalNode[]; + public DOT(i: number): TerminalNode; + public DOT(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.DOT); + } else { + return this.getToken(painless_parser.DOT, i); + } + } + public DOTID(): TerminalNode[]; + public DOTID(i: number): TerminalNode; + public DOTID(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.DOTID); + } else { + return this.getToken(painless_parser.DOTID, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_type; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterType) { + listener.enterType(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitType) { + listener.exitType(this); + } + } +} + + +export class DeclvarContext extends ParserRuleContext { + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASSIGN, 0); } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_declvar; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDeclvar) { + listener.enterDeclvar(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDeclvar) { + listener.exitDeclvar(this); + } + } +} + + +export class TrapContext extends ParserRuleContext { + public CATCH(): TerminalNode { return this.getToken(painless_parser.CATCH, 0); } + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext); + } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public block(): BlockContext { + return this.getRuleContext(0, BlockContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_trap; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterTrap) { + listener.enterTrap(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitTrap) { + listener.exitTrap(this); + } + } +} + + +export class NoncondexpressionContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_noncondexpression; } + public copyFrom(ctx: NoncondexpressionContext): void { + super.copyFrom(ctx); + } +} +export class SingleContext extends NoncondexpressionContext { + public unary(): UnaryContext { + return this.getRuleContext(0, UnaryContext); + } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterSingle) { + listener.enterSingle(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitSingle) { + listener.exitSingle(this); + } + } +} +export class BinaryContext extends NoncondexpressionContext { + public noncondexpression(): NoncondexpressionContext[]; + public noncondexpression(i: number): NoncondexpressionContext; + public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(NoncondexpressionContext); + } else { + return this.getRuleContext(i, NoncondexpressionContext); + } + } + public MUL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.MUL, 0); } + public DIV(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DIV, 0); } + public REM(): TerminalNode | undefined { return this.tryGetToken(painless_parser.REM, 0); } + public ADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADD, 0); } + public SUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SUB, 0); } + public FIND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.FIND, 0); } + public MATCH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.MATCH, 0); } + public LSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LSH, 0); } + public RSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RSH, 0); } + public USH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.USH, 0); } + public BWAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWAND, 0); } + public XOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.XOR, 0); } + public BWOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWOR, 0); } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterBinary) { + listener.enterBinary(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitBinary) { + listener.exitBinary(this); + } + } +} +export class CompContext extends NoncondexpressionContext { + public noncondexpression(): NoncondexpressionContext[]; + public noncondexpression(i: number): NoncondexpressionContext; + public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(NoncondexpressionContext); + } else { + return this.getRuleContext(i, NoncondexpressionContext); + } + } + public LT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LT, 0); } + public LTE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LTE, 0); } + public GT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.GT, 0); } + public GTE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.GTE, 0); } + public EQ(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EQ, 0); } + public EQR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.EQR, 0); } + public NE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NE, 0); } + public NER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NER, 0); } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterComp) { + listener.enterComp(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitComp) { + listener.exitComp(this); + } + } +} +export class InstanceofContext extends NoncondexpressionContext { + public noncondexpression(): NoncondexpressionContext { + return this.getRuleContext(0, NoncondexpressionContext); + } + public INSTANCEOF(): TerminalNode { return this.getToken(painless_parser.INSTANCEOF, 0); } + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterInstanceof) { + listener.enterInstanceof(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitInstanceof) { + listener.exitInstanceof(this); + } + } +} +export class BoolContext extends NoncondexpressionContext { + public noncondexpression(): NoncondexpressionContext[]; + public noncondexpression(i: number): NoncondexpressionContext; + public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(NoncondexpressionContext); + } else { + return this.getRuleContext(i, NoncondexpressionContext); + } + } + public BOOLAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLAND, 0); } + public BOOLOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLOR, 0); } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterBool) { + listener.enterBool(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitBool) { + listener.exitBool(this); + } + } +} +export class ElvisContext extends NoncondexpressionContext { + public noncondexpression(): NoncondexpressionContext[]; + public noncondexpression(i: number): NoncondexpressionContext; + public noncondexpression(i?: number): NoncondexpressionContext | NoncondexpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(NoncondexpressionContext); + } else { + return this.getRuleContext(i, NoncondexpressionContext); + } + } + public ELVIS(): TerminalNode { return this.getToken(painless_parser.ELVIS, 0); } + constructor(ctx: NoncondexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterElvis) { + listener.enterElvis(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitElvis) { + listener.exitElvis(this); + } + } +} + + +export class ExpressionContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_expression; } + public copyFrom(ctx: ExpressionContext): void { + super.copyFrom(ctx); + } +} +export class NonconditionalContext extends ExpressionContext { + public noncondexpression(): NoncondexpressionContext { + return this.getRuleContext(0, NoncondexpressionContext); + } + constructor(ctx: ExpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNonconditional) { + listener.enterNonconditional(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNonconditional) { + listener.exitNonconditional(this); + } + } +} +export class ConditionalContext extends ExpressionContext { + public noncondexpression(): NoncondexpressionContext { + return this.getRuleContext(0, NoncondexpressionContext); + } + public COND(): TerminalNode { return this.getToken(painless_parser.COND, 0); } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } + constructor(ctx: ExpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterConditional) { + listener.enterConditional(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitConditional) { + listener.exitConditional(this); + } + } +} +export class AssignmentContext extends ExpressionContext { + public noncondexpression(): NoncondexpressionContext { + return this.getRuleContext(0, NoncondexpressionContext); + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public ASSIGN(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASSIGN, 0); } + public AADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AADD, 0); } + public ASUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ASUB, 0); } + public AMUL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AMUL, 0); } + public ADIV(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADIV, 0); } + public AREM(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AREM, 0); } + public AAND(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AAND, 0); } + public AXOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AXOR, 0); } + public AOR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AOR, 0); } + public ALSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ALSH, 0); } + public ARSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ARSH, 0); } + public AUSH(): TerminalNode | undefined { return this.tryGetToken(painless_parser.AUSH, 0); } + constructor(ctx: ExpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterAssignment) { + listener.enterAssignment(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitAssignment) { + listener.exitAssignment(this); + } + } +} + + +export class UnaryContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_unary; } + public copyFrom(ctx: UnaryContext): void { + super.copyFrom(ctx); + } +} +export class PreContext extends UnaryContext { + public chain(): ChainContext { + return this.getRuleContext(0, ChainContext); + } + public INCR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INCR, 0); } + public DECR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECR, 0); } + constructor(ctx: UnaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPre) { + listener.enterPre(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPre) { + listener.exitPre(this); + } + } +} +export class AddsubContext extends UnaryContext { + public unary(): UnaryContext { + return this.getRuleContext(0, UnaryContext); + } + public ADD(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ADD, 0); } + public SUB(): TerminalNode | undefined { return this.tryGetToken(painless_parser.SUB, 0); } + constructor(ctx: UnaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterAddsub) { + listener.enterAddsub(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitAddsub) { + listener.exitAddsub(this); + } + } +} +export class NotaddsubContext extends UnaryContext { + public unarynotaddsub(): UnarynotaddsubContext { + return this.getRuleContext(0, UnarynotaddsubContext); + } + constructor(ctx: UnaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNotaddsub) { + listener.enterNotaddsub(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNotaddsub) { + listener.exitNotaddsub(this); + } + } +} + + +export class UnarynotaddsubContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_unarynotaddsub; } + public copyFrom(ctx: UnarynotaddsubContext): void { + super.copyFrom(ctx); + } +} +export class ReadContext extends UnarynotaddsubContext { + public chain(): ChainContext { + return this.getRuleContext(0, ChainContext); + } + constructor(ctx: UnarynotaddsubContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterRead) { + listener.enterRead(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitRead) { + listener.exitRead(this); + } + } +} +export class PostContext extends UnarynotaddsubContext { + public chain(): ChainContext { + return this.getRuleContext(0, ChainContext); + } + public INCR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INCR, 0); } + public DECR(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECR, 0); } + constructor(ctx: UnarynotaddsubContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPost) { + listener.enterPost(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPost) { + listener.exitPost(this); + } + } +} +export class NotContext extends UnarynotaddsubContext { + public unary(): UnaryContext { + return this.getRuleContext(0, UnaryContext); + } + public BOOLNOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BOOLNOT, 0); } + public BWNOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.BWNOT, 0); } + constructor(ctx: UnarynotaddsubContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNot) { + listener.enterNot(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNot) { + listener.exitNot(this); + } + } +} +export class CastContext extends UnarynotaddsubContext { + public castexpression(): CastexpressionContext { + return this.getRuleContext(0, CastexpressionContext); + } + constructor(ctx: UnarynotaddsubContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterCast) { + listener.enterCast(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitCast) { + listener.exitCast(this); + } + } +} + + +export class CastexpressionContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_castexpression; } + public copyFrom(ctx: CastexpressionContext): void { + super.copyFrom(ctx); + } +} +export class PrimordefcastContext extends CastexpressionContext { + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public primordefcasttype(): PrimordefcasttypeContext { + return this.getRuleContext(0, PrimordefcasttypeContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public unary(): UnaryContext { + return this.getRuleContext(0, UnaryContext); + } + constructor(ctx: CastexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPrimordefcast) { + listener.enterPrimordefcast(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPrimordefcast) { + listener.exitPrimordefcast(this); + } + } +} +export class RefcastContext extends CastexpressionContext { + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public refcasttype(): RefcasttypeContext { + return this.getRuleContext(0, RefcasttypeContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + public unarynotaddsub(): UnarynotaddsubContext { + return this.getRuleContext(0, UnarynotaddsubContext); + } + constructor(ctx: CastexpressionContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterRefcast) { + listener.enterRefcast(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitRefcast) { + listener.exitRefcast(this); + } + } +} + + +export class PrimordefcasttypeContext extends ParserRuleContext { + public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } + public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_primordefcasttype; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPrimordefcasttype) { + listener.enterPrimordefcasttype(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPrimordefcasttype) { + listener.exitPrimordefcasttype(this); + } + } +} + + +export class RefcasttypeContext extends ParserRuleContext { + public DEF(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DEF, 0); } + public LBRACE(): TerminalNode[]; + public LBRACE(i: number): TerminalNode; + public LBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.LBRACE); + } else { + return this.getToken(painless_parser.LBRACE, i); + } + } + public RBRACE(): TerminalNode[]; + public RBRACE(i: number): TerminalNode; + public RBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.RBRACE); + } else { + return this.getToken(painless_parser.RBRACE, i); + } + } + public PRIMITIVE(): TerminalNode | undefined { return this.tryGetToken(painless_parser.PRIMITIVE, 0); } + public ID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.ID, 0); } + public DOT(): TerminalNode[]; + public DOT(i: number): TerminalNode; + public DOT(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.DOT); + } else { + return this.getToken(painless_parser.DOT, i); + } + } + public DOTID(): TerminalNode[]; + public DOTID(i: number): TerminalNode; + public DOTID(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.DOTID); + } else { + return this.getToken(painless_parser.DOTID, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_refcasttype; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterRefcasttype) { + listener.enterRefcasttype(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitRefcasttype) { + listener.exitRefcasttype(this); + } + } +} + + +export class ChainContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_chain; } + public copyFrom(ctx: ChainContext): void { + super.copyFrom(ctx); + } +} +export class DynamicContext extends ChainContext { + public primary(): PrimaryContext { + return this.getRuleContext(0, PrimaryContext); + } + public postfix(): PostfixContext[]; + public postfix(i: number): PostfixContext; + public postfix(i?: number): PostfixContext | PostfixContext[] { + if (i === undefined) { + return this.getRuleContexts(PostfixContext); + } else { + return this.getRuleContext(i, PostfixContext); + } + } + constructor(ctx: ChainContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterDynamic) { + listener.enterDynamic(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitDynamic) { + listener.exitDynamic(this); + } + } +} +export class NewarrayContext extends ChainContext { + public arrayinitializer(): ArrayinitializerContext { + return this.getRuleContext(0, ArrayinitializerContext); + } + constructor(ctx: ChainContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNewarray) { + listener.enterNewarray(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNewarray) { + listener.exitNewarray(this); + } + } +} + + +export class PrimaryContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_primary; } + public copyFrom(ctx: PrimaryContext): void { + super.copyFrom(ctx); + } +} +export class PrecedenceContext extends PrimaryContext { + public LP(): TerminalNode { return this.getToken(painless_parser.LP, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RP(): TerminalNode { return this.getToken(painless_parser.RP, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPrecedence) { + listener.enterPrecedence(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPrecedence) { + listener.exitPrecedence(this); + } + } +} +export class NumericContext extends PrimaryContext { + public OCTAL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.OCTAL, 0); } + public HEX(): TerminalNode | undefined { return this.tryGetToken(painless_parser.HEX, 0); } + public INTEGER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.INTEGER, 0); } + public DECIMAL(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DECIMAL, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNumeric) { + listener.enterNumeric(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNumeric) { + listener.exitNumeric(this); + } + } +} +export class TrueContext extends PrimaryContext { + public TRUE(): TerminalNode { return this.getToken(painless_parser.TRUE, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterTrue) { + listener.enterTrue(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitTrue) { + listener.exitTrue(this); + } + } +} +export class FalseContext extends PrimaryContext { + public FALSE(): TerminalNode { return this.getToken(painless_parser.FALSE, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterFalse) { + listener.enterFalse(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitFalse) { + listener.exitFalse(this); + } + } +} +export class NullContext extends PrimaryContext { + public NULL(): TerminalNode { return this.getToken(painless_parser.NULL, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNull) { + listener.enterNull(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNull) { + listener.exitNull(this); + } + } +} +export class StringContext extends PrimaryContext { + public STRING(): TerminalNode { return this.getToken(painless_parser.STRING, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterString) { + listener.enterString(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitString) { + listener.exitString(this); + } + } +} +export class RegexContext extends PrimaryContext { + public REGEX(): TerminalNode { return this.getToken(painless_parser.REGEX, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterRegex) { + listener.enterRegex(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitRegex) { + listener.exitRegex(this); + } + } +} +export class ListinitContext extends PrimaryContext { + public listinitializer(): ListinitializerContext { + return this.getRuleContext(0, ListinitializerContext); + } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterListinit) { + listener.enterListinit(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitListinit) { + listener.exitListinit(this); + } + } +} +export class MapinitContext extends PrimaryContext { + public mapinitializer(): MapinitializerContext { + return this.getRuleContext(0, MapinitializerContext); + } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterMapinit) { + listener.enterMapinit(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitMapinit) { + listener.exitMapinit(this); + } + } +} +export class VariableContext extends PrimaryContext { + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterVariable) { + listener.enterVariable(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitVariable) { + listener.exitVariable(this); + } + } +} +export class CalllocalContext extends PrimaryContext { + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public arguments(): ArgumentsContext { + return this.getRuleContext(0, ArgumentsContext); + } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterCalllocal) { + listener.enterCalllocal(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitCalllocal) { + listener.exitCalllocal(this); + } + } +} +export class NewobjectContext extends PrimaryContext { + public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext); + } + public arguments(): ArgumentsContext { + return this.getRuleContext(0, ArgumentsContext); + } + constructor(ctx: PrimaryContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNewobject) { + listener.enterNewobject(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNewobject) { + listener.exitNewobject(this); + } + } +} + + +export class PostfixContext extends ParserRuleContext { + public callinvoke(): CallinvokeContext | undefined { + return this.tryGetRuleContext(0, CallinvokeContext); + } + public fieldaccess(): FieldaccessContext | undefined { + return this.tryGetRuleContext(0, FieldaccessContext); + } + public braceaccess(): BraceaccessContext | undefined { + return this.tryGetRuleContext(0, BraceaccessContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_postfix; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPostfix) { + listener.enterPostfix(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPostfix) { + listener.exitPostfix(this); + } + } +} + + +export class PostdotContext extends ParserRuleContext { + public callinvoke(): CallinvokeContext | undefined { + return this.tryGetRuleContext(0, CallinvokeContext); + } + public fieldaccess(): FieldaccessContext | undefined { + return this.tryGetRuleContext(0, FieldaccessContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_postdot; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterPostdot) { + listener.enterPostdot(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitPostdot) { + listener.exitPostdot(this); + } + } +} + + +export class CallinvokeContext extends ParserRuleContext { + public DOTID(): TerminalNode { return this.getToken(painless_parser.DOTID, 0); } + public arguments(): ArgumentsContext { + return this.getRuleContext(0, ArgumentsContext); + } + public DOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOT, 0); } + public NSDOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NSDOT, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_callinvoke; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterCallinvoke) { + listener.enterCallinvoke(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitCallinvoke) { + listener.exitCallinvoke(this); + } + } +} + + +export class FieldaccessContext extends ParserRuleContext { + public DOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOT, 0); } + public NSDOT(): TerminalNode | undefined { return this.tryGetToken(painless_parser.NSDOT, 0); } + public DOTID(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOTID, 0); } + public DOTINTEGER(): TerminalNode | undefined { return this.tryGetToken(painless_parser.DOTINTEGER, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_fieldaccess; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterFieldaccess) { + listener.enterFieldaccess(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitFieldaccess) { + listener.exitFieldaccess(this); + } + } +} + + +export class BraceaccessContext extends ParserRuleContext { + public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext); + } + public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_braceaccess; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterBraceaccess) { + listener.enterBraceaccess(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitBraceaccess) { + listener.exitBraceaccess(this); + } + } +} + + +export class ArrayinitializerContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_arrayinitializer; } + public copyFrom(ctx: ArrayinitializerContext): void { + super.copyFrom(ctx); + } +} +export class NewstandardarrayContext extends ArrayinitializerContext { + public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext); + } + public LBRACE(): TerminalNode[]; + public LBRACE(i: number): TerminalNode; + public LBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.LBRACE); + } else { + return this.getToken(painless_parser.LBRACE, i); + } + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public RBRACE(): TerminalNode[]; + public RBRACE(i: number): TerminalNode; + public RBRACE(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.RBRACE); + } else { + return this.getToken(painless_parser.RBRACE, i); + } + } + public postdot(): PostdotContext | undefined { + return this.tryGetRuleContext(0, PostdotContext); + } + public postfix(): PostfixContext[]; + public postfix(i: number): PostfixContext; + public postfix(i?: number): PostfixContext | PostfixContext[] { + if (i === undefined) { + return this.getRuleContexts(PostfixContext); + } else { + return this.getRuleContext(i, PostfixContext); + } + } + constructor(ctx: ArrayinitializerContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNewstandardarray) { + listener.enterNewstandardarray(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNewstandardarray) { + listener.exitNewstandardarray(this); + } + } +} +export class NewinitializedarrayContext extends ArrayinitializerContext { + public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext); + } + public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } + public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } + public LBRACK(): TerminalNode { return this.getToken(painless_parser.LBRACK, 0); } + public RBRACK(): TerminalNode { return this.getToken(painless_parser.RBRACK, 0); } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public postfix(): PostfixContext[]; + public postfix(i: number): PostfixContext; + public postfix(i?: number): PostfixContext | PostfixContext[] { + if (i === undefined) { + return this.getRuleContexts(PostfixContext); + } else { + return this.getRuleContext(i, PostfixContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(ctx: ArrayinitializerContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterNewinitializedarray) { + listener.enterNewinitializedarray(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitNewinitializedarray) { + listener.exitNewinitializedarray(this); + } + } +} + + +export class ListinitializerContext extends ParserRuleContext { + public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_listinitializer; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterListinitializer) { + listener.enterListinitializer(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitListinitializer) { + listener.exitListinitializer(this); + } + } +} + + +export class MapinitializerContext extends ParserRuleContext { + public LBRACE(): TerminalNode { return this.getToken(painless_parser.LBRACE, 0); } + public maptoken(): MaptokenContext[]; + public maptoken(i: number): MaptokenContext; + public maptoken(i?: number): MaptokenContext | MaptokenContext[] { + if (i === undefined) { + return this.getRuleContexts(MaptokenContext); + } else { + return this.getRuleContext(i, MaptokenContext); + } + } + public RBRACE(): TerminalNode { return this.getToken(painless_parser.RBRACE, 0); } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + public COLON(): TerminalNode | undefined { return this.tryGetToken(painless_parser.COLON, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_mapinitializer; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterMapinitializer) { + listener.enterMapinitializer(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitMapinitializer) { + listener.exitMapinitializer(this); + } + } +} + + +export class MaptokenContext extends ParserRuleContext { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext; + public expression(i?: number): ExpressionContext | ExpressionContext[] { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } else { + return this.getRuleContext(i, ExpressionContext); + } + } + public COLON(): TerminalNode { return this.getToken(painless_parser.COLON, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_maptoken; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterMaptoken) { + listener.enterMaptoken(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitMaptoken) { + listener.exitMaptoken(this); + } + } +} + + +export class ArgumentsContext extends ParserRuleContext { + public LP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LP, 0); } + public RP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RP, 0); } + public argument(): ArgumentContext[]; + public argument(i: number): ArgumentContext; + public argument(i?: number): ArgumentContext | ArgumentContext[] { + if (i === undefined) { + return this.getRuleContexts(ArgumentContext); + } else { + return this.getRuleContext(i, ArgumentContext); + } + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_arguments; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterArguments) { + listener.enterArguments(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitArguments) { + listener.exitArguments(this); + } + } +} + + +export class ArgumentContext extends ParserRuleContext { + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + public lambda(): LambdaContext | undefined { + return this.tryGetRuleContext(0, LambdaContext); + } + public funcref(): FuncrefContext | undefined { + return this.tryGetRuleContext(0, FuncrefContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_argument; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterArgument) { + listener.enterArgument(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitArgument) { + listener.exitArgument(this); + } + } +} + + +export class LambdaContext extends ParserRuleContext { + public ARROW(): TerminalNode { return this.getToken(painless_parser.ARROW, 0); } + public lamtype(): LamtypeContext[]; + public lamtype(i: number): LamtypeContext; + public lamtype(i?: number): LamtypeContext | LamtypeContext[] { + if (i === undefined) { + return this.getRuleContexts(LamtypeContext); + } else { + return this.getRuleContext(i, LamtypeContext); + } + } + public LP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.LP, 0); } + public RP(): TerminalNode | undefined { return this.tryGetToken(painless_parser.RP, 0); } + public block(): BlockContext | undefined { + return this.tryGetRuleContext(0, BlockContext); + } + public expression(): ExpressionContext | undefined { + return this.tryGetRuleContext(0, ExpressionContext); + } + public COMMA(): TerminalNode[]; + public COMMA(i: number): TerminalNode; + public COMMA(i?: number): TerminalNode | TerminalNode[] { + if (i === undefined) { + return this.getTokens(painless_parser.COMMA); + } else { + return this.getToken(painless_parser.COMMA, i); + } + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_lambda; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterLambda) { + listener.enterLambda(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitLambda) { + listener.exitLambda(this); + } + } +} + + +export class LamtypeContext extends ParserRuleContext { + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + public decltype(): DecltypeContext | undefined { + return this.tryGetRuleContext(0, DecltypeContext); + } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_lamtype; } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterLamtype) { + listener.enterLamtype(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitLamtype) { + listener.exitLamtype(this); + } + } +} + + +export class FuncrefContext extends ParserRuleContext { + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return painless_parser.RULE_funcref; } + public copyFrom(ctx: FuncrefContext): void { + super.copyFrom(ctx); + } +} +export class ClassfuncrefContext extends FuncrefContext { + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + constructor(ctx: FuncrefContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterClassfuncref) { + listener.enterClassfuncref(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitClassfuncref) { + listener.exitClassfuncref(this); + } + } +} +export class ConstructorfuncrefContext extends FuncrefContext { + public decltype(): DecltypeContext { + return this.getRuleContext(0, DecltypeContext); + } + public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } + public NEW(): TerminalNode { return this.getToken(painless_parser.NEW, 0); } + constructor(ctx: FuncrefContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterConstructorfuncref) { + listener.enterConstructorfuncref(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitConstructorfuncref) { + listener.exitConstructorfuncref(this); + } + } +} +export class LocalfuncrefContext extends FuncrefContext { + public THIS(): TerminalNode { return this.getToken(painless_parser.THIS, 0); } + public REF(): TerminalNode { return this.getToken(painless_parser.REF, 0); } + public ID(): TerminalNode { return this.getToken(painless_parser.ID, 0); } + constructor(ctx: FuncrefContext) { + super(ctx.parent, ctx.invokingState); + this.copyFrom(ctx); + } + // @Override + public enterRule(listener: painless_parserListener): void { + if (listener.enterLocalfuncref) { + listener.enterLocalfuncref(this); + } + } + // @Override + public exitRule(listener: painless_parserListener): void { + if (listener.exitLocalfuncref) { + listener.exitLocalfuncref(this); + } + } +} + + diff --git a/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts b/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts new file mode 100644 index 00000000000000..bc2637d1f75d00 --- /dev/null +++ b/packages/kbn-monaco/src/painless/antlr/painless_parser_listener.ts @@ -0,0 +1,1182 @@ +// @ts-nocheck +// Generated from ./src/painless/antlr/painless_parser.g4 by ANTLR 4.7.3-SNAPSHOT + + +import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener"; + +import { NewstandardarrayContext } from "./painless_parser"; +import { NewinitializedarrayContext } from "./painless_parser"; +import { PrimordefcastContext } from "./painless_parser"; +import { RefcastContext } from "./painless_parser"; +import { PreContext } from "./painless_parser"; +import { AddsubContext } from "./painless_parser"; +import { NotaddsubContext } from "./painless_parser"; +import { ClassfuncrefContext } from "./painless_parser"; +import { ConstructorfuncrefContext } from "./painless_parser"; +import { LocalfuncrefContext } from "./painless_parser"; +import { IfContext } from "./painless_parser"; +import { WhileContext } from "./painless_parser"; +import { ForContext } from "./painless_parser"; +import { EachContext } from "./painless_parser"; +import { IneachContext } from "./painless_parser"; +import { TryContext } from "./painless_parser"; +import { ReadContext } from "./painless_parser"; +import { PostContext } from "./painless_parser"; +import { NotContext } from "./painless_parser"; +import { CastContext } from "./painless_parser"; +import { DynamicContext } from "./painless_parser"; +import { NewarrayContext } from "./painless_parser"; +import { NonconditionalContext } from "./painless_parser"; +import { ConditionalContext } from "./painless_parser"; +import { AssignmentContext } from "./painless_parser"; +import { DoContext } from "./painless_parser"; +import { DeclContext } from "./painless_parser"; +import { ContinueContext } from "./painless_parser"; +import { BreakContext } from "./painless_parser"; +import { ReturnContext } from "./painless_parser"; +import { ThrowContext } from "./painless_parser"; +import { ExprContext } from "./painless_parser"; +import { SingleContext } from "./painless_parser"; +import { BinaryContext } from "./painless_parser"; +import { CompContext } from "./painless_parser"; +import { InstanceofContext } from "./painless_parser"; +import { BoolContext } from "./painless_parser"; +import { ElvisContext } from "./painless_parser"; +import { PrecedenceContext } from "./painless_parser"; +import { NumericContext } from "./painless_parser"; +import { TrueContext } from "./painless_parser"; +import { FalseContext } from "./painless_parser"; +import { NullContext } from "./painless_parser"; +import { StringContext } from "./painless_parser"; +import { RegexContext } from "./painless_parser"; +import { ListinitContext } from "./painless_parser"; +import { MapinitContext } from "./painless_parser"; +import { VariableContext } from "./painless_parser"; +import { CalllocalContext } from "./painless_parser"; +import { NewobjectContext } from "./painless_parser"; +import { SourceContext } from "./painless_parser"; +import { FunctionContext } from "./painless_parser"; +import { ParametersContext } from "./painless_parser"; +import { StatementContext } from "./painless_parser"; +import { RstatementContext } from "./painless_parser"; +import { DstatementContext } from "./painless_parser"; +import { TrailerContext } from "./painless_parser"; +import { BlockContext } from "./painless_parser"; +import { EmptyContext } from "./painless_parser"; +import { InitializerContext } from "./painless_parser"; +import { AfterthoughtContext } from "./painless_parser"; +import { DeclarationContext } from "./painless_parser"; +import { DecltypeContext } from "./painless_parser"; +import { TypeContext } from "./painless_parser"; +import { DeclvarContext } from "./painless_parser"; +import { TrapContext } from "./painless_parser"; +import { NoncondexpressionContext } from "./painless_parser"; +import { ExpressionContext } from "./painless_parser"; +import { UnaryContext } from "./painless_parser"; +import { UnarynotaddsubContext } from "./painless_parser"; +import { CastexpressionContext } from "./painless_parser"; +import { PrimordefcasttypeContext } from "./painless_parser"; +import { RefcasttypeContext } from "./painless_parser"; +import { ChainContext } from "./painless_parser"; +import { PrimaryContext } from "./painless_parser"; +import { PostfixContext } from "./painless_parser"; +import { PostdotContext } from "./painless_parser"; +import { CallinvokeContext } from "./painless_parser"; +import { FieldaccessContext } from "./painless_parser"; +import { BraceaccessContext } from "./painless_parser"; +import { ArrayinitializerContext } from "./painless_parser"; +import { ListinitializerContext } from "./painless_parser"; +import { MapinitializerContext } from "./painless_parser"; +import { MaptokenContext } from "./painless_parser"; +import { ArgumentsContext } from "./painless_parser"; +import { ArgumentContext } from "./painless_parser"; +import { LambdaContext } from "./painless_parser"; +import { LamtypeContext } from "./painless_parser"; +import { FuncrefContext } from "./painless_parser"; + + +/** + * This interface defines a complete listener for a parse tree produced by + * `painless_parser`. + */ +export interface painless_parserListener extends ParseTreeListener { + /** + * Enter a parse tree produced by the `newstandardarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + enterNewstandardarray?: (ctx: NewstandardarrayContext) => void; + /** + * Exit a parse tree produced by the `newstandardarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + exitNewstandardarray?: (ctx: NewstandardarrayContext) => void; + + /** + * Enter a parse tree produced by the `newinitializedarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + enterNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; + /** + * Exit a parse tree produced by the `newinitializedarray` + * labeled alternative in `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + exitNewinitializedarray?: (ctx: NewinitializedarrayContext) => void; + + /** + * Enter a parse tree produced by the `primordefcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + enterPrimordefcast?: (ctx: PrimordefcastContext) => void; + /** + * Exit a parse tree produced by the `primordefcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + exitPrimordefcast?: (ctx: PrimordefcastContext) => void; + + /** + * Enter a parse tree produced by the `refcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + enterRefcast?: (ctx: RefcastContext) => void; + /** + * Exit a parse tree produced by the `refcast` + * labeled alternative in `painless_parser.castexpression`. + * @param ctx the parse tree + */ + exitRefcast?: (ctx: RefcastContext) => void; + + /** + * Enter a parse tree produced by the `pre` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterPre?: (ctx: PreContext) => void; + /** + * Exit a parse tree produced by the `pre` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitPre?: (ctx: PreContext) => void; + + /** + * Enter a parse tree produced by the `addsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterAddsub?: (ctx: AddsubContext) => void; + /** + * Exit a parse tree produced by the `addsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitAddsub?: (ctx: AddsubContext) => void; + + /** + * Enter a parse tree produced by the `notaddsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + enterNotaddsub?: (ctx: NotaddsubContext) => void; + /** + * Exit a parse tree produced by the `notaddsub` + * labeled alternative in `painless_parser.unary`. + * @param ctx the parse tree + */ + exitNotaddsub?: (ctx: NotaddsubContext) => void; + + /** + * Enter a parse tree produced by the `classfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterClassfuncref?: (ctx: ClassfuncrefContext) => void; + /** + * Exit a parse tree produced by the `classfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitClassfuncref?: (ctx: ClassfuncrefContext) => void; + + /** + * Enter a parse tree produced by the `constructorfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; + /** + * Exit a parse tree produced by the `constructorfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitConstructorfuncref?: (ctx: ConstructorfuncrefContext) => void; + + /** + * Enter a parse tree produced by the `localfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterLocalfuncref?: (ctx: LocalfuncrefContext) => void; + /** + * Exit a parse tree produced by the `localfuncref` + * labeled alternative in `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitLocalfuncref?: (ctx: LocalfuncrefContext) => void; + + /** + * Enter a parse tree produced by the `if` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterIf?: (ctx: IfContext) => void; + /** + * Exit a parse tree produced by the `if` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitIf?: (ctx: IfContext) => void; + + /** + * Enter a parse tree produced by the `while` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterWhile?: (ctx: WhileContext) => void; + /** + * Exit a parse tree produced by the `while` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitWhile?: (ctx: WhileContext) => void; + + /** + * Enter a parse tree produced by the `for` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterFor?: (ctx: ForContext) => void; + /** + * Exit a parse tree produced by the `for` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitFor?: (ctx: ForContext) => void; + + /** + * Enter a parse tree produced by the `each` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterEach?: (ctx: EachContext) => void; + /** + * Exit a parse tree produced by the `each` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitEach?: (ctx: EachContext) => void; + + /** + * Enter a parse tree produced by the `ineach` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterIneach?: (ctx: IneachContext) => void; + /** + * Exit a parse tree produced by the `ineach` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitIneach?: (ctx: IneachContext) => void; + + /** + * Enter a parse tree produced by the `try` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterTry?: (ctx: TryContext) => void; + /** + * Exit a parse tree produced by the `try` + * labeled alternative in `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitTry?: (ctx: TryContext) => void; + + /** + * Enter a parse tree produced by the `read` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterRead?: (ctx: ReadContext) => void; + /** + * Exit a parse tree produced by the `read` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitRead?: (ctx: ReadContext) => void; + + /** + * Enter a parse tree produced by the `post` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterPost?: (ctx: PostContext) => void; + /** + * Exit a parse tree produced by the `post` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitPost?: (ctx: PostContext) => void; + + /** + * Enter a parse tree produced by the `not` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterNot?: (ctx: NotContext) => void; + /** + * Exit a parse tree produced by the `not` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitNot?: (ctx: NotContext) => void; + + /** + * Enter a parse tree produced by the `cast` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterCast?: (ctx: CastContext) => void; + /** + * Exit a parse tree produced by the `cast` + * labeled alternative in `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitCast?: (ctx: CastContext) => void; + + /** + * Enter a parse tree produced by the `dynamic` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + enterDynamic?: (ctx: DynamicContext) => void; + /** + * Exit a parse tree produced by the `dynamic` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + exitDynamic?: (ctx: DynamicContext) => void; + + /** + * Enter a parse tree produced by the `newarray` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + enterNewarray?: (ctx: NewarrayContext) => void; + /** + * Exit a parse tree produced by the `newarray` + * labeled alternative in `painless_parser.chain`. + * @param ctx the parse tree + */ + exitNewarray?: (ctx: NewarrayContext) => void; + + /** + * Enter a parse tree produced by the `nonconditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterNonconditional?: (ctx: NonconditionalContext) => void; + /** + * Exit a parse tree produced by the `nonconditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitNonconditional?: (ctx: NonconditionalContext) => void; + + /** + * Enter a parse tree produced by the `conditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterConditional?: (ctx: ConditionalContext) => void; + /** + * Exit a parse tree produced by the `conditional` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitConditional?: (ctx: ConditionalContext) => void; + + /** + * Enter a parse tree produced by the `assignment` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + enterAssignment?: (ctx: AssignmentContext) => void; + /** + * Exit a parse tree produced by the `assignment` + * labeled alternative in `painless_parser.expression`. + * @param ctx the parse tree + */ + exitAssignment?: (ctx: AssignmentContext) => void; + + /** + * Enter a parse tree produced by the `do` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterDo?: (ctx: DoContext) => void; + /** + * Exit a parse tree produced by the `do` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitDo?: (ctx: DoContext) => void; + + /** + * Enter a parse tree produced by the `decl` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterDecl?: (ctx: DeclContext) => void; + /** + * Exit a parse tree produced by the `decl` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitDecl?: (ctx: DeclContext) => void; + + /** + * Enter a parse tree produced by the `continue` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterContinue?: (ctx: ContinueContext) => void; + /** + * Exit a parse tree produced by the `continue` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitContinue?: (ctx: ContinueContext) => void; + + /** + * Enter a parse tree produced by the `break` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterBreak?: (ctx: BreakContext) => void; + /** + * Exit a parse tree produced by the `break` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitBreak?: (ctx: BreakContext) => void; + + /** + * Enter a parse tree produced by the `return` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterReturn?: (ctx: ReturnContext) => void; + /** + * Exit a parse tree produced by the `return` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitReturn?: (ctx: ReturnContext) => void; + + /** + * Enter a parse tree produced by the `throw` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterThrow?: (ctx: ThrowContext) => void; + /** + * Exit a parse tree produced by the `throw` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitThrow?: (ctx: ThrowContext) => void; + + /** + * Enter a parse tree produced by the `expr` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterExpr?: (ctx: ExprContext) => void; + /** + * Exit a parse tree produced by the `expr` + * labeled alternative in `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitExpr?: (ctx: ExprContext) => void; + + /** + * Enter a parse tree produced by the `single` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterSingle?: (ctx: SingleContext) => void; + /** + * Exit a parse tree produced by the `single` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitSingle?: (ctx: SingleContext) => void; + + /** + * Enter a parse tree produced by the `binary` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterBinary?: (ctx: BinaryContext) => void; + /** + * Exit a parse tree produced by the `binary` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitBinary?: (ctx: BinaryContext) => void; + + /** + * Enter a parse tree produced by the `comp` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterComp?: (ctx: CompContext) => void; + /** + * Exit a parse tree produced by the `comp` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitComp?: (ctx: CompContext) => void; + + /** + * Enter a parse tree produced by the `instanceof` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterInstanceof?: (ctx: InstanceofContext) => void; + /** + * Exit a parse tree produced by the `instanceof` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitInstanceof?: (ctx: InstanceofContext) => void; + + /** + * Enter a parse tree produced by the `bool` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterBool?: (ctx: BoolContext) => void; + /** + * Exit a parse tree produced by the `bool` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitBool?: (ctx: BoolContext) => void; + + /** + * Enter a parse tree produced by the `elvis` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterElvis?: (ctx: ElvisContext) => void; + /** + * Exit a parse tree produced by the `elvis` + * labeled alternative in `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitElvis?: (ctx: ElvisContext) => void; + + /** + * Enter a parse tree produced by the `precedence` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterPrecedence?: (ctx: PrecedenceContext) => void; + /** + * Exit a parse tree produced by the `precedence` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitPrecedence?: (ctx: PrecedenceContext) => void; + + /** + * Enter a parse tree produced by the `numeric` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNumeric?: (ctx: NumericContext) => void; + /** + * Exit a parse tree produced by the `numeric` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNumeric?: (ctx: NumericContext) => void; + + /** + * Enter a parse tree produced by the `true` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterTrue?: (ctx: TrueContext) => void; + /** + * Exit a parse tree produced by the `true` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitTrue?: (ctx: TrueContext) => void; + + /** + * Enter a parse tree produced by the `false` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterFalse?: (ctx: FalseContext) => void; + /** + * Exit a parse tree produced by the `false` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitFalse?: (ctx: FalseContext) => void; + + /** + * Enter a parse tree produced by the `null` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNull?: (ctx: NullContext) => void; + /** + * Exit a parse tree produced by the `null` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNull?: (ctx: NullContext) => void; + + /** + * Enter a parse tree produced by the `string` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterString?: (ctx: StringContext) => void; + /** + * Exit a parse tree produced by the `string` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitString?: (ctx: StringContext) => void; + + /** + * Enter a parse tree produced by the `regex` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterRegex?: (ctx: RegexContext) => void; + /** + * Exit a parse tree produced by the `regex` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitRegex?: (ctx: RegexContext) => void; + + /** + * Enter a parse tree produced by the `listinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterListinit?: (ctx: ListinitContext) => void; + /** + * Exit a parse tree produced by the `listinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitListinit?: (ctx: ListinitContext) => void; + + /** + * Enter a parse tree produced by the `mapinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterMapinit?: (ctx: MapinitContext) => void; + /** + * Exit a parse tree produced by the `mapinit` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitMapinit?: (ctx: MapinitContext) => void; + + /** + * Enter a parse tree produced by the `variable` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterVariable?: (ctx: VariableContext) => void; + /** + * Exit a parse tree produced by the `variable` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitVariable?: (ctx: VariableContext) => void; + + /** + * Enter a parse tree produced by the `calllocal` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterCalllocal?: (ctx: CalllocalContext) => void; + /** + * Exit a parse tree produced by the `calllocal` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitCalllocal?: (ctx: CalllocalContext) => void; + + /** + * Enter a parse tree produced by the `newobject` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + enterNewobject?: (ctx: NewobjectContext) => void; + /** + * Exit a parse tree produced by the `newobject` + * labeled alternative in `painless_parser.primary`. + * @param ctx the parse tree + */ + exitNewobject?: (ctx: NewobjectContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.source`. + * @param ctx the parse tree + */ + enterSource?: (ctx: SourceContext) => void; + /** + * Exit a parse tree produced by `painless_parser.source`. + * @param ctx the parse tree + */ + exitSource?: (ctx: SourceContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.function`. + * @param ctx the parse tree + */ + enterFunction?: (ctx: FunctionContext) => void; + /** + * Exit a parse tree produced by `painless_parser.function`. + * @param ctx the parse tree + */ + exitFunction?: (ctx: FunctionContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.parameters`. + * @param ctx the parse tree + */ + enterParameters?: (ctx: ParametersContext) => void; + /** + * Exit a parse tree produced by `painless_parser.parameters`. + * @param ctx the parse tree + */ + exitParameters?: (ctx: ParametersContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.statement`. + * @param ctx the parse tree + */ + enterStatement?: (ctx: StatementContext) => void; + /** + * Exit a parse tree produced by `painless_parser.statement`. + * @param ctx the parse tree + */ + exitStatement?: (ctx: StatementContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.rstatement`. + * @param ctx the parse tree + */ + enterRstatement?: (ctx: RstatementContext) => void; + /** + * Exit a parse tree produced by `painless_parser.rstatement`. + * @param ctx the parse tree + */ + exitRstatement?: (ctx: RstatementContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.dstatement`. + * @param ctx the parse tree + */ + enterDstatement?: (ctx: DstatementContext) => void; + /** + * Exit a parse tree produced by `painless_parser.dstatement`. + * @param ctx the parse tree + */ + exitDstatement?: (ctx: DstatementContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.trailer`. + * @param ctx the parse tree + */ + enterTrailer?: (ctx: TrailerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.trailer`. + * @param ctx the parse tree + */ + exitTrailer?: (ctx: TrailerContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.block`. + * @param ctx the parse tree + */ + enterBlock?: (ctx: BlockContext) => void; + /** + * Exit a parse tree produced by `painless_parser.block`. + * @param ctx the parse tree + */ + exitBlock?: (ctx: BlockContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.empty`. + * @param ctx the parse tree + */ + enterEmpty?: (ctx: EmptyContext) => void; + /** + * Exit a parse tree produced by `painless_parser.empty`. + * @param ctx the parse tree + */ + exitEmpty?: (ctx: EmptyContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.initializer`. + * @param ctx the parse tree + */ + enterInitializer?: (ctx: InitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.initializer`. + * @param ctx the parse tree + */ + exitInitializer?: (ctx: InitializerContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.afterthought`. + * @param ctx the parse tree + */ + enterAfterthought?: (ctx: AfterthoughtContext) => void; + /** + * Exit a parse tree produced by `painless_parser.afterthought`. + * @param ctx the parse tree + */ + exitAfterthought?: (ctx: AfterthoughtContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.declaration`. + * @param ctx the parse tree + */ + enterDeclaration?: (ctx: DeclarationContext) => void; + /** + * Exit a parse tree produced by `painless_parser.declaration`. + * @param ctx the parse tree + */ + exitDeclaration?: (ctx: DeclarationContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.decltype`. + * @param ctx the parse tree + */ + enterDecltype?: (ctx: DecltypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.decltype`. + * @param ctx the parse tree + */ + exitDecltype?: (ctx: DecltypeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.type`. + * @param ctx the parse tree + */ + enterType?: (ctx: TypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.type`. + * @param ctx the parse tree + */ + exitType?: (ctx: TypeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.declvar`. + * @param ctx the parse tree + */ + enterDeclvar?: (ctx: DeclvarContext) => void; + /** + * Exit a parse tree produced by `painless_parser.declvar`. + * @param ctx the parse tree + */ + exitDeclvar?: (ctx: DeclvarContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.trap`. + * @param ctx the parse tree + */ + enterTrap?: (ctx: TrapContext) => void; + /** + * Exit a parse tree produced by `painless_parser.trap`. + * @param ctx the parse tree + */ + exitTrap?: (ctx: TrapContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + enterNoncondexpression?: (ctx: NoncondexpressionContext) => void; + /** + * Exit a parse tree produced by `painless_parser.noncondexpression`. + * @param ctx the parse tree + */ + exitNoncondexpression?: (ctx: NoncondexpressionContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.expression`. + * @param ctx the parse tree + */ + enterExpression?: (ctx: ExpressionContext) => void; + /** + * Exit a parse tree produced by `painless_parser.expression`. + * @param ctx the parse tree + */ + exitExpression?: (ctx: ExpressionContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.unary`. + * @param ctx the parse tree + */ + enterUnary?: (ctx: UnaryContext) => void; + /** + * Exit a parse tree produced by `painless_parser.unary`. + * @param ctx the parse tree + */ + exitUnary?: (ctx: UnaryContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + enterUnarynotaddsub?: (ctx: UnarynotaddsubContext) => void; + /** + * Exit a parse tree produced by `painless_parser.unarynotaddsub`. + * @param ctx the parse tree + */ + exitUnarynotaddsub?: (ctx: UnarynotaddsubContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.castexpression`. + * @param ctx the parse tree + */ + enterCastexpression?: (ctx: CastexpressionContext) => void; + /** + * Exit a parse tree produced by `painless_parser.castexpression`. + * @param ctx the parse tree + */ + exitCastexpression?: (ctx: CastexpressionContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.primordefcasttype`. + * @param ctx the parse tree + */ + enterPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.primordefcasttype`. + * @param ctx the parse tree + */ + exitPrimordefcasttype?: (ctx: PrimordefcasttypeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.refcasttype`. + * @param ctx the parse tree + */ + enterRefcasttype?: (ctx: RefcasttypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.refcasttype`. + * @param ctx the parse tree + */ + exitRefcasttype?: (ctx: RefcasttypeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.chain`. + * @param ctx the parse tree + */ + enterChain?: (ctx: ChainContext) => void; + /** + * Exit a parse tree produced by `painless_parser.chain`. + * @param ctx the parse tree + */ + exitChain?: (ctx: ChainContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.primary`. + * @param ctx the parse tree + */ + enterPrimary?: (ctx: PrimaryContext) => void; + /** + * Exit a parse tree produced by `painless_parser.primary`. + * @param ctx the parse tree + */ + exitPrimary?: (ctx: PrimaryContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.postfix`. + * @param ctx the parse tree + */ + enterPostfix?: (ctx: PostfixContext) => void; + /** + * Exit a parse tree produced by `painless_parser.postfix`. + * @param ctx the parse tree + */ + exitPostfix?: (ctx: PostfixContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.postdot`. + * @param ctx the parse tree + */ + enterPostdot?: (ctx: PostdotContext) => void; + /** + * Exit a parse tree produced by `painless_parser.postdot`. + * @param ctx the parse tree + */ + exitPostdot?: (ctx: PostdotContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.callinvoke`. + * @param ctx the parse tree + */ + enterCallinvoke?: (ctx: CallinvokeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.callinvoke`. + * @param ctx the parse tree + */ + exitCallinvoke?: (ctx: CallinvokeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.fieldaccess`. + * @param ctx the parse tree + */ + enterFieldaccess?: (ctx: FieldaccessContext) => void; + /** + * Exit a parse tree produced by `painless_parser.fieldaccess`. + * @param ctx the parse tree + */ + exitFieldaccess?: (ctx: FieldaccessContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.braceaccess`. + * @param ctx the parse tree + */ + enterBraceaccess?: (ctx: BraceaccessContext) => void; + /** + * Exit a parse tree produced by `painless_parser.braceaccess`. + * @param ctx the parse tree + */ + exitBraceaccess?: (ctx: BraceaccessContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + enterArrayinitializer?: (ctx: ArrayinitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.arrayinitializer`. + * @param ctx the parse tree + */ + exitArrayinitializer?: (ctx: ArrayinitializerContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.listinitializer`. + * @param ctx the parse tree + */ + enterListinitializer?: (ctx: ListinitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.listinitializer`. + * @param ctx the parse tree + */ + exitListinitializer?: (ctx: ListinitializerContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.mapinitializer`. + * @param ctx the parse tree + */ + enterMapinitializer?: (ctx: MapinitializerContext) => void; + /** + * Exit a parse tree produced by `painless_parser.mapinitializer`. + * @param ctx the parse tree + */ + exitMapinitializer?: (ctx: MapinitializerContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.maptoken`. + * @param ctx the parse tree + */ + enterMaptoken?: (ctx: MaptokenContext) => void; + /** + * Exit a parse tree produced by `painless_parser.maptoken`. + * @param ctx the parse tree + */ + exitMaptoken?: (ctx: MaptokenContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.arguments`. + * @param ctx the parse tree + */ + enterArguments?: (ctx: ArgumentsContext) => void; + /** + * Exit a parse tree produced by `painless_parser.arguments`. + * @param ctx the parse tree + */ + exitArguments?: (ctx: ArgumentsContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.argument`. + * @param ctx the parse tree + */ + enterArgument?: (ctx: ArgumentContext) => void; + /** + * Exit a parse tree produced by `painless_parser.argument`. + * @param ctx the parse tree + */ + exitArgument?: (ctx: ArgumentContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.lambda`. + * @param ctx the parse tree + */ + enterLambda?: (ctx: LambdaContext) => void; + /** + * Exit a parse tree produced by `painless_parser.lambda`. + * @param ctx the parse tree + */ + exitLambda?: (ctx: LambdaContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.lamtype`. + * @param ctx the parse tree + */ + enterLamtype?: (ctx: LamtypeContext) => void; + /** + * Exit a parse tree produced by `painless_parser.lamtype`. + * @param ctx the parse tree + */ + exitLamtype?: (ctx: LamtypeContext) => void; + + /** + * Enter a parse tree produced by `painless_parser.funcref`. + * @param ctx the parse tree + */ + enterFuncref?: (ctx: FuncrefContext) => void; + /** + * Exit a parse tree produced by `painless_parser.funcref`. + * @param ctx the parse tree + */ + exitFuncref?: (ctx: FuncrefContext) => void; +} + diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/boolean_script_field_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/boolean_script_field_script_field.json new file mode 100644 index 00000000000000..58680e02ba5c0d --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/boolean_script_field_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.BooleanFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/date_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/date_script_field.json new file mode 100644 index 00000000000000..a5e9e35de56442 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/date_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.DateFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/double_script_field_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/double_script_field_script_field.json new file mode 100644 index 00000000000000..0e34d717370008 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/double_script_field_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.DoubleFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/filter.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/filter.json new file mode 100644 index 00000000000000..f96c4061b7608e --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/filter.json @@ -0,0 +1,43978 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InternalEqlScriptUtils", + "kind": "class", + "documentation": "Class: InternalEqlScriptUtils", + "insertText": "InternalEqlScriptUtils", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.lang.String a, java.lang.String b, java.lang.String c, java.lang.Boolean d, java.lang.Boolean e): java.lang.String", + "insertText": "between" + }, + { + "label": "cidrMatch", + "kind": "method", + "documentation": "cidrMatch(java.lang.String a, java.util.List b): java.lang.Boolean", + "insertText": "cidrMatch" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.List a): java.lang.String", + "insertText": "concat" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a, java.lang.String b, java.lang.Boolean c): java.lang.Boolean", + "insertText": "endsWith" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, java.lang.String b, java.lang.Number c, java.lang.Boolean d): java.lang.Integer", + "insertText": "indexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(java.lang.String a): java.lang.Integer", + "insertText": "length" + }, + { + "label": "number", + "kind": "method", + "documentation": "number(java.lang.String a, java.lang.Number b): java.lang.Number", + "insertText": "number" + }, + { + "label": "seq", + "kind": "method", + "documentation": "seq(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "seq" + }, + { + "label": "sneq", + "kind": "method", + "documentation": "sneq(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "sneq" + }, + { + "label": "string", + "kind": "method", + "documentation": "string(java.lang.Object a): java.lang.String", + "insertText": "string" + }, + { + "label": "stringContains", + "kind": "method", + "documentation": "stringContains(java.lang.String a, java.lang.String b, java.lang.Boolean c): java.lang.Boolean", + "insertText": "stringContains" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(java.lang.String a, java.lang.Number b, java.lang.Number c): java.lang.String", + "insertText": "substring" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InternalQlScriptUtils", + "kind": "class", + "documentation": "Class: InternalQlScriptUtils", + "insertText": "InternalQlScriptUtils", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.lang.Boolean a, java.lang.Boolean b): java.lang.Boolean", + "insertText": "and" + }, + { + "label": "div", + "kind": "method", + "documentation": "div(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "div" + }, + { + "label": "docValue", + "kind": "method", + "documentation": "docValue(java.util.Map a, java.lang.String b): org.elasticsearch.painless.lookup.def", + "insertText": "docValue" + }, + { + "label": "eq", + "kind": "method", + "documentation": "eq(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "eq" + }, + { + "label": "gt", + "kind": "method", + "documentation": "gt(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "gt" + }, + { + "label": "gte", + "kind": "method", + "documentation": "gte(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "gte" + }, + { + "label": "in", + "kind": "method", + "documentation": "in(java.lang.Object a, java.util.List b): java.lang.Boolean", + "insertText": "in" + }, + { + "label": "isNotNull", + "kind": "method", + "documentation": "isNotNull(java.lang.Object a): java.lang.Boolean", + "insertText": "isNotNull" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): java.lang.Boolean", + "insertText": "isNull" + }, + { + "label": "lt", + "kind": "method", + "documentation": "lt(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "lt" + }, + { + "label": "lte", + "kind": "method", + "documentation": "lte(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "lte" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "mod" + }, + { + "label": "mul", + "kind": "method", + "documentation": "mul(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "mul" + }, + { + "label": "neg", + "kind": "method", + "documentation": "neg(java.lang.Number a): java.lang.Number", + "insertText": "neg" + }, + { + "label": "neq", + "kind": "method", + "documentation": "neq(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "neq" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(java.lang.Boolean a): java.lang.Boolean", + "insertText": "not" + }, + { + "label": "nullSafeFilter", + "kind": "method", + "documentation": "nullSafeFilter(java.lang.Boolean a): boolean", + "insertText": "nullSafeFilter" + }, + { + "label": "nullSafeSortNumeric", + "kind": "method", + "documentation": "nullSafeSortNumeric(java.lang.Number a): double", + "insertText": "nullSafeSortNumeric" + }, + { + "label": "nullSafeSortString", + "kind": "method", + "documentation": "nullSafeSortString(java.lang.Object a): java.lang.String", + "insertText": "nullSafeSortString" + }, + { + "label": "nulleq", + "kind": "method", + "documentation": "nulleq(java.lang.Object a, java.lang.Object b): java.lang.Boolean", + "insertText": "nulleq" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.lang.Boolean a, java.lang.Boolean b): java.lang.Boolean", + "insertText": "or" + }, + { + "label": "regex", + "kind": "method", + "documentation": "regex(java.lang.String a, java.lang.String b): java.lang.Boolean", + "insertText": "regex" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, java.lang.String b, java.lang.Boolean c): java.lang.Boolean", + "insertText": "startsWith" + }, + { + "label": "sub", + "kind": "method", + "documentation": "sub(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "sub" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InternalSqlScriptUtils", + "kind": "class", + "documentation": "Class: InternalSqlScriptUtils", + "insertText": "InternalSqlScriptUtils", + "properties": [ + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.lang.Number a): java.lang.Number", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(java.lang.Number a): java.lang.Number", + "insertText": "acos" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "add" + }, + { + "label": "asDateTime", + "kind": "method", + "documentation": "asDateTime(java.lang.Object a): java.time.ZonedDateTime", + "insertText": "asDateTime" + }, + { + "label": "asTime", + "kind": "method", + "documentation": "asTime(java.lang.String a): java.time.OffsetTime", + "insertText": "asTime" + }, + { + "label": "ascii", + "kind": "method", + "documentation": "ascii(java.lang.String a): java.lang.Integer", + "insertText": "ascii" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(java.lang.Number a): java.lang.Number", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(java.lang.Number a): java.lang.Number", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "atan2" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(java.lang.String a): java.lang.Integer", + "insertText": "bitLength" + }, + { + "label": "cast", + "kind": "method", + "documentation": "cast(java.lang.Object a, java.lang.String b): org.elasticsearch.painless.lookup.def", + "insertText": "cast" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(java.lang.Number a): java.lang.Number", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(java.lang.Number a): java.lang.Number", + "insertText": "ceil" + }, + { + "label": "charLength", + "kind": "method", + "documentation": "charLength(java.lang.String a): java.lang.Integer", + "insertText": "charLength" + }, + { + "label": "character", + "kind": "method", + "documentation": "character(java.lang.Number a): java.lang.String", + "insertText": "character" + }, + { + "label": "coalesce", + "kind": "method", + "documentation": "coalesce(java.util.List a): org.elasticsearch.painless.lookup.def", + "insertText": "coalesce" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a, java.lang.String b): java.lang.String", + "insertText": "concat" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(java.lang.Number a): java.lang.Number", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(java.lang.Number a): java.lang.Number", + "insertText": "cosh" + }, + { + "label": "cot", + "kind": "method", + "documentation": "cot(java.lang.Number a): java.lang.Number", + "insertText": "cot" + }, + { + "label": "dateAdd", + "kind": "method", + "documentation": "dateAdd(java.lang.String a, java.lang.Integer b, java.lang.Object c, java.lang.String d): java.time.ZonedDateTime", + "insertText": "dateAdd" + }, + { + "label": "dateDiff", + "kind": "method", + "documentation": "dateDiff(java.lang.String a, java.lang.Object b, java.lang.Object c, java.lang.String d): java.lang.Integer", + "insertText": "dateDiff" + }, + { + "label": "dateParse", + "kind": "method", + "documentation": "dateParse(java.lang.String a, java.lang.String b, java.lang.String c): org.elasticsearch.painless.lookup.def", + "insertText": "dateParse" + }, + { + "label": "datePart", + "kind": "method", + "documentation": "datePart(java.lang.String a, java.lang.Object b, java.lang.String c): java.lang.Integer", + "insertText": "datePart" + }, + { + "label": "dateTimeChrono", + "kind": "method", + "documentation": "dateTimeChrono(java.lang.Object a, java.lang.String b, java.lang.String c): java.lang.Integer", + "insertText": "dateTimeChrono" + }, + { + "label": "dateTimeFormat", + "kind": "method", + "documentation": "dateTimeFormat(java.lang.Object a, java.lang.String b, java.lang.String c): java.lang.String", + "insertText": "dateTimeFormat" + }, + { + "label": "dateTimeParse", + "kind": "method", + "documentation": "dateTimeParse(java.lang.String a, java.lang.String b, java.lang.String c): org.elasticsearch.painless.lookup.def", + "insertText": "dateTimeParse" + }, + { + "label": "dateTrunc", + "kind": "method", + "documentation": "dateTrunc(java.lang.String a, java.lang.Object b, java.lang.String c): org.elasticsearch.painless.lookup.def", + "insertText": "dateTrunc" + }, + { + "label": "dayName", + "kind": "method", + "documentation": "dayName(java.lang.Object a, java.lang.String b): java.lang.String", + "insertText": "dayName" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(java.lang.Object a, java.lang.String b): java.lang.Integer", + "insertText": "dayOfWeek" + }, + { + "label": "degrees", + "kind": "method", + "documentation": "degrees(java.lang.Number a): java.lang.Number", + "insertText": "degrees" + }, + { + "label": "div", + "kind": "method", + "documentation": "div(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "div" + }, + { + "label": "e", + "kind": "method", + "documentation": "e(java.lang.Number a): java.lang.Number", + "insertText": "e" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(java.lang.Number a): java.lang.Number", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(java.lang.Number a): java.lang.Number", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(java.lang.Number a): java.lang.Number", + "insertText": "floor" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.String b, java.lang.String c): java.lang.String", + "insertText": "format" + }, + { + "label": "geoDocValue", + "kind": "method", + "documentation": "geoDocValue(java.util.Map a, java.lang.String b): org.elasticsearch.xpack.sql.expression.literal.geo.GeoShape", + "insertText": "geoDocValue" + }, + { + "label": "greatest", + "kind": "method", + "documentation": "greatest(java.util.List a): org.elasticsearch.painless.lookup.def", + "insertText": "greatest" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(java.lang.String a, java.lang.Number b, java.lang.Number c, java.lang.String d): java.lang.String", + "insertText": "insert" + }, + { + "label": "intervalDayTime", + "kind": "method", + "documentation": "intervalDayTime(java.lang.String a, java.lang.String b): org.elasticsearch.xpack.sql.expression.literal.interval.IntervalDayTime", + "insertText": "intervalDayTime" + }, + { + "label": "intervalYearMonth", + "kind": "method", + "documentation": "intervalYearMonth(java.lang.String a, java.lang.String b): org.elasticsearch.xpack.sql.expression.literal.interval.IntervalYearMonth", + "insertText": "intervalYearMonth" + }, + { + "label": "lcase", + "kind": "method", + "documentation": "lcase(java.lang.String a): java.lang.String", + "insertText": "lcase" + }, + { + "label": "least", + "kind": "method", + "documentation": "least(java.util.List a): org.elasticsearch.painless.lookup.def", + "insertText": "least" + }, + { + "label": "left", + "kind": "method", + "documentation": "left(java.lang.String a, java.lang.Number b): java.lang.String", + "insertText": "left" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(java.lang.String a): java.lang.Integer", + "insertText": "length" + }, + { + "label": "locate", + "kind": "method", + "documentation": "locate(java.lang.String a, java.lang.String b, java.lang.Number c | java.lang.String a, java.lang.String b): java.lang.Integer", + "insertText": "locate" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(java.lang.Number a): java.lang.Number", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(java.lang.Number a): java.lang.Number", + "insertText": "log10" + }, + { + "label": "ltrim", + "kind": "method", + "documentation": "ltrim(java.lang.String a): java.lang.String", + "insertText": "ltrim" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "mod" + }, + { + "label": "monthName", + "kind": "method", + "documentation": "monthName(java.lang.Object a, java.lang.String b): java.lang.String", + "insertText": "monthName" + }, + { + "label": "mul", + "kind": "method", + "documentation": "mul(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "mul" + }, + { + "label": "neg", + "kind": "method", + "documentation": "neg(java.lang.Number a): java.lang.Number", + "insertText": "neg" + }, + { + "label": "nullif", + "kind": "method", + "documentation": "nullif(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "nullif" + }, + { + "label": "octetLength", + "kind": "method", + "documentation": "octetLength(java.lang.String a): java.lang.Integer", + "insertText": "octetLength" + }, + { + "label": "pi", + "kind": "method", + "documentation": "pi(java.lang.Number a): java.lang.Number", + "insertText": "pi" + }, + { + "label": "position", + "kind": "method", + "documentation": "position(java.lang.String a, java.lang.String b): java.lang.Integer", + "insertText": "position" + }, + { + "label": "power", + "kind": "method", + "documentation": "power(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "power" + }, + { + "label": "quarter", + "kind": "method", + "documentation": "quarter(java.lang.Object a, java.lang.String b): java.lang.Integer", + "insertText": "quarter" + }, + { + "label": "radians", + "kind": "method", + "documentation": "radians(java.lang.Number a): java.lang.Number", + "insertText": "radians" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(java.lang.Number a): java.lang.Number", + "insertText": "random" + }, + { + "label": "regex", + "kind": "method", + "documentation": "regex(java.lang.String a, java.lang.String b): java.lang.Boolean", + "insertText": "regex" + }, + { + "label": "repeat", + "kind": "method", + "documentation": "repeat(java.lang.String a, java.lang.Number b): java.lang.String", + "insertText": "repeat" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.String a, java.lang.String b, java.lang.String c): java.lang.String", + "insertText": "replace" + }, + { + "label": "right", + "kind": "method", + "documentation": "right(java.lang.String a, java.lang.Number b): java.lang.String", + "insertText": "right" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "round" + }, + { + "label": "rtrim", + "kind": "method", + "documentation": "rtrim(java.lang.String a): java.lang.String", + "insertText": "rtrim" + }, + { + "label": "sign", + "kind": "method", + "documentation": "sign(java.lang.Number a): java.lang.Number", + "insertText": "sign" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(java.lang.Number a): java.lang.Number", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(java.lang.Number a): java.lang.Number", + "insertText": "sinh" + }, + { + "label": "space", + "kind": "method", + "documentation": "space(java.lang.Number a): java.lang.String", + "insertText": "space" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(java.lang.Number a): java.lang.Number", + "insertText": "sqrt" + }, + { + "label": "stAswkt", + "kind": "method", + "documentation": "stAswkt(java.lang.Object a): java.lang.String", + "insertText": "stAswkt" + }, + { + "label": "stDistance", + "kind": "method", + "documentation": "stDistance(java.lang.Object a, java.lang.Object b): java.lang.Double", + "insertText": "stDistance" + }, + { + "label": "stGeometryType", + "kind": "method", + "documentation": "stGeometryType(java.lang.Object a): java.lang.String", + "insertText": "stGeometryType" + }, + { + "label": "stWktToSql", + "kind": "method", + "documentation": "stWktToSql(java.lang.String a): org.elasticsearch.xpack.sql.expression.literal.geo.GeoShape", + "insertText": "stWktToSql" + }, + { + "label": "stX", + "kind": "method", + "documentation": "stX(java.lang.Object a): java.lang.Double", + "insertText": "stX" + }, + { + "label": "stY", + "kind": "method", + "documentation": "stY(java.lang.Object a): java.lang.Double", + "insertText": "stY" + }, + { + "label": "stZ", + "kind": "method", + "documentation": "stZ(java.lang.Object a): java.lang.Double", + "insertText": "stZ" + }, + { + "label": "sub", + "kind": "method", + "documentation": "sub(java.lang.Object a, java.lang.Object b): org.elasticsearch.painless.lookup.def", + "insertText": "sub" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(java.lang.String a, java.lang.Number b, java.lang.Number c): java.lang.String", + "insertText": "substring" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(java.lang.Number a): java.lang.Number", + "insertText": "tan" + }, + { + "label": "timeParse", + "kind": "method", + "documentation": "timeParse(java.lang.String a, java.lang.String b, java.lang.String c): org.elasticsearch.painless.lookup.def", + "insertText": "timeParse" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(java.lang.String a): java.lang.String", + "insertText": "trim" + }, + { + "label": "truncate", + "kind": "method", + "documentation": "truncate(java.lang.Number a, java.lang.Number b): java.lang.Number", + "insertText": "truncate" + }, + { + "label": "ucase", + "kind": "method", + "documentation": "ucase(java.lang.String a): java.lang.String", + "insertText": "ucase" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(java.lang.Object a, java.lang.String b): java.lang.Integer", + "insertText": "weekOfYear" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "GeoShape", + "kind": "class", + "documentation": "Class: GeoShape", + "insertText": "GeoShape", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalDayTime", + "kind": "class", + "documentation": "Class: IntervalDayTime", + "insertText": "IntervalDayTime", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalYearMonth", + "kind": "class", + "documentation": "Class: IntervalYearMonth", + "insertText": "IntervalYearMonth", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsignedLongScriptDocValues", + "kind": "class", + "documentation": "Class: UnsignedLongScriptDocValues", + "insertText": "UnsignedLongScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Number", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.Number", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "VersionScriptDocValues", + "kind": "class", + "documentation": "Class: VersionScriptDocValues", + "insertText": "VersionScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/index.ts b/packages/kbn-monaco/src/painless/autocomplete_definitions/index.ts new file mode 100644 index 00000000000000..4bf82f27163ca5 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/index.ts @@ -0,0 +1,39 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// DO NOT EDIT: THIS FILE CONTAINS GENERATED CODE. REFER TO THE PAINLESS README FOR MORE INFORMATION. +import * as stringScriptFieldScriptFieldContext from './string_script_field_script_field.json'; +import * as scoreContext from './score.json'; +import * as processorConditionalContext from './processor_conditional.json'; +import * as painlessTestContext from './painless_test.json'; +import * as longScriptFieldScriptFieldContext from './long_script_field_script_field.json'; +import * as ipScriptFieldScriptFieldContext from './ip_script_field_script_field.json'; +import * as filterContext from './filter.json'; +import * as doubleScriptFieldScriptFieldContext from './double_script_field_script_field.json'; +import * as dateScriptFieldContext from './date_script_field.json'; +import * as booleanScriptFieldScriptFieldContext from './boolean_script_field_script_field.json'; +export { stringScriptFieldScriptFieldContext }; +export { scoreContext }; +export { processorConditionalContext }; +export { painlessTestContext }; +export { longScriptFieldScriptFieldContext }; +export { ipScriptFieldScriptFieldContext }; +export { filterContext }; +export { doubleScriptFieldScriptFieldContext }; +export { dateScriptFieldContext }; +export { booleanScriptFieldScriptFieldContext }; diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/ip_script_field_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/ip_script_field_script_field.json new file mode 100644 index 00000000000000..dbe4541a6edf67 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/ip_script_field_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.IpFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/long_script_field_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/long_script_field_script_field.json new file mode 100644 index 00000000000000..fbdf70e40e2175 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/long_script_field_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.LongFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/painless_test.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/painless_test.json new file mode 100644 index 00000000000000..53ca674b3f8707 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/painless_test.json @@ -0,0 +1,42516 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/processor_conditional.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/processor_conditional.json new file mode 100644 index 00000000000000..53ca674b3f8707 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/processor_conditional.json @@ -0,0 +1,42516 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/score.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/score.json new file mode 100644 index 00000000000000..6dcf8789603e0d --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/score.json @@ -0,0 +1,43370 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "org.elasticsearch.script.ScoreScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.script.ScoreScript", + "insertText": "org.elasticsearch.script.ScoreScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsignedLongScriptDocValues", + "kind": "class", + "documentation": "Class: UnsignedLongScriptDocValues", + "insertText": "UnsignedLongScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Number", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.Number", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DenseVectorScriptDocValues", + "kind": "class", + "documentation": "Class: DenseVectorScriptDocValues", + "insertText": "DenseVectorScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "VersionScriptDocValues", + "kind": "class", + "documentation": "Class: VersionScriptDocValues", + "insertText": "VersionScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/autocomplete_definitions/string_script_field_script_field.json b/packages/kbn-monaco/src/painless/autocomplete_definitions/string_script_field_script_field.json new file mode 100644 index 00000000000000..31625de7953203 --- /dev/null +++ b/packages/kbn-monaco/src/painless/autocomplete_definitions/string_script_field_script_field.json @@ -0,0 +1,42568 @@ +{ + "suggestions": [ + { + "label": "boolean", + "kind": "type", + "documentation": "Primitive: boolean", + "insertText": "boolean" + }, + { + "label": "byte", + "kind": "type", + "documentation": "Primitive: byte", + "insertText": "byte" + }, + { + "label": "char", + "kind": "type", + "documentation": "Primitive: char", + "insertText": "char" + }, + { + "label": "double", + "kind": "type", + "documentation": "Primitive: double", + "insertText": "double" + }, + { + "label": "float", + "kind": "type", + "documentation": "Primitive: float", + "insertText": "float" + }, + { + "label": "int", + "kind": "type", + "documentation": "Primitive: int", + "insertText": "int" + }, + { + "label": "Appendable", + "kind": "class", + "documentation": "Class: Appendable", + "insertText": "Appendable", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c): java.lang.Appendable", + "insertText": "append" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArithmeticException", + "kind": "class", + "documentation": "Class: ArithmeticException", + "insertText": "ArithmeticException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArithmeticException", + "kind": "constructor", + "documentation": "Constructor: ArithmeticException", + "insertText": "ArithmeticException" + } + }, + { + "label": "ArrayIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: ArrayIndexOutOfBoundsException", + "insertText": "ArrayIndexOutOfBoundsException" + } + }, + { + "label": "ArrayStoreException", + "kind": "class", + "documentation": "Class: ArrayStoreException", + "insertText": "ArrayStoreException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayStoreException", + "kind": "constructor", + "documentation": "Constructor: ArrayStoreException", + "insertText": "ArrayStoreException" + } + }, + { + "label": "Boolean", + "kind": "class", + "documentation": "Class: Boolean", + "insertText": "Boolean", + "properties": [ + { + "label": "FALSE", + "kind": "property", + "documentation": "FALSE: java.lang.Boolean", + "insertText": "FALSE" + }, + { + "label": "TRUE", + "kind": "property", + "documentation": "TRUE: java.lang.Boolean", + "insertText": "TRUE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(boolean a, boolean b): int", + "insertText": "compare" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(boolean a): int", + "insertText": "hashCode" + }, + { + "label": "logicalAnd", + "kind": "method", + "documentation": "logicalAnd(boolean a, boolean b): boolean", + "insertText": "logicalAnd" + }, + { + "label": "logicalOr", + "kind": "method", + "documentation": "logicalOr(boolean a, boolean b): boolean", + "insertText": "logicalOr" + }, + { + "label": "logicalXor", + "kind": "method", + "documentation": "logicalXor(boolean a, boolean b): boolean", + "insertText": "logicalXor" + }, + { + "label": "parseBoolean", + "kind": "method", + "documentation": "parseBoolean(java.lang.String a): boolean", + "insertText": "parseBoolean" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(boolean a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(boolean a): java.lang.Boolean", + "insertText": "valueOf" + }, + { + "label": "booleanValue", + "kind": "method", + "documentation": "booleanValue(): boolean", + "insertText": "booleanValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Boolean a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Byte", + "kind": "class", + "documentation": "Class: Byte", + "insertText": "Byte", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: byte", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: byte", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(byte a, byte b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Byte", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(byte a): int", + "insertText": "hashCode" + }, + { + "label": "parseByte", + "kind": "method", + "documentation": "parseByte(java.lang.String a, int b | java.lang.String a): byte", + "insertText": "parseByte" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(byte a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(byte a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(byte a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | byte a): java.lang.Byte", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Byte a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharSequence", + "kind": "class", + "documentation": "Class: CharSequence", + "insertText": "CharSequence", + "properties": [ + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character", + "kind": "class", + "documentation": "Class: Character", + "insertText": "Character", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "COMBINING_SPACING_MARK", + "kind": "property", + "documentation": "COMBINING_SPACING_MARK: byte", + "insertText": "COMBINING_SPACING_MARK" + }, + { + "label": "CONNECTOR_PUNCTUATION", + "kind": "property", + "documentation": "CONNECTOR_PUNCTUATION: byte", + "insertText": "CONNECTOR_PUNCTUATION" + }, + { + "label": "CONTROL", + "kind": "property", + "documentation": "CONTROL: byte", + "insertText": "CONTROL" + }, + { + "label": "CURRENCY_SYMBOL", + "kind": "property", + "documentation": "CURRENCY_SYMBOL: byte", + "insertText": "CURRENCY_SYMBOL" + }, + { + "label": "DASH_PUNCTUATION", + "kind": "property", + "documentation": "DASH_PUNCTUATION: byte", + "insertText": "DASH_PUNCTUATION" + }, + { + "label": "DECIMAL_DIGIT_NUMBER", + "kind": "property", + "documentation": "DECIMAL_DIGIT_NUMBER: byte", + "insertText": "DECIMAL_DIGIT_NUMBER" + }, + { + "label": "DIRECTIONALITY_ARABIC_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_ARABIC_NUMBER: byte", + "insertText": "DIRECTIONALITY_ARABIC_NUMBER" + }, + { + "label": "DIRECTIONALITY_BOUNDARY_NEUTRAL", + "kind": "property", + "documentation": "DIRECTIONALITY_BOUNDARY_NEUTRAL: byte", + "insertText": "DIRECTIONALITY_BOUNDARY_NEUTRAL" + }, + { + "label": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: byte", + "insertText": "DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_NONSPACING_MARK", + "kind": "property", + "documentation": "DIRECTIONALITY_NONSPACING_MARK: byte", + "insertText": "DIRECTIONALITY_NONSPACING_MARK" + }, + { + "label": "DIRECTIONALITY_OTHER_NEUTRALS", + "kind": "property", + "documentation": "DIRECTIONALITY_OTHER_NEUTRALS: byte", + "insertText": "DIRECTIONALITY_OTHER_NEUTRALS" + }, + { + "label": "DIRECTIONALITY_PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_PARAGRAPH_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_PARAGRAPH_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT", + "kind": "property", + "documentation": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: byte", + "insertText": "DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" + }, + { + "label": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE", + "kind": "property", + "documentation": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: byte", + "insertText": "DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" + }, + { + "label": "DIRECTIONALITY_SEGMENT_SEPARATOR", + "kind": "property", + "documentation": "DIRECTIONALITY_SEGMENT_SEPARATOR: byte", + "insertText": "DIRECTIONALITY_SEGMENT_SEPARATOR" + }, + { + "label": "DIRECTIONALITY_UNDEFINED", + "kind": "property", + "documentation": "DIRECTIONALITY_UNDEFINED: byte", + "insertText": "DIRECTIONALITY_UNDEFINED" + }, + { + "label": "DIRECTIONALITY_WHITESPACE", + "kind": "property", + "documentation": "DIRECTIONALITY_WHITESPACE: byte", + "insertText": "DIRECTIONALITY_WHITESPACE" + }, + { + "label": "ENCLOSING_MARK", + "kind": "property", + "documentation": "ENCLOSING_MARK: byte", + "insertText": "ENCLOSING_MARK" + }, + { + "label": "END_PUNCTUATION", + "kind": "property", + "documentation": "END_PUNCTUATION: byte", + "insertText": "END_PUNCTUATION" + }, + { + "label": "FINAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "FINAL_QUOTE_PUNCTUATION: byte", + "insertText": "FINAL_QUOTE_PUNCTUATION" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: byte", + "insertText": "FORMAT" + }, + { + "label": "INITIAL_QUOTE_PUNCTUATION", + "kind": "property", + "documentation": "INITIAL_QUOTE_PUNCTUATION: byte", + "insertText": "INITIAL_QUOTE_PUNCTUATION" + }, + { + "label": "LETTER_NUMBER", + "kind": "property", + "documentation": "LETTER_NUMBER: byte", + "insertText": "LETTER_NUMBER" + }, + { + "label": "LINE_SEPARATOR", + "kind": "property", + "documentation": "LINE_SEPARATOR: byte", + "insertText": "LINE_SEPARATOR" + }, + { + "label": "LOWERCASE_LETTER", + "kind": "property", + "documentation": "LOWERCASE_LETTER: byte", + "insertText": "LOWERCASE_LETTER" + }, + { + "label": "MATH_SYMBOL", + "kind": "property", + "documentation": "MATH_SYMBOL: byte", + "insertText": "MATH_SYMBOL" + }, + { + "label": "MAX_CODE_POINT", + "kind": "property", + "documentation": "MAX_CODE_POINT: int", + "insertText": "MAX_CODE_POINT" + }, + { + "label": "MAX_HIGH_SURROGATE", + "kind": "property", + "documentation": "MAX_HIGH_SURROGATE: char", + "insertText": "MAX_HIGH_SURROGATE" + }, + { + "label": "MAX_LOW_SURROGATE", + "kind": "property", + "documentation": "MAX_LOW_SURROGATE: char", + "insertText": "MAX_LOW_SURROGATE" + }, + { + "label": "MAX_RADIX", + "kind": "property", + "documentation": "MAX_RADIX: int", + "insertText": "MAX_RADIX" + }, + { + "label": "MAX_SURROGATE", + "kind": "property", + "documentation": "MAX_SURROGATE: char", + "insertText": "MAX_SURROGATE" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: char", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_CODE_POINT", + "kind": "property", + "documentation": "MIN_CODE_POINT: int", + "insertText": "MIN_CODE_POINT" + }, + { + "label": "MIN_HIGH_SURROGATE", + "kind": "property", + "documentation": "MIN_HIGH_SURROGATE: char", + "insertText": "MIN_HIGH_SURROGATE" + }, + { + "label": "MIN_LOW_SURROGATE", + "kind": "property", + "documentation": "MIN_LOW_SURROGATE: char", + "insertText": "MIN_LOW_SURROGATE" + }, + { + "label": "MIN_RADIX", + "kind": "property", + "documentation": "MIN_RADIX: int", + "insertText": "MIN_RADIX" + }, + { + "label": "MIN_SUPPLEMENTARY_CODE_POINT", + "kind": "property", + "documentation": "MIN_SUPPLEMENTARY_CODE_POINT: int", + "insertText": "MIN_SUPPLEMENTARY_CODE_POINT" + }, + { + "label": "MIN_SURROGATE", + "kind": "property", + "documentation": "MIN_SURROGATE: char", + "insertText": "MIN_SURROGATE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: char", + "insertText": "MIN_VALUE" + }, + { + "label": "MODIFIER_LETTER", + "kind": "property", + "documentation": "MODIFIER_LETTER: byte", + "insertText": "MODIFIER_LETTER" + }, + { + "label": "MODIFIER_SYMBOL", + "kind": "property", + "documentation": "MODIFIER_SYMBOL: byte", + "insertText": "MODIFIER_SYMBOL" + }, + { + "label": "NON_SPACING_MARK", + "kind": "property", + "documentation": "NON_SPACING_MARK: byte", + "insertText": "NON_SPACING_MARK" + }, + { + "label": "OTHER_LETTER", + "kind": "property", + "documentation": "OTHER_LETTER: byte", + "insertText": "OTHER_LETTER" + }, + { + "label": "OTHER_NUMBER", + "kind": "property", + "documentation": "OTHER_NUMBER: byte", + "insertText": "OTHER_NUMBER" + }, + { + "label": "OTHER_PUNCTUATION", + "kind": "property", + "documentation": "OTHER_PUNCTUATION: byte", + "insertText": "OTHER_PUNCTUATION" + }, + { + "label": "OTHER_SYMBOL", + "kind": "property", + "documentation": "OTHER_SYMBOL: byte", + "insertText": "OTHER_SYMBOL" + }, + { + "label": "PARAGRAPH_SEPARATOR", + "kind": "property", + "documentation": "PARAGRAPH_SEPARATOR: byte", + "insertText": "PARAGRAPH_SEPARATOR" + }, + { + "label": "PRIVATE_USE", + "kind": "property", + "documentation": "PRIVATE_USE: byte", + "insertText": "PRIVATE_USE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "SPACE_SEPARATOR", + "kind": "property", + "documentation": "SPACE_SEPARATOR: byte", + "insertText": "SPACE_SEPARATOR" + }, + { + "label": "START_PUNCTUATION", + "kind": "property", + "documentation": "START_PUNCTUATION: byte", + "insertText": "START_PUNCTUATION" + }, + { + "label": "SURROGATE", + "kind": "property", + "documentation": "SURROGATE: byte", + "insertText": "SURROGATE" + }, + { + "label": "TITLECASE_LETTER", + "kind": "property", + "documentation": "TITLECASE_LETTER: byte", + "insertText": "TITLECASE_LETTER" + }, + { + "label": "UNASSIGNED", + "kind": "property", + "documentation": "UNASSIGNED: byte", + "insertText": "UNASSIGNED" + }, + { + "label": "UPPERCASE_LETTER", + "kind": "property", + "documentation": "UPPERCASE_LETTER: byte", + "insertText": "UPPERCASE_LETTER" + }, + { + "label": "charCount", + "kind": "method", + "documentation": "charCount(int a): int", + "insertText": "charCount" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore([C a, int b, int c | java.lang.CharSequence a, int b): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(java.lang.CharSequence a, int b, int c): int", + "insertText": "codePointCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(char a, char b): int", + "insertText": "compare" + }, + { + "label": "digit", + "kind": "method", + "documentation": "digit(int a, int b): int", + "insertText": "digit" + }, + { + "label": "forDigit", + "kind": "method", + "documentation": "forDigit(int a, int b): char", + "insertText": "forDigit" + }, + { + "label": "getDirectionality", + "kind": "method", + "documentation": "getDirectionality(int a): byte", + "insertText": "getDirectionality" + }, + { + "label": "getName", + "kind": "method", + "documentation": "getName(int a): java.lang.String", + "insertText": "getName" + }, + { + "label": "getNumericValue", + "kind": "method", + "documentation": "getNumericValue(int a): int", + "insertText": "getNumericValue" + }, + { + "label": "getType", + "kind": "method", + "documentation": "getType(int a): int", + "insertText": "getType" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(char a): int", + "insertText": "hashCode" + }, + { + "label": "highSurrogate", + "kind": "method", + "documentation": "highSurrogate(int a): char", + "insertText": "highSurrogate" + }, + { + "label": "isAlphabetic", + "kind": "method", + "documentation": "isAlphabetic(int a): boolean", + "insertText": "isAlphabetic" + }, + { + "label": "isBmpCodePoint", + "kind": "method", + "documentation": "isBmpCodePoint(int a): boolean", + "insertText": "isBmpCodePoint" + }, + { + "label": "isDefined", + "kind": "method", + "documentation": "isDefined(int a): boolean", + "insertText": "isDefined" + }, + { + "label": "isDigit", + "kind": "method", + "documentation": "isDigit(int a): boolean", + "insertText": "isDigit" + }, + { + "label": "isHighSurrogate", + "kind": "method", + "documentation": "isHighSurrogate(char a): boolean", + "insertText": "isHighSurrogate" + }, + { + "label": "isISOControl", + "kind": "method", + "documentation": "isISOControl(int a): boolean", + "insertText": "isISOControl" + }, + { + "label": "isIdentifierIgnorable", + "kind": "method", + "documentation": "isIdentifierIgnorable(int a): boolean", + "insertText": "isIdentifierIgnorable" + }, + { + "label": "isIdeographic", + "kind": "method", + "documentation": "isIdeographic(int a): boolean", + "insertText": "isIdeographic" + }, + { + "label": "isJavaIdentifierPart", + "kind": "method", + "documentation": "isJavaIdentifierPart(int a): boolean", + "insertText": "isJavaIdentifierPart" + }, + { + "label": "isJavaIdentifierStart", + "kind": "method", + "documentation": "isJavaIdentifierStart(int a): boolean", + "insertText": "isJavaIdentifierStart" + }, + { + "label": "isLetter", + "kind": "method", + "documentation": "isLetter(int a): boolean", + "insertText": "isLetter" + }, + { + "label": "isLetterOrDigit", + "kind": "method", + "documentation": "isLetterOrDigit(int a): boolean", + "insertText": "isLetterOrDigit" + }, + { + "label": "isLowerCase", + "kind": "method", + "documentation": "isLowerCase(int a): boolean", + "insertText": "isLowerCase" + }, + { + "label": "isMirrored", + "kind": "method", + "documentation": "isMirrored(int a): boolean", + "insertText": "isMirrored" + }, + { + "label": "isSpaceChar", + "kind": "method", + "documentation": "isSpaceChar(int a): boolean", + "insertText": "isSpaceChar" + }, + { + "label": "isSupplementaryCodePoint", + "kind": "method", + "documentation": "isSupplementaryCodePoint(int a): boolean", + "insertText": "isSupplementaryCodePoint" + }, + { + "label": "isSurrogate", + "kind": "method", + "documentation": "isSurrogate(char a): boolean", + "insertText": "isSurrogate" + }, + { + "label": "isSurrogatePair", + "kind": "method", + "documentation": "isSurrogatePair(char a, char b): boolean", + "insertText": "isSurrogatePair" + }, + { + "label": "isTitleCase", + "kind": "method", + "documentation": "isTitleCase(int a): boolean", + "insertText": "isTitleCase" + }, + { + "label": "isUnicodeIdentifierPart", + "kind": "method", + "documentation": "isUnicodeIdentifierPart(int a): boolean", + "insertText": "isUnicodeIdentifierPart" + }, + { + "label": "isUnicodeIdentifierStart", + "kind": "method", + "documentation": "isUnicodeIdentifierStart(int a): boolean", + "insertText": "isUnicodeIdentifierStart" + }, + { + "label": "isUpperCase", + "kind": "method", + "documentation": "isUpperCase(int a): boolean", + "insertText": "isUpperCase" + }, + { + "label": "isValidCodePoint", + "kind": "method", + "documentation": "isValidCodePoint(int a): boolean", + "insertText": "isValidCodePoint" + }, + { + "label": "isWhitespace", + "kind": "method", + "documentation": "isWhitespace(int a): boolean", + "insertText": "isWhitespace" + }, + { + "label": "lowSurrogate", + "kind": "method", + "documentation": "lowSurrogate(int a): char", + "insertText": "lowSurrogate" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints([C a, int b, int c, int d, int e | java.lang.CharSequence a, int b, int c): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(char a): char", + "insertText": "reverseBytes" + }, + { + "label": "toChars", + "kind": "method", + "documentation": "toChars(int a, [C b, int c | int a): int | [C", + "insertText": "toChars" + }, + { + "label": "toCodePoint", + "kind": "method", + "documentation": "toCodePoint(char a, char b): int", + "insertText": "toCodePoint" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(char a): char", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(char a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTitleCase", + "kind": "method", + "documentation": "toTitleCase(char a): char", + "insertText": "toTitleCase" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(char a): char", + "insertText": "toUpperCase" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(char a): java.lang.Character", + "insertText": "valueOf" + }, + { + "label": "charValue", + "kind": "method", + "documentation": "charValue(): char", + "insertText": "charValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Character a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.Subset", + "kind": "class", + "documentation": "Class: Character.Subset", + "insertText": "Character.Subset", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeBlock", + "kind": "class", + "documentation": "Class: Character.UnicodeBlock", + "insertText": "Character.UnicodeBlock", + "properties": [ + { + "label": "AEGEAN_NUMBERS", + "kind": "property", + "documentation": "AEGEAN_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "AEGEAN_NUMBERS" + }, + { + "label": "ALCHEMICAL_SYMBOLS", + "kind": "property", + "documentation": "ALCHEMICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ALCHEMICAL_SYMBOLS" + }, + { + "label": "ALPHABETIC_PRESENTATION_FORMS", + "kind": "property", + "documentation": "ALPHABETIC_PRESENTATION_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "ALPHABETIC_PRESENTATION_FORMS" + }, + { + "label": "ANCIENT_GREEK_MUSICAL_NOTATION", + "kind": "property", + "documentation": "ANCIENT_GREEK_MUSICAL_NOTATION: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_MUSICAL_NOTATION" + }, + { + "label": "ANCIENT_GREEK_NUMBERS", + "kind": "property", + "documentation": "ANCIENT_GREEK_NUMBERS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_GREEK_NUMBERS" + }, + { + "label": "ANCIENT_SYMBOLS", + "kind": "property", + "documentation": "ANCIENT_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ANCIENT_SYMBOLS" + }, + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC" + }, + { + "label": "ARABIC_EXTENDED_A", + "kind": "property", + "documentation": "ARABIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_EXTENDED_A" + }, + { + "label": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", + "kind": "property", + "documentation": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_A", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_A: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_A" + }, + { + "label": "ARABIC_PRESENTATION_FORMS_B", + "kind": "property", + "documentation": "ARABIC_PRESENTATION_FORMS_B: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_PRESENTATION_FORMS_B" + }, + { + "label": "ARABIC_SUPPLEMENT", + "kind": "property", + "documentation": "ARABIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ARABIC_SUPPLEMENT" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeBlock", + "insertText": "ARMENIAN" + }, + { + "label": "ARROWS", + "kind": "property", + "documentation": "ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "ARROWS" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeBlock", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeBlock", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM" + }, + { + "label": "BAMUM_SUPPLEMENT", + "kind": "property", + "documentation": "BAMUM_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "BAMUM_SUPPLEMENT" + }, + { + "label": "BASIC_LATIN", + "kind": "property", + "documentation": "BASIC_LATIN: java.lang.Character$UnicodeBlock", + "insertText": "BASIC_LATIN" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeBlock", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeBlock", + "insertText": "BENGALI" + }, + { + "label": "BLOCK_ELEMENTS", + "kind": "property", + "documentation": "BLOCK_ELEMENTS: java.lang.Character$UnicodeBlock", + "insertText": "BLOCK_ELEMENTS" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO" + }, + { + "label": "BOPOMOFO_EXTENDED", + "kind": "property", + "documentation": "BOPOMOFO_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "BOPOMOFO_EXTENDED" + }, + { + "label": "BOX_DRAWING", + "kind": "property", + "documentation": "BOX_DRAWING: java.lang.Character$UnicodeBlock", + "insertText": "BOX_DRAWING" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeBlock", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE_PATTERNS", + "kind": "property", + "documentation": "BRAILLE_PATTERNS: java.lang.Character$UnicodeBlock", + "insertText": "BRAILLE_PATTERNS" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeBlock", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeBlock", + "insertText": "BUHID" + }, + { + "label": "BYZANTINE_MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "BYZANTINE_MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "BYZANTINE_MUSICAL_SYMBOLS" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeBlock", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeBlock", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeBlock", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeBlock", + "insertText": "CHEROKEE" + }, + { + "label": "CJK_COMPATIBILITY", + "kind": "property", + "documentation": "CJK_COMPATIBILITY: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY" + }, + { + "label": "CJK_COMPATIBILITY_FORMS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_FORMS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS" + }, + { + "label": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" + }, + { + "label": "CJK_RADICALS_SUPPLEMENT", + "kind": "property", + "documentation": "CJK_RADICALS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "CJK_RADICALS_SUPPLEMENT" + }, + { + "label": "CJK_STROKES", + "kind": "property", + "documentation": "CJK_STROKES: java.lang.Character$UnicodeBlock", + "insertText": "CJK_STROKES" + }, + { + "label": "CJK_SYMBOLS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CJK_SYMBOLS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CJK_SYMBOLS_AND_PUNCTUATION" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C" + }, + { + "label": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", + "kind": "property", + "documentation": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D: java.lang.Character$UnicodeBlock", + "insertText": "CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS" + }, + { + "label": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", + "kind": "property", + "documentation": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_DIACRITICAL_MARKS_SUPPLEMENT" + }, + { + "label": "COMBINING_HALF_MARKS", + "kind": "property", + "documentation": "COMBINING_HALF_MARKS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_HALF_MARKS" + }, + { + "label": "COMBINING_MARKS_FOR_SYMBOLS", + "kind": "property", + "documentation": "COMBINING_MARKS_FOR_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "COMBINING_MARKS_FOR_SYMBOLS" + }, + { + "label": "COMMON_INDIC_NUMBER_FORMS", + "kind": "property", + "documentation": "COMMON_INDIC_NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "COMMON_INDIC_NUMBER_FORMS" + }, + { + "label": "CONTROL_PICTURES", + "kind": "property", + "documentation": "CONTROL_PICTURES: java.lang.Character$UnicodeBlock", + "insertText": "CONTROL_PICTURES" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeBlock", + "insertText": "COPTIC" + }, + { + "label": "COUNTING_ROD_NUMERALS", + "kind": "property", + "documentation": "COUNTING_ROD_NUMERALS: java.lang.Character$UnicodeBlock", + "insertText": "COUNTING_ROD_NUMERALS" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM" + }, + { + "label": "CUNEIFORM_NUMBERS_AND_PUNCTUATION", + "kind": "property", + "documentation": "CUNEIFORM_NUMBERS_AND_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "CUNEIFORM_NUMBERS_AND_PUNCTUATION" + }, + { + "label": "CURRENCY_SYMBOLS", + "kind": "property", + "documentation": "CURRENCY_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "CURRENCY_SYMBOLS" + }, + { + "label": "CYPRIOT_SYLLABARY", + "kind": "property", + "documentation": "CYPRIOT_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "CYPRIOT_SYLLABARY" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC" + }, + { + "label": "CYRILLIC_EXTENDED_A", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_A" + }, + { + "label": "CYRILLIC_EXTENDED_B", + "kind": "property", + "documentation": "CYRILLIC_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_EXTENDED_B" + }, + { + "label": "CYRILLIC_SUPPLEMENTARY", + "kind": "property", + "documentation": "CYRILLIC_SUPPLEMENTARY: java.lang.Character$UnicodeBlock", + "insertText": "CYRILLIC_SUPPLEMENTARY" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeBlock", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI" + }, + { + "label": "DEVANAGARI_EXTENDED", + "kind": "property", + "documentation": "DEVANAGARI_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "DEVANAGARI_EXTENDED" + }, + { + "label": "DINGBATS", + "kind": "property", + "documentation": "DINGBATS: java.lang.Character$UnicodeBlock", + "insertText": "DINGBATS" + }, + { + "label": "DOMINO_TILES", + "kind": "property", + "documentation": "DOMINO_TILES: java.lang.Character$UnicodeBlock", + "insertText": "DOMINO_TILES" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "EMOTICONS", + "kind": "property", + "documentation": "EMOTICONS: java.lang.Character$UnicodeBlock", + "insertText": "EMOTICONS" + }, + { + "label": "ENCLOSED_ALPHANUMERICS", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERICS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERICS" + }, + { + "label": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_ALPHANUMERIC_SUPPLEMENT" + }, + { + "label": "ENCLOSED_CJK_LETTERS_AND_MONTHS", + "kind": "property", + "documentation": "ENCLOSED_CJK_LETTERS_AND_MONTHS: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_CJK_LETTERS_AND_MONTHS" + }, + { + "label": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", + "kind": "property", + "documentation": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ENCLOSED_IDEOGRAPHIC_SUPPLEMENT" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC" + }, + { + "label": "ETHIOPIC_EXTENDED", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED" + }, + { + "label": "ETHIOPIC_EXTENDED_A", + "kind": "property", + "documentation": "ETHIOPIC_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_EXTENDED_A" + }, + { + "label": "ETHIOPIC_SUPPLEMENT", + "kind": "property", + "documentation": "ETHIOPIC_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "ETHIOPIC_SUPPLEMENT" + }, + { + "label": "GENERAL_PUNCTUATION", + "kind": "property", + "documentation": "GENERAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "GENERAL_PUNCTUATION" + }, + { + "label": "GEOMETRIC_SHAPES", + "kind": "property", + "documentation": "GEOMETRIC_SHAPES: java.lang.Character$UnicodeBlock", + "insertText": "GEOMETRIC_SHAPES" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN" + }, + { + "label": "GEORGIAN_SUPPLEMENT", + "kind": "property", + "documentation": "GEORGIAN_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "GEORGIAN_SUPPLEMENT" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeBlock", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeBlock", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeBlock", + "insertText": "GREEK" + }, + { + "label": "GREEK_EXTENDED", + "kind": "property", + "documentation": "GREEK_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "GREEK_EXTENDED" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeBlock", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeBlock", + "insertText": "GURMUKHI" + }, + { + "label": "HALFWIDTH_AND_FULLWIDTH_FORMS", + "kind": "property", + "documentation": "HALFWIDTH_AND_FULLWIDTH_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "HALFWIDTH_AND_FULLWIDTH_FORMS" + }, + { + "label": "HANGUL_COMPATIBILITY_JAMO", + "kind": "property", + "documentation": "HANGUL_COMPATIBILITY_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_COMPATIBILITY_JAMO" + }, + { + "label": "HANGUL_JAMO", + "kind": "property", + "documentation": "HANGUL_JAMO: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO" + }, + { + "label": "HANGUL_JAMO_EXTENDED_A", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_A" + }, + { + "label": "HANGUL_JAMO_EXTENDED_B", + "kind": "property", + "documentation": "HANGUL_JAMO_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_JAMO_EXTENDED_B" + }, + { + "label": "HANGUL_SYLLABLES", + "kind": "property", + "documentation": "HANGUL_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "HANGUL_SYLLABLES" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeBlock", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeBlock", + "insertText": "HEBREW" + }, + { + "label": "HIGH_PRIVATE_USE_SURROGATES", + "kind": "property", + "documentation": "HIGH_PRIVATE_USE_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_PRIVATE_USE_SURROGATES" + }, + { + "label": "HIGH_SURROGATES", + "kind": "property", + "documentation": "HIGH_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "HIGH_SURROGATES" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeBlock", + "insertText": "HIRAGANA" + }, + { + "label": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS", + "kind": "property", + "documentation": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS: java.lang.Character$UnicodeBlock", + "insertText": "IDEOGRAPHIC_DESCRIPTION_CHARACTERS" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeBlock", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeBlock", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "IPA_EXTENSIONS", + "kind": "property", + "documentation": "IPA_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "IPA_EXTENSIONS" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeBlock", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeBlock", + "insertText": "KAITHI" + }, + { + "label": "KANA_SUPPLEMENT", + "kind": "property", + "documentation": "KANA_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "KANA_SUPPLEMENT" + }, + { + "label": "KANBUN", + "kind": "property", + "documentation": "KANBUN: java.lang.Character$UnicodeBlock", + "insertText": "KANBUN" + }, + { + "label": "KANGXI_RADICALS", + "kind": "property", + "documentation": "KANGXI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "KANGXI_RADICALS" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeBlock", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA" + }, + { + "label": "KATAKANA_PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "KATAKANA_PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "KATAKANA_PHONETIC_EXTENSIONS" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeBlock", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeBlock", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeBlock", + "insertText": "KHMER" + }, + { + "label": "KHMER_SYMBOLS", + "kind": "property", + "documentation": "KHMER_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "KHMER_SYMBOLS" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeBlock", + "insertText": "LAO" + }, + { + "label": "LATIN_1_SUPPLEMENT", + "kind": "property", + "documentation": "LATIN_1_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_1_SUPPLEMENT" + }, + { + "label": "LATIN_EXTENDED_A", + "kind": "property", + "documentation": "LATIN_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_A" + }, + { + "label": "LATIN_EXTENDED_ADDITIONAL", + "kind": "property", + "documentation": "LATIN_EXTENDED_ADDITIONAL: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_ADDITIONAL" + }, + { + "label": "LATIN_EXTENDED_B", + "kind": "property", + "documentation": "LATIN_EXTENDED_B: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_B" + }, + { + "label": "LATIN_EXTENDED_C", + "kind": "property", + "documentation": "LATIN_EXTENDED_C: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_C" + }, + { + "label": "LATIN_EXTENDED_D", + "kind": "property", + "documentation": "LATIN_EXTENDED_D: java.lang.Character$UnicodeBlock", + "insertText": "LATIN_EXTENDED_D" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeBlock", + "insertText": "LEPCHA" + }, + { + "label": "LETTERLIKE_SYMBOLS", + "kind": "property", + "documentation": "LETTERLIKE_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "LETTERLIKE_SYMBOLS" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeBlock", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B_IDEOGRAMS", + "kind": "property", + "documentation": "LINEAR_B_IDEOGRAMS: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_IDEOGRAMS" + }, + { + "label": "LINEAR_B_SYLLABARY", + "kind": "property", + "documentation": "LINEAR_B_SYLLABARY: java.lang.Character$UnicodeBlock", + "insertText": "LINEAR_B_SYLLABARY" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeBlock", + "insertText": "LISU" + }, + { + "label": "LOW_SURROGATES", + "kind": "property", + "documentation": "LOW_SURROGATES: java.lang.Character$UnicodeBlock", + "insertText": "LOW_SURROGATES" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeBlock", + "insertText": "LYDIAN" + }, + { + "label": "MAHJONG_TILES", + "kind": "property", + "documentation": "MAHJONG_TILES: java.lang.Character$UnicodeBlock", + "insertText": "MAHJONG_TILES" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeBlock", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeBlock", + "insertText": "MANDAIC" + }, + { + "label": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS", + "kind": "property", + "documentation": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_ALPHANUMERIC_SYMBOLS" + }, + { + "label": "MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "MATHEMATICAL_OPERATORS" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEETEI_MAYEK_EXTENSIONS", + "kind": "property", + "documentation": "MEETEI_MAYEK_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "MEETEI_MAYEK_EXTENSIONS" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeBlock", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeBlock", + "insertText": "MIAO" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" + }, + { + "label": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", + "kind": "property", + "documentation": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" + }, + { + "label": "MISCELLANEOUS_SYMBOLS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_ARROWS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_ARROWS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_ARROWS" + }, + { + "label": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", + "kind": "property", + "documentation": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS" + }, + { + "label": "MISCELLANEOUS_TECHNICAL", + "kind": "property", + "documentation": "MISCELLANEOUS_TECHNICAL: java.lang.Character$UnicodeBlock", + "insertText": "MISCELLANEOUS_TECHNICAL" + }, + { + "label": "MODIFIER_TONE_LETTERS", + "kind": "property", + "documentation": "MODIFIER_TONE_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "MODIFIER_TONE_LETTERS" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeBlock", + "insertText": "MONGOLIAN" + }, + { + "label": "MUSICAL_SYMBOLS", + "kind": "property", + "documentation": "MUSICAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "MUSICAL_SYMBOLS" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR" + }, + { + "label": "MYANMAR_EXTENDED_A", + "kind": "property", + "documentation": "MYANMAR_EXTENDED_A: java.lang.Character$UnicodeBlock", + "insertText": "MYANMAR_EXTENDED_A" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeBlock", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeBlock", + "insertText": "NKO" + }, + { + "label": "NUMBER_FORMS", + "kind": "property", + "documentation": "NUMBER_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "NUMBER_FORMS" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeBlock", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeBlock", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeBlock", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeBlock", + "insertText": "OL_CHIKI" + }, + { + "label": "OPTICAL_CHARACTER_RECOGNITION", + "kind": "property", + "documentation": "OPTICAL_CHARACTER_RECOGNITION: java.lang.Character$UnicodeBlock", + "insertText": "OPTICAL_CHARACTER_RECOGNITION" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeBlock", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeBlock", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeBlock", + "insertText": "PHAGS_PA" + }, + { + "label": "PHAISTOS_DISC", + "kind": "property", + "documentation": "PHAISTOS_DISC: java.lang.Character$UnicodeBlock", + "insertText": "PHAISTOS_DISC" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeBlock", + "insertText": "PHOENICIAN" + }, + { + "label": "PHONETIC_EXTENSIONS", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS" + }, + { + "label": "PHONETIC_EXTENSIONS_SUPPLEMENT", + "kind": "property", + "documentation": "PHONETIC_EXTENSIONS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "PHONETIC_EXTENSIONS_SUPPLEMENT" + }, + { + "label": "PLAYING_CARDS", + "kind": "property", + "documentation": "PLAYING_CARDS: java.lang.Character$UnicodeBlock", + "insertText": "PLAYING_CARDS" + }, + { + "label": "PRIVATE_USE_AREA", + "kind": "property", + "documentation": "PRIVATE_USE_AREA: java.lang.Character$UnicodeBlock", + "insertText": "PRIVATE_USE_AREA" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeBlock", + "insertText": "REJANG" + }, + { + "label": "RUMI_NUMERAL_SYMBOLS", + "kind": "property", + "documentation": "RUMI_NUMERAL_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "RUMI_NUMERAL_SYMBOLS" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeBlock", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeBlock", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeBlock", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeBlock", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeBlock", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeBlock", + "insertText": "SINHALA" + }, + { + "label": "SMALL_FORM_VARIANTS", + "kind": "property", + "documentation": "SMALL_FORM_VARIANTS: java.lang.Character$UnicodeBlock", + "insertText": "SMALL_FORM_VARIANTS" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeBlock", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SPACING_MODIFIER_LETTERS", + "kind": "property", + "documentation": "SPACING_MODIFIER_LETTERS: java.lang.Character$UnicodeBlock", + "insertText": "SPACING_MODIFIER_LETTERS" + }, + { + "label": "SPECIALS", + "kind": "property", + "documentation": "SPECIALS: java.lang.Character$UnicodeBlock", + "insertText": "SPECIALS" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE" + }, + { + "label": "SUNDANESE_SUPPLEMENT", + "kind": "property", + "documentation": "SUNDANESE_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "SUNDANESE_SUPPLEMENT" + }, + { + "label": "SUPERSCRIPTS_AND_SUBSCRIPTS", + "kind": "property", + "documentation": "SUPERSCRIPTS_AND_SUBSCRIPTS: java.lang.Character$UnicodeBlock", + "insertText": "SUPERSCRIPTS_AND_SUBSCRIPTS" + }, + { + "label": "SUPPLEMENTAL_ARROWS_A", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_A" + }, + { + "label": "SUPPLEMENTAL_ARROWS_B", + "kind": "property", + "documentation": "SUPPLEMENTAL_ARROWS_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_ARROWS_B" + }, + { + "label": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS", + "kind": "property", + "documentation": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_MATHEMATICAL_OPERATORS" + }, + { + "label": "SUPPLEMENTAL_PUNCTUATION", + "kind": "property", + "documentation": "SUPPLEMENTAL_PUNCTUATION: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTAL_PUNCTUATION" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_A", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_A: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_A" + }, + { + "label": "SUPPLEMENTARY_PRIVATE_USE_AREA_B", + "kind": "property", + "documentation": "SUPPLEMENTARY_PRIVATE_USE_AREA_B: java.lang.Character$UnicodeBlock", + "insertText": "SUPPLEMENTARY_PRIVATE_USE_AREA_B" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeBlock", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeBlock", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeBlock", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeBlock", + "insertText": "TAGBANWA" + }, + { + "label": "TAGS", + "kind": "property", + "documentation": "TAGS: java.lang.Character$UnicodeBlock", + "insertText": "TAGS" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeBlock", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeBlock", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeBlock", + "insertText": "TAI_VIET" + }, + { + "label": "TAI_XUAN_JING_SYMBOLS", + "kind": "property", + "documentation": "TAI_XUAN_JING_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TAI_XUAN_JING_SYMBOLS" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeBlock", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeBlock", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeBlock", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeBlock", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeBlock", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeBlock", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeBlock", + "insertText": "TIFINAGH" + }, + { + "label": "TRANSPORT_AND_MAP_SYMBOLS", + "kind": "property", + "documentation": "TRANSPORT_AND_MAP_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "TRANSPORT_AND_MAP_SYMBOLS" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeBlock", + "insertText": "UGARITIC" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" + }, + { + "label": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", + "kind": "property", + "documentation": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED: java.lang.Character$UnicodeBlock", + "insertText": "UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeBlock", + "insertText": "VAI" + }, + { + "label": "VARIATION_SELECTORS", + "kind": "property", + "documentation": "VARIATION_SELECTORS: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS" + }, + { + "label": "VARIATION_SELECTORS_SUPPLEMENT", + "kind": "property", + "documentation": "VARIATION_SELECTORS_SUPPLEMENT: java.lang.Character$UnicodeBlock", + "insertText": "VARIATION_SELECTORS_SUPPLEMENT" + }, + { + "label": "VEDIC_EXTENSIONS", + "kind": "property", + "documentation": "VEDIC_EXTENSIONS: java.lang.Character$UnicodeBlock", + "insertText": "VEDIC_EXTENSIONS" + }, + { + "label": "VERTICAL_FORMS", + "kind": "property", + "documentation": "VERTICAL_FORMS: java.lang.Character$UnicodeBlock", + "insertText": "VERTICAL_FORMS" + }, + { + "label": "YIJING_HEXAGRAM_SYMBOLS", + "kind": "property", + "documentation": "YIJING_HEXAGRAM_SYMBOLS: java.lang.Character$UnicodeBlock", + "insertText": "YIJING_HEXAGRAM_SYMBOLS" + }, + { + "label": "YI_RADICALS", + "kind": "property", + "documentation": "YI_RADICALS: java.lang.Character$UnicodeBlock", + "insertText": "YI_RADICALS" + }, + { + "label": "YI_SYLLABLES", + "kind": "property", + "documentation": "YI_SYLLABLES: java.lang.Character$UnicodeBlock", + "insertText": "YI_SYLLABLES" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeBlock", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeBlock", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Character.UnicodeScript", + "kind": "class", + "documentation": "Class: Character.UnicodeScript", + "insertText": "Character.UnicodeScript", + "properties": [ + { + "label": "ARABIC", + "kind": "property", + "documentation": "ARABIC: java.lang.Character$UnicodeScript", + "insertText": "ARABIC" + }, + { + "label": "ARMENIAN", + "kind": "property", + "documentation": "ARMENIAN: java.lang.Character$UnicodeScript", + "insertText": "ARMENIAN" + }, + { + "label": "AVESTAN", + "kind": "property", + "documentation": "AVESTAN: java.lang.Character$UnicodeScript", + "insertText": "AVESTAN" + }, + { + "label": "BALINESE", + "kind": "property", + "documentation": "BALINESE: java.lang.Character$UnicodeScript", + "insertText": "BALINESE" + }, + { + "label": "BAMUM", + "kind": "property", + "documentation": "BAMUM: java.lang.Character$UnicodeScript", + "insertText": "BAMUM" + }, + { + "label": "BATAK", + "kind": "property", + "documentation": "BATAK: java.lang.Character$UnicodeScript", + "insertText": "BATAK" + }, + { + "label": "BENGALI", + "kind": "property", + "documentation": "BENGALI: java.lang.Character$UnicodeScript", + "insertText": "BENGALI" + }, + { + "label": "BOPOMOFO", + "kind": "property", + "documentation": "BOPOMOFO: java.lang.Character$UnicodeScript", + "insertText": "BOPOMOFO" + }, + { + "label": "BRAHMI", + "kind": "property", + "documentation": "BRAHMI: java.lang.Character$UnicodeScript", + "insertText": "BRAHMI" + }, + { + "label": "BRAILLE", + "kind": "property", + "documentation": "BRAILLE: java.lang.Character$UnicodeScript", + "insertText": "BRAILLE" + }, + { + "label": "BUGINESE", + "kind": "property", + "documentation": "BUGINESE: java.lang.Character$UnicodeScript", + "insertText": "BUGINESE" + }, + { + "label": "BUHID", + "kind": "property", + "documentation": "BUHID: java.lang.Character$UnicodeScript", + "insertText": "BUHID" + }, + { + "label": "CANADIAN_ABORIGINAL", + "kind": "property", + "documentation": "CANADIAN_ABORIGINAL: java.lang.Character$UnicodeScript", + "insertText": "CANADIAN_ABORIGINAL" + }, + { + "label": "CARIAN", + "kind": "property", + "documentation": "CARIAN: java.lang.Character$UnicodeScript", + "insertText": "CARIAN" + }, + { + "label": "CHAKMA", + "kind": "property", + "documentation": "CHAKMA: java.lang.Character$UnicodeScript", + "insertText": "CHAKMA" + }, + { + "label": "CHAM", + "kind": "property", + "documentation": "CHAM: java.lang.Character$UnicodeScript", + "insertText": "CHAM" + }, + { + "label": "CHEROKEE", + "kind": "property", + "documentation": "CHEROKEE: java.lang.Character$UnicodeScript", + "insertText": "CHEROKEE" + }, + { + "label": "COMMON", + "kind": "property", + "documentation": "COMMON: java.lang.Character$UnicodeScript", + "insertText": "COMMON" + }, + { + "label": "COPTIC", + "kind": "property", + "documentation": "COPTIC: java.lang.Character$UnicodeScript", + "insertText": "COPTIC" + }, + { + "label": "CUNEIFORM", + "kind": "property", + "documentation": "CUNEIFORM: java.lang.Character$UnicodeScript", + "insertText": "CUNEIFORM" + }, + { + "label": "CYPRIOT", + "kind": "property", + "documentation": "CYPRIOT: java.lang.Character$UnicodeScript", + "insertText": "CYPRIOT" + }, + { + "label": "CYRILLIC", + "kind": "property", + "documentation": "CYRILLIC: java.lang.Character$UnicodeScript", + "insertText": "CYRILLIC" + }, + { + "label": "DESERET", + "kind": "property", + "documentation": "DESERET: java.lang.Character$UnicodeScript", + "insertText": "DESERET" + }, + { + "label": "DEVANAGARI", + "kind": "property", + "documentation": "DEVANAGARI: java.lang.Character$UnicodeScript", + "insertText": "DEVANAGARI" + }, + { + "label": "EGYPTIAN_HIEROGLYPHS", + "kind": "property", + "documentation": "EGYPTIAN_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "EGYPTIAN_HIEROGLYPHS" + }, + { + "label": "ETHIOPIC", + "kind": "property", + "documentation": "ETHIOPIC: java.lang.Character$UnicodeScript", + "insertText": "ETHIOPIC" + }, + { + "label": "GEORGIAN", + "kind": "property", + "documentation": "GEORGIAN: java.lang.Character$UnicodeScript", + "insertText": "GEORGIAN" + }, + { + "label": "GLAGOLITIC", + "kind": "property", + "documentation": "GLAGOLITIC: java.lang.Character$UnicodeScript", + "insertText": "GLAGOLITIC" + }, + { + "label": "GOTHIC", + "kind": "property", + "documentation": "GOTHIC: java.lang.Character$UnicodeScript", + "insertText": "GOTHIC" + }, + { + "label": "GREEK", + "kind": "property", + "documentation": "GREEK: java.lang.Character$UnicodeScript", + "insertText": "GREEK" + }, + { + "label": "GUJARATI", + "kind": "property", + "documentation": "GUJARATI: java.lang.Character$UnicodeScript", + "insertText": "GUJARATI" + }, + { + "label": "GURMUKHI", + "kind": "property", + "documentation": "GURMUKHI: java.lang.Character$UnicodeScript", + "insertText": "GURMUKHI" + }, + { + "label": "HAN", + "kind": "property", + "documentation": "HAN: java.lang.Character$UnicodeScript", + "insertText": "HAN" + }, + { + "label": "HANGUL", + "kind": "property", + "documentation": "HANGUL: java.lang.Character$UnicodeScript", + "insertText": "HANGUL" + }, + { + "label": "HANUNOO", + "kind": "property", + "documentation": "HANUNOO: java.lang.Character$UnicodeScript", + "insertText": "HANUNOO" + }, + { + "label": "HEBREW", + "kind": "property", + "documentation": "HEBREW: java.lang.Character$UnicodeScript", + "insertText": "HEBREW" + }, + { + "label": "HIRAGANA", + "kind": "property", + "documentation": "HIRAGANA: java.lang.Character$UnicodeScript", + "insertText": "HIRAGANA" + }, + { + "label": "IMPERIAL_ARAMAIC", + "kind": "property", + "documentation": "IMPERIAL_ARAMAIC: java.lang.Character$UnicodeScript", + "insertText": "IMPERIAL_ARAMAIC" + }, + { + "label": "INHERITED", + "kind": "property", + "documentation": "INHERITED: java.lang.Character$UnicodeScript", + "insertText": "INHERITED" + }, + { + "label": "INSCRIPTIONAL_PAHLAVI", + "kind": "property", + "documentation": "INSCRIPTIONAL_PAHLAVI: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PAHLAVI" + }, + { + "label": "INSCRIPTIONAL_PARTHIAN", + "kind": "property", + "documentation": "INSCRIPTIONAL_PARTHIAN: java.lang.Character$UnicodeScript", + "insertText": "INSCRIPTIONAL_PARTHIAN" + }, + { + "label": "JAVANESE", + "kind": "property", + "documentation": "JAVANESE: java.lang.Character$UnicodeScript", + "insertText": "JAVANESE" + }, + { + "label": "KAITHI", + "kind": "property", + "documentation": "KAITHI: java.lang.Character$UnicodeScript", + "insertText": "KAITHI" + }, + { + "label": "KANNADA", + "kind": "property", + "documentation": "KANNADA: java.lang.Character$UnicodeScript", + "insertText": "KANNADA" + }, + { + "label": "KATAKANA", + "kind": "property", + "documentation": "KATAKANA: java.lang.Character$UnicodeScript", + "insertText": "KATAKANA" + }, + { + "label": "KAYAH_LI", + "kind": "property", + "documentation": "KAYAH_LI: java.lang.Character$UnicodeScript", + "insertText": "KAYAH_LI" + }, + { + "label": "KHAROSHTHI", + "kind": "property", + "documentation": "KHAROSHTHI: java.lang.Character$UnicodeScript", + "insertText": "KHAROSHTHI" + }, + { + "label": "KHMER", + "kind": "property", + "documentation": "KHMER: java.lang.Character$UnicodeScript", + "insertText": "KHMER" + }, + { + "label": "LAO", + "kind": "property", + "documentation": "LAO: java.lang.Character$UnicodeScript", + "insertText": "LAO" + }, + { + "label": "LATIN", + "kind": "property", + "documentation": "LATIN: java.lang.Character$UnicodeScript", + "insertText": "LATIN" + }, + { + "label": "LEPCHA", + "kind": "property", + "documentation": "LEPCHA: java.lang.Character$UnicodeScript", + "insertText": "LEPCHA" + }, + { + "label": "LIMBU", + "kind": "property", + "documentation": "LIMBU: java.lang.Character$UnicodeScript", + "insertText": "LIMBU" + }, + { + "label": "LINEAR_B", + "kind": "property", + "documentation": "LINEAR_B: java.lang.Character$UnicodeScript", + "insertText": "LINEAR_B" + }, + { + "label": "LISU", + "kind": "property", + "documentation": "LISU: java.lang.Character$UnicodeScript", + "insertText": "LISU" + }, + { + "label": "LYCIAN", + "kind": "property", + "documentation": "LYCIAN: java.lang.Character$UnicodeScript", + "insertText": "LYCIAN" + }, + { + "label": "LYDIAN", + "kind": "property", + "documentation": "LYDIAN: java.lang.Character$UnicodeScript", + "insertText": "LYDIAN" + }, + { + "label": "MALAYALAM", + "kind": "property", + "documentation": "MALAYALAM: java.lang.Character$UnicodeScript", + "insertText": "MALAYALAM" + }, + { + "label": "MANDAIC", + "kind": "property", + "documentation": "MANDAIC: java.lang.Character$UnicodeScript", + "insertText": "MANDAIC" + }, + { + "label": "MEETEI_MAYEK", + "kind": "property", + "documentation": "MEETEI_MAYEK: java.lang.Character$UnicodeScript", + "insertText": "MEETEI_MAYEK" + }, + { + "label": "MEROITIC_CURSIVE", + "kind": "property", + "documentation": "MEROITIC_CURSIVE: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_CURSIVE" + }, + { + "label": "MEROITIC_HIEROGLYPHS", + "kind": "property", + "documentation": "MEROITIC_HIEROGLYPHS: java.lang.Character$UnicodeScript", + "insertText": "MEROITIC_HIEROGLYPHS" + }, + { + "label": "MIAO", + "kind": "property", + "documentation": "MIAO: java.lang.Character$UnicodeScript", + "insertText": "MIAO" + }, + { + "label": "MONGOLIAN", + "kind": "property", + "documentation": "MONGOLIAN: java.lang.Character$UnicodeScript", + "insertText": "MONGOLIAN" + }, + { + "label": "MYANMAR", + "kind": "property", + "documentation": "MYANMAR: java.lang.Character$UnicodeScript", + "insertText": "MYANMAR" + }, + { + "label": "NEW_TAI_LUE", + "kind": "property", + "documentation": "NEW_TAI_LUE: java.lang.Character$UnicodeScript", + "insertText": "NEW_TAI_LUE" + }, + { + "label": "NKO", + "kind": "property", + "documentation": "NKO: java.lang.Character$UnicodeScript", + "insertText": "NKO" + }, + { + "label": "OGHAM", + "kind": "property", + "documentation": "OGHAM: java.lang.Character$UnicodeScript", + "insertText": "OGHAM" + }, + { + "label": "OLD_ITALIC", + "kind": "property", + "documentation": "OLD_ITALIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_ITALIC" + }, + { + "label": "OLD_PERSIAN", + "kind": "property", + "documentation": "OLD_PERSIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_PERSIAN" + }, + { + "label": "OLD_SOUTH_ARABIAN", + "kind": "property", + "documentation": "OLD_SOUTH_ARABIAN: java.lang.Character$UnicodeScript", + "insertText": "OLD_SOUTH_ARABIAN" + }, + { + "label": "OLD_TURKIC", + "kind": "property", + "documentation": "OLD_TURKIC: java.lang.Character$UnicodeScript", + "insertText": "OLD_TURKIC" + }, + { + "label": "OL_CHIKI", + "kind": "property", + "documentation": "OL_CHIKI: java.lang.Character$UnicodeScript", + "insertText": "OL_CHIKI" + }, + { + "label": "ORIYA", + "kind": "property", + "documentation": "ORIYA: java.lang.Character$UnicodeScript", + "insertText": "ORIYA" + }, + { + "label": "OSMANYA", + "kind": "property", + "documentation": "OSMANYA: java.lang.Character$UnicodeScript", + "insertText": "OSMANYA" + }, + { + "label": "PHAGS_PA", + "kind": "property", + "documentation": "PHAGS_PA: java.lang.Character$UnicodeScript", + "insertText": "PHAGS_PA" + }, + { + "label": "PHOENICIAN", + "kind": "property", + "documentation": "PHOENICIAN: java.lang.Character$UnicodeScript", + "insertText": "PHOENICIAN" + }, + { + "label": "REJANG", + "kind": "property", + "documentation": "REJANG: java.lang.Character$UnicodeScript", + "insertText": "REJANG" + }, + { + "label": "RUNIC", + "kind": "property", + "documentation": "RUNIC: java.lang.Character$UnicodeScript", + "insertText": "RUNIC" + }, + { + "label": "SAMARITAN", + "kind": "property", + "documentation": "SAMARITAN: java.lang.Character$UnicodeScript", + "insertText": "SAMARITAN" + }, + { + "label": "SAURASHTRA", + "kind": "property", + "documentation": "SAURASHTRA: java.lang.Character$UnicodeScript", + "insertText": "SAURASHTRA" + }, + { + "label": "SHARADA", + "kind": "property", + "documentation": "SHARADA: java.lang.Character$UnicodeScript", + "insertText": "SHARADA" + }, + { + "label": "SHAVIAN", + "kind": "property", + "documentation": "SHAVIAN: java.lang.Character$UnicodeScript", + "insertText": "SHAVIAN" + }, + { + "label": "SINHALA", + "kind": "property", + "documentation": "SINHALA: java.lang.Character$UnicodeScript", + "insertText": "SINHALA" + }, + { + "label": "SORA_SOMPENG", + "kind": "property", + "documentation": "SORA_SOMPENG: java.lang.Character$UnicodeScript", + "insertText": "SORA_SOMPENG" + }, + { + "label": "SUNDANESE", + "kind": "property", + "documentation": "SUNDANESE: java.lang.Character$UnicodeScript", + "insertText": "SUNDANESE" + }, + { + "label": "SYLOTI_NAGRI", + "kind": "property", + "documentation": "SYLOTI_NAGRI: java.lang.Character$UnicodeScript", + "insertText": "SYLOTI_NAGRI" + }, + { + "label": "SYRIAC", + "kind": "property", + "documentation": "SYRIAC: java.lang.Character$UnicodeScript", + "insertText": "SYRIAC" + }, + { + "label": "TAGALOG", + "kind": "property", + "documentation": "TAGALOG: java.lang.Character$UnicodeScript", + "insertText": "TAGALOG" + }, + { + "label": "TAGBANWA", + "kind": "property", + "documentation": "TAGBANWA: java.lang.Character$UnicodeScript", + "insertText": "TAGBANWA" + }, + { + "label": "TAI_LE", + "kind": "property", + "documentation": "TAI_LE: java.lang.Character$UnicodeScript", + "insertText": "TAI_LE" + }, + { + "label": "TAI_THAM", + "kind": "property", + "documentation": "TAI_THAM: java.lang.Character$UnicodeScript", + "insertText": "TAI_THAM" + }, + { + "label": "TAI_VIET", + "kind": "property", + "documentation": "TAI_VIET: java.lang.Character$UnicodeScript", + "insertText": "TAI_VIET" + }, + { + "label": "TAKRI", + "kind": "property", + "documentation": "TAKRI: java.lang.Character$UnicodeScript", + "insertText": "TAKRI" + }, + { + "label": "TAMIL", + "kind": "property", + "documentation": "TAMIL: java.lang.Character$UnicodeScript", + "insertText": "TAMIL" + }, + { + "label": "TELUGU", + "kind": "property", + "documentation": "TELUGU: java.lang.Character$UnicodeScript", + "insertText": "TELUGU" + }, + { + "label": "THAANA", + "kind": "property", + "documentation": "THAANA: java.lang.Character$UnicodeScript", + "insertText": "THAANA" + }, + { + "label": "THAI", + "kind": "property", + "documentation": "THAI: java.lang.Character$UnicodeScript", + "insertText": "THAI" + }, + { + "label": "TIBETAN", + "kind": "property", + "documentation": "TIBETAN: java.lang.Character$UnicodeScript", + "insertText": "TIBETAN" + }, + { + "label": "TIFINAGH", + "kind": "property", + "documentation": "TIFINAGH: java.lang.Character$UnicodeScript", + "insertText": "TIFINAGH" + }, + { + "label": "UGARITIC", + "kind": "property", + "documentation": "UGARITIC: java.lang.Character$UnicodeScript", + "insertText": "UGARITIC" + }, + { + "label": "UNKNOWN", + "kind": "property", + "documentation": "UNKNOWN: java.lang.Character$UnicodeScript", + "insertText": "UNKNOWN" + }, + { + "label": "VAI", + "kind": "property", + "documentation": "VAI: java.lang.Character$UnicodeScript", + "insertText": "VAI" + }, + { + "label": "YI", + "kind": "property", + "documentation": "YI: java.lang.Character$UnicodeScript", + "insertText": "YI" + }, + { + "label": "forName", + "kind": "method", + "documentation": "forName(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "forName" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.lang.Character$UnicodeScript", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.lang.Character$UnicodeScript", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.lang.Character$UnicodeScript;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ClassCastException", + "kind": "class", + "documentation": "Class: ClassCastException", + "insertText": "ClassCastException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassCastException", + "kind": "constructor", + "documentation": "Constructor: ClassCastException", + "insertText": "ClassCastException" + } + }, + { + "label": "ClassNotFoundException", + "kind": "class", + "documentation": "Class: ClassNotFoundException", + "insertText": "ClassNotFoundException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ClassNotFoundException", + "kind": "constructor", + "documentation": "Constructor: ClassNotFoundException", + "insertText": "ClassNotFoundException" + } + }, + { + "label": "CloneNotSupportedException", + "kind": "class", + "documentation": "Class: CloneNotSupportedException", + "insertText": "CloneNotSupportedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "CloneNotSupportedException", + "kind": "constructor", + "documentation": "Constructor: CloneNotSupportedException", + "insertText": "CloneNotSupportedException" + } + }, + { + "label": "Comparable", + "kind": "class", + "documentation": "Class: Comparable", + "insertText": "Comparable", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Double", + "kind": "class", + "documentation": "Class: Double", + "insertText": "Double", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: double", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: double", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: double", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: double", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: double", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: double", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(double a, double b): int", + "insertText": "compare" + }, + { + "label": "doubleToLongBits", + "kind": "method", + "documentation": "doubleToLongBits(double a): long", + "insertText": "doubleToLongBits" + }, + { + "label": "doubleToRawLongBits", + "kind": "method", + "documentation": "doubleToRawLongBits(double a): long", + "insertText": "doubleToRawLongBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(double a): int", + "insertText": "hashCode" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(double a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(double a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(double a): boolean", + "insertText": "isNaN" + }, + { + "label": "longBitsToDouble", + "kind": "method", + "documentation": "longBitsToDouble(long a): double", + "insertText": "longBitsToDouble" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "parseDouble", + "kind": "method", + "documentation": "parseDouble(java.lang.String a): double", + "insertText": "parseDouble" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(double a, double b): double", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(double a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(double a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.lang.Double", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Double a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Enum", + "kind": "class", + "documentation": "Class: Enum", + "insertText": "Enum", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EnumConstantNotPresentException", + "kind": "class", + "documentation": "Class: EnumConstantNotPresentException", + "insertText": "EnumConstantNotPresentException", + "properties": [ + { + "label": "constantName", + "kind": "method", + "documentation": "constantName(): java.lang.String", + "insertText": "constantName" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Exception", + "kind": "class", + "documentation": "Class: Exception", + "insertText": "Exception", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Exception", + "kind": "constructor", + "documentation": "Constructor: Exception", + "insertText": "Exception" + } + }, + { + "label": "Float", + "kind": "class", + "documentation": "Class: Float", + "insertText": "Float", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_EXPONENT", + "kind": "property", + "documentation": "MAX_EXPONENT: int", + "insertText": "MAX_EXPONENT" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: float", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_EXPONENT", + "kind": "property", + "documentation": "MIN_EXPONENT: int", + "insertText": "MIN_EXPONENT" + }, + { + "label": "MIN_NORMAL", + "kind": "property", + "documentation": "MIN_NORMAL: float", + "insertText": "MIN_NORMAL" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: float", + "insertText": "MIN_VALUE" + }, + { + "label": "NEGATIVE_INFINITY", + "kind": "property", + "documentation": "NEGATIVE_INFINITY: float", + "insertText": "NEGATIVE_INFINITY" + }, + { + "label": "NaN", + "kind": "property", + "documentation": "NaN: float", + "insertText": "NaN" + }, + { + "label": "POSITIVE_INFINITY", + "kind": "property", + "documentation": "POSITIVE_INFINITY: float", + "insertText": "POSITIVE_INFINITY" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(float a, float b): int", + "insertText": "compare" + }, + { + "label": "floatToIntBits", + "kind": "method", + "documentation": "floatToIntBits(float a): int", + "insertText": "floatToIntBits" + }, + { + "label": "floatToRawIntBits", + "kind": "method", + "documentation": "floatToRawIntBits(float a): int", + "insertText": "floatToRawIntBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(float a): int", + "insertText": "hashCode" + }, + { + "label": "intBitsToFloat", + "kind": "method", + "documentation": "intBitsToFloat(int a): float", + "insertText": "intBitsToFloat" + }, + { + "label": "isFinite", + "kind": "method", + "documentation": "isFinite(float a): boolean", + "insertText": "isFinite" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(float a): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(float a): boolean", + "insertText": "isNaN" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(float a, float b): float", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(float a, float b): float", + "insertText": "min" + }, + { + "label": "parseFloat", + "kind": "method", + "documentation": "parseFloat(java.lang.String a): float", + "insertText": "parseFloat" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(float a, float b): float", + "insertText": "sum" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(float a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(float a): java.lang.String", + "insertText": "toString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(float a): java.lang.Float", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Float a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "isInfinite", + "kind": "method", + "documentation": "isInfinite(): boolean", + "insertText": "isInfinite" + }, + { + "label": "isNaN", + "kind": "method", + "documentation": "isNaN(): boolean", + "insertText": "isNaN" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalAccessException", + "kind": "class", + "documentation": "Class: IllegalAccessException", + "insertText": "IllegalAccessException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalAccessException", + "kind": "constructor", + "documentation": "Constructor: IllegalAccessException", + "insertText": "IllegalAccessException" + } + }, + { + "label": "IllegalArgumentException", + "kind": "class", + "documentation": "Class: IllegalArgumentException", + "insertText": "IllegalArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalArgumentException", + "kind": "constructor", + "documentation": "Constructor: IllegalArgumentException", + "insertText": "IllegalArgumentException" + } + }, + { + "label": "IllegalMonitorStateException", + "kind": "class", + "documentation": "Class: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalMonitorStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalMonitorStateException", + "insertText": "IllegalMonitorStateException" + } + }, + { + "label": "IllegalStateException", + "kind": "class", + "documentation": "Class: IllegalStateException", + "insertText": "IllegalStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalStateException", + "insertText": "IllegalStateException" + } + }, + { + "label": "IllegalThreadStateException", + "kind": "class", + "documentation": "Class: IllegalThreadStateException", + "insertText": "IllegalThreadStateException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalThreadStateException", + "kind": "constructor", + "documentation": "Constructor: IllegalThreadStateException", + "insertText": "IllegalThreadStateException" + } + }, + { + "label": "IndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: IndexOutOfBoundsException", + "insertText": "IndexOutOfBoundsException" + } + }, + { + "label": "InstantiationException", + "kind": "class", + "documentation": "Class: InstantiationException", + "insertText": "InstantiationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InstantiationException", + "kind": "constructor", + "documentation": "Constructor: InstantiationException", + "insertText": "InstantiationException" + } + }, + { + "label": "Integer", + "kind": "class", + "documentation": "Class: Integer", + "insertText": "Integer", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(int a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(int a, int b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(int a, int b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Integer", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(int a, int b): int", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(int a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(int a): int", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(int a): int", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(int a, int b): int", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(int a, int b): int", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(int a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(int a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseInt", + "kind": "method", + "documentation": "parseInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseInt" + }, + { + "label": "parseUnsignedInt", + "kind": "method", + "documentation": "parseUnsignedInt(java.lang.String a, int b | java.lang.String a): int", + "insertText": "parseUnsignedInt" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(int a, int b): int", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(int a): int", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(int a): int", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(int a, int b): int", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(int a, int b): int", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(int a): int", + "insertText": "signum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(int a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(int a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(int a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a, int b | int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(int a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(int a, int b | int a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | int a): java.lang.Integer", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Integer a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "InterruptedException", + "kind": "class", + "documentation": "Class: InterruptedException", + "insertText": "InterruptedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InterruptedException", + "kind": "constructor", + "documentation": "Constructor: InterruptedException", + "insertText": "InterruptedException" + } + }, + { + "label": "Iterable", + "kind": "class", + "documentation": "Class: Iterable", + "insertText": "Iterable", + "properties": [ + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Long", + "kind": "class", + "documentation": "Class: Long", + "insertText": "Long", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: long", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: long", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(long a): int", + "insertText": "bitCount" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(long a, long b): int", + "insertText": "compare" + }, + { + "label": "compareUnsigned", + "kind": "method", + "documentation": "compareUnsigned(long a, long b): int", + "insertText": "compareUnsigned" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Long", + "insertText": "decode" + }, + { + "label": "divideUnsigned", + "kind": "method", + "documentation": "divideUnsigned(long a, long b): long", + "insertText": "divideUnsigned" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(long a): int", + "insertText": "hashCode" + }, + { + "label": "highestOneBit", + "kind": "method", + "documentation": "highestOneBit(long a): long", + "insertText": "highestOneBit" + }, + { + "label": "lowestOneBit", + "kind": "method", + "documentation": "lowestOneBit(long a): long", + "insertText": "lowestOneBit" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(long a, long b): long", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(long a, long b): long", + "insertText": "min" + }, + { + "label": "numberOfLeadingZeros", + "kind": "method", + "documentation": "numberOfLeadingZeros(long a): int", + "insertText": "numberOfLeadingZeros" + }, + { + "label": "numberOfTrailingZeros", + "kind": "method", + "documentation": "numberOfTrailingZeros(long a): int", + "insertText": "numberOfTrailingZeros" + }, + { + "label": "parseLong", + "kind": "method", + "documentation": "parseLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseLong" + }, + { + "label": "parseUnsignedLong", + "kind": "method", + "documentation": "parseUnsignedLong(java.lang.String a, int b | java.lang.String a): long", + "insertText": "parseUnsignedLong" + }, + { + "label": "remainderUnsigned", + "kind": "method", + "documentation": "remainderUnsigned(long a, long b): long", + "insertText": "remainderUnsigned" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(long a): long", + "insertText": "reverse" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(long a): long", + "insertText": "reverseBytes" + }, + { + "label": "rotateLeft", + "kind": "method", + "documentation": "rotateLeft(long a, int b): long", + "insertText": "rotateLeft" + }, + { + "label": "rotateRight", + "kind": "method", + "documentation": "rotateRight(long a, int b): long", + "insertText": "rotateRight" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(long a): int", + "insertText": "signum" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(long a, long b): long", + "insertText": "sum" + }, + { + "label": "toBinaryString", + "kind": "method", + "documentation": "toBinaryString(long a): java.lang.String", + "insertText": "toBinaryString" + }, + { + "label": "toHexString", + "kind": "method", + "documentation": "toHexString(long a): java.lang.String", + "insertText": "toHexString" + }, + { + "label": "toOctalString", + "kind": "method", + "documentation": "toOctalString(long a): java.lang.String", + "insertText": "toOctalString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(long a, int b | long a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedString", + "kind": "method", + "documentation": "toUnsignedString(long a, int b | long a): java.lang.String", + "insertText": "toUnsignedString" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | long a): java.lang.Long", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Long a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Math", + "kind": "class", + "documentation": "Class: Math", + "insertText": "Math", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NegativeArraySizeException", + "kind": "class", + "documentation": "Class: NegativeArraySizeException", + "insertText": "NegativeArraySizeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NegativeArraySizeException", + "kind": "constructor", + "documentation": "Constructor: NegativeArraySizeException", + "insertText": "NegativeArraySizeException" + } + }, + { + "label": "NoSuchFieldException", + "kind": "class", + "documentation": "Class: NoSuchFieldException", + "insertText": "NoSuchFieldException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchFieldException", + "kind": "constructor", + "documentation": "Constructor: NoSuchFieldException", + "insertText": "NoSuchFieldException" + } + }, + { + "label": "NoSuchMethodException", + "kind": "class", + "documentation": "Class: NoSuchMethodException", + "insertText": "NoSuchMethodException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchMethodException", + "kind": "constructor", + "documentation": "Constructor: NoSuchMethodException", + "insertText": "NoSuchMethodException" + } + }, + { + "label": "NullPointerException", + "kind": "class", + "documentation": "Class: NullPointerException", + "insertText": "NullPointerException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NullPointerException", + "kind": "constructor", + "documentation": "Constructor: NullPointerException", + "insertText": "NullPointerException" + } + }, + { + "label": "Number", + "kind": "class", + "documentation": "Class: Number", + "insertText": "Number", + "properties": [ + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormatException", + "kind": "class", + "documentation": "Class: NumberFormatException", + "insertText": "NumberFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NumberFormatException", + "kind": "constructor", + "documentation": "Constructor: NumberFormatException", + "insertText": "NumberFormatException" + } + }, + { + "label": "Object", + "kind": "class", + "documentation": "Class: Object", + "insertText": "Object", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ReflectiveOperationException", + "kind": "class", + "documentation": "Class: ReflectiveOperationException", + "insertText": "ReflectiveOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ReflectiveOperationException", + "kind": "constructor", + "documentation": "Constructor: ReflectiveOperationException", + "insertText": "ReflectiveOperationException" + } + }, + { + "label": "RuntimeException", + "kind": "class", + "documentation": "Class: RuntimeException", + "insertText": "RuntimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuntimeException", + "kind": "constructor", + "documentation": "Constructor: RuntimeException", + "insertText": "RuntimeException" + } + }, + { + "label": "SecurityException", + "kind": "class", + "documentation": "Class: SecurityException", + "insertText": "SecurityException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SecurityException", + "kind": "constructor", + "documentation": "Constructor: SecurityException", + "insertText": "SecurityException" + } + }, + { + "label": "Short", + "kind": "class", + "documentation": "Class: Short", + "insertText": "Short", + "properties": [ + { + "label": "BYTES", + "kind": "property", + "documentation": "BYTES: int", + "insertText": "BYTES" + }, + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: short", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: short", + "insertText": "MIN_VALUE" + }, + { + "label": "SIZE", + "kind": "property", + "documentation": "SIZE: int", + "insertText": "SIZE" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(short a, short b): int", + "insertText": "compare" + }, + { + "label": "decode", + "kind": "method", + "documentation": "decode(java.lang.String a): java.lang.Short", + "insertText": "decode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(short a): int", + "insertText": "hashCode" + }, + { + "label": "parseShort", + "kind": "method", + "documentation": "parseShort(java.lang.String a, int b | java.lang.String a): short", + "insertText": "parseShort" + }, + { + "label": "reverseBytes", + "kind": "method", + "documentation": "reverseBytes(short a): short", + "insertText": "reverseBytes" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(short a): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUnsignedInt", + "kind": "method", + "documentation": "toUnsignedInt(short a): int", + "insertText": "toUnsignedInt" + }, + { + "label": "toUnsignedLong", + "kind": "method", + "documentation": "toUnsignedLong(short a): long", + "insertText": "toUnsignedLong" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a, int b | short a): java.lang.Short", + "insertText": "valueOf" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Short a): int", + "insertText": "compareTo" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "StackTraceElement", + "kind": "class", + "documentation": "Class: StackTraceElement", + "insertText": "StackTraceElement", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getFileName", + "kind": "method", + "documentation": "getFileName(): java.lang.String", + "insertText": "getFileName" + }, + { + "label": "getLineNumber", + "kind": "method", + "documentation": "getLineNumber(): int", + "insertText": "getLineNumber" + }, + { + "label": "getMethodName", + "kind": "method", + "documentation": "getMethodName(): java.lang.String", + "insertText": "getMethodName" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNativeMethod", + "kind": "method", + "documentation": "isNativeMethod(): boolean", + "insertText": "isNativeMethod" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StackTraceElement", + "kind": "constructor", + "documentation": "Constructor: StackTraceElement", + "insertText": "StackTraceElement" + } + }, + { + "label": "StrictMath", + "kind": "class", + "documentation": "Class: StrictMath", + "insertText": "StrictMath", + "properties": [ + { + "label": "E", + "kind": "property", + "documentation": "E: double", + "insertText": "E" + }, + { + "label": "PI", + "kind": "property", + "documentation": "PI: double", + "insertText": "PI" + }, + { + "label": "IEEEremainder", + "kind": "method", + "documentation": "IEEEremainder(double a, double b): double", + "insertText": "IEEEremainder" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(double a): double", + "insertText": "abs" + }, + { + "label": "acos", + "kind": "method", + "documentation": "acos(double a): double", + "insertText": "acos" + }, + { + "label": "asin", + "kind": "method", + "documentation": "asin(double a): double", + "insertText": "asin" + }, + { + "label": "atan", + "kind": "method", + "documentation": "atan(double a): double", + "insertText": "atan" + }, + { + "label": "atan2", + "kind": "method", + "documentation": "atan2(double a, double b): double", + "insertText": "atan2" + }, + { + "label": "cbrt", + "kind": "method", + "documentation": "cbrt(double a): double", + "insertText": "cbrt" + }, + { + "label": "ceil", + "kind": "method", + "documentation": "ceil(double a): double", + "insertText": "ceil" + }, + { + "label": "copySign", + "kind": "method", + "documentation": "copySign(double a, double b): double", + "insertText": "copySign" + }, + { + "label": "cos", + "kind": "method", + "documentation": "cos(double a): double", + "insertText": "cos" + }, + { + "label": "cosh", + "kind": "method", + "documentation": "cosh(double a): double", + "insertText": "cosh" + }, + { + "label": "exp", + "kind": "method", + "documentation": "exp(double a): double", + "insertText": "exp" + }, + { + "label": "expm1", + "kind": "method", + "documentation": "expm1(double a): double", + "insertText": "expm1" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(double a): double", + "insertText": "floor" + }, + { + "label": "hypot", + "kind": "method", + "documentation": "hypot(double a, double b): double", + "insertText": "hypot" + }, + { + "label": "log", + "kind": "method", + "documentation": "log(double a): double", + "insertText": "log" + }, + { + "label": "log10", + "kind": "method", + "documentation": "log10(double a): double", + "insertText": "log10" + }, + { + "label": "log1p", + "kind": "method", + "documentation": "log1p(double a): double", + "insertText": "log1p" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(double a, double b): double", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(double a, double b): double", + "insertText": "min" + }, + { + "label": "nextAfter", + "kind": "method", + "documentation": "nextAfter(double a, double b): double", + "insertText": "nextAfter" + }, + { + "label": "nextDown", + "kind": "method", + "documentation": "nextDown(double a): double", + "insertText": "nextDown" + }, + { + "label": "nextUp", + "kind": "method", + "documentation": "nextUp(double a): double", + "insertText": "nextUp" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(double a, double b): double", + "insertText": "pow" + }, + { + "label": "random", + "kind": "method", + "documentation": "random(): double", + "insertText": "random" + }, + { + "label": "rint", + "kind": "method", + "documentation": "rint(double a): double", + "insertText": "rint" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(double a): long", + "insertText": "round" + }, + { + "label": "scalb", + "kind": "method", + "documentation": "scalb(double a, int b): double", + "insertText": "scalb" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(double a): double", + "insertText": "signum" + }, + { + "label": "sin", + "kind": "method", + "documentation": "sin(double a): double", + "insertText": "sin" + }, + { + "label": "sinh", + "kind": "method", + "documentation": "sinh(double a): double", + "insertText": "sinh" + }, + { + "label": "sqrt", + "kind": "method", + "documentation": "sqrt(double a): double", + "insertText": "sqrt" + }, + { + "label": "tan", + "kind": "method", + "documentation": "tan(double a): double", + "insertText": "tan" + }, + { + "label": "tanh", + "kind": "method", + "documentation": "tanh(double a): double", + "insertText": "tanh" + }, + { + "label": "toDegrees", + "kind": "method", + "documentation": "toDegrees(double a): double", + "insertText": "toDegrees" + }, + { + "label": "toRadians", + "kind": "method", + "documentation": "toRadians(double a): double", + "insertText": "toRadians" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(double a): double", + "insertText": "ulp" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "String", + "kind": "class", + "documentation": "Class: String", + "insertText": "String", + "properties": [ + { + "label": "copyValueOf", + "kind": "method", + "documentation": "copyValueOf([C a, int b, int c | [C a): java.lang.String", + "insertText": "copyValueOf" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.lang.String", + "insertText": "format" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.CharSequence a, java.lang.Iterable b): java.lang.String", + "insertText": "join" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(org.elasticsearch.painless.lookup.def a): java.lang.String", + "insertText": "valueOf" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.String a): int", + "insertText": "compareTo" + }, + { + "label": "compareToIgnoreCase", + "kind": "method", + "documentation": "compareToIgnoreCase(java.lang.String a): int", + "insertText": "compareToIgnoreCase" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.lang.String a): java.lang.String", + "insertText": "concat" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(java.lang.CharSequence a): boolean", + "insertText": "contains" + }, + { + "label": "contentEquals", + "kind": "method", + "documentation": "contentEquals(java.lang.CharSequence a): boolean", + "insertText": "contentEquals" + }, + { + "label": "decodeBase64", + "kind": "method", + "documentation": "decodeBase64(): java.lang.String", + "insertText": "decodeBase64" + }, + { + "label": "encodeBase64", + "kind": "method", + "documentation": "encodeBase64(): java.lang.String", + "insertText": "encodeBase64" + }, + { + "label": "endsWith", + "kind": "method", + "documentation": "endsWith(java.lang.String a): boolean", + "insertText": "endsWith" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "equalsIgnoreCase", + "kind": "method", + "documentation": "equalsIgnoreCase(java.lang.String a): boolean", + "insertText": "equalsIgnoreCase" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "regionMatches", + "kind": "method", + "documentation": "regionMatches(boolean a, int b, java.lang.String c, int d, int e | int a, java.lang.String b, int c, int d): boolean", + "insertText": "regionMatches" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(java.lang.CharSequence a, java.lang.CharSequence b): java.lang.String", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "splitOnToken", + "kind": "method", + "documentation": "splitOnToken(java.lang.String a, int b | java.lang.String a): [Ljava.lang.String;", + "insertText": "splitOnToken" + }, + { + "label": "startsWith", + "kind": "method", + "documentation": "startsWith(java.lang.String a, int b | java.lang.String a): boolean", + "insertText": "startsWith" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toCharArray", + "kind": "method", + "documentation": "toCharArray(): [C", + "insertText": "toCharArray" + }, + { + "label": "toLowerCase", + "kind": "method", + "documentation": "toLowerCase(java.util.Locale a): java.lang.String", + "insertText": "toLowerCase" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toUpperCase", + "kind": "method", + "documentation": "toUpperCase(java.util.Locale a): java.lang.String", + "insertText": "toUpperCase" + }, + { + "label": "trim", + "kind": "method", + "documentation": "trim(): java.lang.String", + "insertText": "trim" + } + ], + "constructorDefinition": { + "label": "String", + "kind": "constructor", + "documentation": "Constructor: String", + "insertText": "String" + } + }, + { + "label": "StringBuffer", + "kind": "class", + "documentation": "Class: StringBuffer", + "insertText": "StringBuffer", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuffer", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuffer", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuffer", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuffer", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuffer", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuffer", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuffer", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuffer", + "kind": "constructor", + "documentation": "Constructor: StringBuffer", + "insertText": "StringBuffer" + } + }, + { + "label": "StringBuilder", + "kind": "class", + "documentation": "Class: StringBuilder", + "insertText": "StringBuilder", + "properties": [ + { + "label": "append", + "kind": "method", + "documentation": "append(java.lang.CharSequence a, int b, int c | org.elasticsearch.painless.lookup.def a): java.lang.StringBuilder", + "insertText": "append" + }, + { + "label": "appendCodePoint", + "kind": "method", + "documentation": "appendCodePoint(int a): java.lang.StringBuilder", + "insertText": "appendCodePoint" + }, + { + "label": "capacity", + "kind": "method", + "documentation": "capacity(): int", + "insertText": "capacity" + }, + { + "label": "charAt", + "kind": "method", + "documentation": "charAt(int a): char", + "insertText": "charAt" + }, + { + "label": "chars", + "kind": "method", + "documentation": "chars(): java.util.stream.IntStream", + "insertText": "chars" + }, + { + "label": "codePointAt", + "kind": "method", + "documentation": "codePointAt(int a): int", + "insertText": "codePointAt" + }, + { + "label": "codePointBefore", + "kind": "method", + "documentation": "codePointBefore(int a): int", + "insertText": "codePointBefore" + }, + { + "label": "codePointCount", + "kind": "method", + "documentation": "codePointCount(int a, int b): int", + "insertText": "codePointCount" + }, + { + "label": "codePoints", + "kind": "method", + "documentation": "codePoints(): java.util.stream.IntStream", + "insertText": "codePoints" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "delete", + "kind": "method", + "documentation": "delete(int a, int b): java.lang.StringBuilder", + "insertText": "delete" + }, + { + "label": "deleteCharAt", + "kind": "method", + "documentation": "deleteCharAt(int a): java.lang.StringBuilder", + "insertText": "deleteCharAt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getChars", + "kind": "method", + "documentation": "getChars(int a, int b, [C c, int d): void", + "insertText": "getChars" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "indexOf" + }, + { + "label": "insert", + "kind": "method", + "documentation": "insert(int a, org.elasticsearch.painless.lookup.def b): java.lang.StringBuilder", + "insertText": "insert" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(java.lang.String a, int b | java.lang.String a): int", + "insertText": "lastIndexOf" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "offsetByCodePoints", + "kind": "method", + "documentation": "offsetByCodePoints(int a, int b): int", + "insertText": "offsetByCodePoints" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(int a, int b, java.lang.String c): java.lang.StringBuilder", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.util.regex.Pattern a, java.util.function.Function b): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(): java.lang.StringBuilder", + "insertText": "reverse" + }, + { + "label": "setCharAt", + "kind": "method", + "documentation": "setCharAt(int a, char b): void", + "insertText": "setCharAt" + }, + { + "label": "setLength", + "kind": "method", + "documentation": "setLength(int a): void", + "insertText": "setLength" + }, + { + "label": "subSequence", + "kind": "method", + "documentation": "subSequence(int a, int b): java.lang.CharSequence", + "insertText": "subSequence" + }, + { + "label": "substring", + "kind": "method", + "documentation": "substring(int a, int b | int a): java.lang.String", + "insertText": "substring" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringBuilder", + "kind": "constructor", + "documentation": "Constructor: StringBuilder", + "insertText": "StringBuilder" + } + }, + { + "label": "StringIndexOutOfBoundsException", + "kind": "class", + "documentation": "Class: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringIndexOutOfBoundsException", + "kind": "constructor", + "documentation": "Constructor: StringIndexOutOfBoundsException", + "insertText": "StringIndexOutOfBoundsException" + } + }, + { + "label": "System", + "kind": "class", + "documentation": "Class: System", + "insertText": "System", + "properties": [ + { + "label": "arraycopy", + "kind": "method", + "documentation": "arraycopy(java.lang.Object a, int b, java.lang.Object c, int d, int e): void", + "insertText": "arraycopy" + }, + { + "label": "currentTimeMillis", + "kind": "method", + "documentation": "currentTimeMillis(): long", + "insertText": "currentTimeMillis" + }, + { + "label": "nanoTime", + "kind": "method", + "documentation": "nanoTime(): long", + "insertText": "nanoTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TypeNotPresentException", + "kind": "class", + "documentation": "Class: TypeNotPresentException", + "insertText": "TypeNotPresentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "typeName", + "kind": "method", + "documentation": "typeName(): java.lang.String", + "insertText": "typeName" + } + ] + }, + { + "label": "UnsupportedOperationException", + "kind": "class", + "documentation": "Class: UnsupportedOperationException", + "insertText": "UnsupportedOperationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedOperationException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedOperationException", + "insertText": "UnsupportedOperationException" + } + }, + { + "label": "Void", + "kind": "class", + "documentation": "Class: Void", + "insertText": "Void", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BigDecimal", + "kind": "class", + "documentation": "Class: BigDecimal", + "insertText": "BigDecimal", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigDecimal", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigDecimal", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigDecimal", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(double a): java.math.BigDecimal", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(java.math.MathContext a): java.math.BigDecimal", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "add" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigDecimal a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): [Ljava.math.BigDecimal;", + "insertText": "divideAndRemainder" + }, + { + "label": "divideToIntegralValue", + "kind": "method", + "documentation": "divideToIntegralValue(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "divideToIntegralValue" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "min" + }, + { + "label": "movePointLeft", + "kind": "method", + "documentation": "movePointLeft(int a): java.math.BigDecimal", + "insertText": "movePointLeft" + }, + { + "label": "movePointRight", + "kind": "method", + "documentation": "movePointRight(int a): java.math.BigDecimal", + "insertText": "movePointRight" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(java.math.MathContext a): java.math.BigDecimal", + "insertText": "negate" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.math.MathContext a): java.math.BigDecimal", + "insertText": "plus" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a, java.math.MathContext b | int a): java.math.BigDecimal", + "insertText": "pow" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): int", + "insertText": "precision" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "remainder" + }, + { + "label": "round", + "kind": "method", + "documentation": "round(java.math.MathContext a): java.math.BigDecimal", + "insertText": "round" + }, + { + "label": "scale", + "kind": "method", + "documentation": "scale(): int", + "insertText": "scale" + }, + { + "label": "scaleByPowerOfTen", + "kind": "method", + "documentation": "scaleByPowerOfTen(int a): java.math.BigDecimal", + "insertText": "scaleByPowerOfTen" + }, + { + "label": "setScale", + "kind": "method", + "documentation": "setScale(int a, java.math.RoundingMode b | int a): java.math.BigDecimal", + "insertText": "setScale" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "stripTrailingZeros", + "kind": "method", + "documentation": "stripTrailingZeros(): java.math.BigDecimal", + "insertText": "stripTrailingZeros" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigDecimal a, java.math.MathContext b | java.math.BigDecimal a): java.math.BigDecimal", + "insertText": "subtract" + }, + { + "label": "toBigInteger", + "kind": "method", + "documentation": "toBigInteger(): java.math.BigInteger", + "insertText": "toBigInteger" + }, + { + "label": "toBigIntegerExact", + "kind": "method", + "documentation": "toBigIntegerExact(): java.math.BigInteger", + "insertText": "toBigIntegerExact" + }, + { + "label": "toEngineeringString", + "kind": "method", + "documentation": "toEngineeringString(): java.lang.String", + "insertText": "toEngineeringString" + }, + { + "label": "toPlainString", + "kind": "method", + "documentation": "toPlainString(): java.lang.String", + "insertText": "toPlainString" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "ulp", + "kind": "method", + "documentation": "ulp(): java.math.BigDecimal", + "insertText": "ulp" + } + ], + "constructorDefinition": { + "label": "BigDecimal", + "kind": "constructor", + "documentation": "Constructor: BigDecimal", + "insertText": "BigDecimal" + } + }, + { + "label": "BigInteger", + "kind": "class", + "documentation": "Class: BigInteger", + "insertText": "BigInteger", + "properties": [ + { + "label": "ONE", + "kind": "property", + "documentation": "ONE: java.math.BigInteger", + "insertText": "ONE" + }, + { + "label": "TEN", + "kind": "property", + "documentation": "TEN: java.math.BigInteger", + "insertText": "TEN" + }, + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.math.BigInteger", + "insertText": "ZERO" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(long a): java.math.BigInteger", + "insertText": "valueOf" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.math.BigInteger", + "insertText": "abs" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(java.math.BigInteger a): java.math.BigInteger", + "insertText": "add" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.math.BigInteger a): java.math.BigInteger", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.math.BigInteger a): java.math.BigInteger", + "insertText": "andNot" + }, + { + "label": "bitCount", + "kind": "method", + "documentation": "bitCount(): int", + "insertText": "bitCount" + }, + { + "label": "bitLength", + "kind": "method", + "documentation": "bitLength(): int", + "insertText": "bitLength" + }, + { + "label": "byteValue", + "kind": "method", + "documentation": "byteValue(): byte", + "insertText": "byteValue" + }, + { + "label": "byteValueExact", + "kind": "method", + "documentation": "byteValueExact(): byte", + "insertText": "byteValueExact" + }, + { + "label": "clearBit", + "kind": "method", + "documentation": "clearBit(int a): java.math.BigInteger", + "insertText": "clearBit" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.math.BigInteger a): int", + "insertText": "compareTo" + }, + { + "label": "divide", + "kind": "method", + "documentation": "divide(java.math.BigInteger a): java.math.BigInteger", + "insertText": "divide" + }, + { + "label": "divideAndRemainder", + "kind": "method", + "documentation": "divideAndRemainder(java.math.BigInteger a): [Ljava.math.BigInteger;", + "insertText": "divideAndRemainder" + }, + { + "label": "doubleValue", + "kind": "method", + "documentation": "doubleValue(): double", + "insertText": "doubleValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flipBit", + "kind": "method", + "documentation": "flipBit(int a): java.math.BigInteger", + "insertText": "flipBit" + }, + { + "label": "floatValue", + "kind": "method", + "documentation": "floatValue(): float", + "insertText": "floatValue" + }, + { + "label": "gcd", + "kind": "method", + "documentation": "gcd(java.math.BigInteger a): java.math.BigInteger", + "insertText": "gcd" + }, + { + "label": "getLowestSetBit", + "kind": "method", + "documentation": "getLowestSetBit(): int", + "insertText": "getLowestSetBit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intValue", + "kind": "method", + "documentation": "intValue(): int", + "insertText": "intValue" + }, + { + "label": "intValueExact", + "kind": "method", + "documentation": "intValueExact(): int", + "insertText": "intValueExact" + }, + { + "label": "longValue", + "kind": "method", + "documentation": "longValue(): long", + "insertText": "longValue" + }, + { + "label": "longValueExact", + "kind": "method", + "documentation": "longValueExact(): long", + "insertText": "longValueExact" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.math.BigInteger a): java.math.BigInteger", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.math.BigInteger a): java.math.BigInteger", + "insertText": "min" + }, + { + "label": "mod", + "kind": "method", + "documentation": "mod(java.math.BigInteger a): java.math.BigInteger", + "insertText": "mod" + }, + { + "label": "modInverse", + "kind": "method", + "documentation": "modInverse(java.math.BigInteger a): java.math.BigInteger", + "insertText": "modInverse" + }, + { + "label": "modPow", + "kind": "method", + "documentation": "modPow(java.math.BigInteger a, java.math.BigInteger b): java.math.BigInteger", + "insertText": "modPow" + }, + { + "label": "multiply", + "kind": "method", + "documentation": "multiply(java.math.BigInteger a): java.math.BigInteger", + "insertText": "multiply" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.math.BigInteger", + "insertText": "negate" + }, + { + "label": "not", + "kind": "method", + "documentation": "not(): java.math.BigInteger", + "insertText": "not" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.math.BigInteger a): java.math.BigInteger", + "insertText": "or" + }, + { + "label": "pow", + "kind": "method", + "documentation": "pow(int a): java.math.BigInteger", + "insertText": "pow" + }, + { + "label": "remainder", + "kind": "method", + "documentation": "remainder(java.math.BigInteger a): java.math.BigInteger", + "insertText": "remainder" + }, + { + "label": "setBit", + "kind": "method", + "documentation": "setBit(int a): java.math.BigInteger", + "insertText": "setBit" + }, + { + "label": "shiftLeft", + "kind": "method", + "documentation": "shiftLeft(int a): java.math.BigInteger", + "insertText": "shiftLeft" + }, + { + "label": "shiftRight", + "kind": "method", + "documentation": "shiftRight(int a): java.math.BigInteger", + "insertText": "shiftRight" + }, + { + "label": "shortValue", + "kind": "method", + "documentation": "shortValue(): short", + "insertText": "shortValue" + }, + { + "label": "shortValueExact", + "kind": "method", + "documentation": "shortValueExact(): short", + "insertText": "shortValueExact" + }, + { + "label": "signum", + "kind": "method", + "documentation": "signum(): int", + "insertText": "signum" + }, + { + "label": "subtract", + "kind": "method", + "documentation": "subtract(java.math.BigInteger a): java.math.BigInteger", + "insertText": "subtract" + }, + { + "label": "testBit", + "kind": "method", + "documentation": "testBit(int a): boolean", + "insertText": "testBit" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(int a): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.math.BigInteger a): java.math.BigInteger", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BigInteger", + "kind": "constructor", + "documentation": "Constructor: BigInteger", + "insertText": "BigInteger" + } + }, + { + "label": "MathContext", + "kind": "class", + "documentation": "Class: MathContext", + "insertText": "MathContext", + "properties": [ + { + "label": "DECIMAL128", + "kind": "property", + "documentation": "DECIMAL128: java.math.MathContext", + "insertText": "DECIMAL128" + }, + { + "label": "DECIMAL32", + "kind": "property", + "documentation": "DECIMAL32: java.math.MathContext", + "insertText": "DECIMAL32" + }, + { + "label": "DECIMAL64", + "kind": "property", + "documentation": "DECIMAL64: java.math.MathContext", + "insertText": "DECIMAL64" + }, + { + "label": "UNLIMITED", + "kind": "property", + "documentation": "UNLIMITED: java.math.MathContext", + "insertText": "UNLIMITED" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MathContext", + "kind": "constructor", + "documentation": "Constructor: MathContext", + "insertText": "MathContext" + } + }, + { + "label": "RoundingMode", + "kind": "class", + "documentation": "Class: RoundingMode", + "insertText": "RoundingMode", + "properties": [ + { + "label": "CEILING", + "kind": "property", + "documentation": "CEILING: java.math.RoundingMode", + "insertText": "CEILING" + }, + { + "label": "DOWN", + "kind": "property", + "documentation": "DOWN: java.math.RoundingMode", + "insertText": "DOWN" + }, + { + "label": "FLOOR", + "kind": "property", + "documentation": "FLOOR: java.math.RoundingMode", + "insertText": "FLOOR" + }, + { + "label": "HALF_DOWN", + "kind": "property", + "documentation": "HALF_DOWN: java.math.RoundingMode", + "insertText": "HALF_DOWN" + }, + { + "label": "HALF_EVEN", + "kind": "property", + "documentation": "HALF_EVEN: java.math.RoundingMode", + "insertText": "HALF_EVEN" + }, + { + "label": "HALF_UP", + "kind": "property", + "documentation": "HALF_UP: java.math.RoundingMode", + "insertText": "HALF_UP" + }, + { + "label": "UNNECESSARY", + "kind": "property", + "documentation": "UNNECESSARY: java.math.RoundingMode", + "insertText": "UNNECESSARY" + }, + { + "label": "UP", + "kind": "property", + "documentation": "UP: java.math.RoundingMode", + "insertText": "UP" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.math.RoundingMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.math.RoundingMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Annotation", + "kind": "class", + "documentation": "Class: Annotation", + "insertText": "Annotation", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Annotation", + "kind": "constructor", + "documentation": "Constructor: Annotation", + "insertText": "Annotation" + } + }, + { + "label": "AttributedCharacterIterator", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator", + "insertText": "AttributedCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getAllAttributeKeys", + "kind": "method", + "documentation": "getAllAttributeKeys(): java.util.Set", + "insertText": "getAllAttributeKeys" + }, + { + "label": "getAttribute", + "kind": "method", + "documentation": "getAttribute(java.text.AttributedCharacterIterator$Attribute a): org.elasticsearch.painless.lookup.def", + "insertText": "getAttribute" + }, + { + "label": "getAttributes", + "kind": "method", + "documentation": "getAttributes(): java.util.Map", + "insertText": "getAttributes" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(java.util.Set a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(java.util.Set a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedCharacterIterator.Attribute", + "kind": "class", + "documentation": "Class: AttributedCharacterIterator.Attribute", + "insertText": "AttributedCharacterIterator.Attribute", + "properties": [ + { + "label": "INPUT_METHOD_SEGMENT", + "kind": "property", + "documentation": "INPUT_METHOD_SEGMENT: java.text.AttributedCharacterIterator$Attribute", + "insertText": "INPUT_METHOD_SEGMENT" + }, + { + "label": "LANGUAGE", + "kind": "property", + "documentation": "LANGUAGE: java.text.AttributedCharacterIterator$Attribute", + "insertText": "LANGUAGE" + }, + { + "label": "READING", + "kind": "property", + "documentation": "READING: java.text.AttributedCharacterIterator$Attribute", + "insertText": "READING" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AttributedString", + "kind": "class", + "documentation": "Class: AttributedString", + "insertText": "AttributedString", + "properties": [ + { + "label": "addAttribute", + "kind": "method", + "documentation": "addAttribute(java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b, int c, int d | java.text.AttributedCharacterIterator$Attribute a, java.lang.Object b): void", + "insertText": "addAttribute" + }, + { + "label": "addAttributes", + "kind": "method", + "documentation": "addAttributes(java.util.Map a, int b, int c): void", + "insertText": "addAttributes" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getIterator", + "kind": "method", + "documentation": "getIterator([Ljava.text.AttributedCharacterIterator$Attribute; a, int b, int c | [Ljava.text.AttributedCharacterIterator$Attribute; a): java.text.AttributedCharacterIterator", + "insertText": "getIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AttributedString", + "kind": "constructor", + "documentation": "Constructor: AttributedString", + "insertText": "AttributedString" + } + }, + { + "label": "Bidi", + "kind": "class", + "documentation": "Class: Bidi", + "insertText": "Bidi", + "properties": [ + { + "label": "DIRECTION_DEFAULT_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_DEFAULT_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_DEFAULT_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_DEFAULT_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_DEFAULT_RIGHT_TO_LEFT" + }, + { + "label": "DIRECTION_LEFT_TO_RIGHT", + "kind": "property", + "documentation": "DIRECTION_LEFT_TO_RIGHT: int", + "insertText": "DIRECTION_LEFT_TO_RIGHT" + }, + { + "label": "DIRECTION_RIGHT_TO_LEFT", + "kind": "property", + "documentation": "DIRECTION_RIGHT_TO_LEFT: int", + "insertText": "DIRECTION_RIGHT_TO_LEFT" + }, + { + "label": "reorderVisually", + "kind": "method", + "documentation": "reorderVisually([B a, int b, [Ljava.lang.Object; c, int d, int e): void", + "insertText": "reorderVisually" + }, + { + "label": "requiresBidi", + "kind": "method", + "documentation": "requiresBidi([C a, int b, int c): boolean", + "insertText": "requiresBidi" + }, + { + "label": "baseIsLeftToRight", + "kind": "method", + "documentation": "baseIsLeftToRight(): boolean", + "insertText": "baseIsLeftToRight" + }, + { + "label": "createLineBidi", + "kind": "method", + "documentation": "createLineBidi(int a, int b): java.text.Bidi", + "insertText": "createLineBidi" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseLevel", + "kind": "method", + "documentation": "getBaseLevel(): int", + "insertText": "getBaseLevel" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLevelAt", + "kind": "method", + "documentation": "getLevelAt(int a): int", + "insertText": "getLevelAt" + }, + { + "label": "getRunCount", + "kind": "method", + "documentation": "getRunCount(): int", + "insertText": "getRunCount" + }, + { + "label": "getRunLevel", + "kind": "method", + "documentation": "getRunLevel(int a): int", + "insertText": "getRunLevel" + }, + { + "label": "getRunLimit", + "kind": "method", + "documentation": "getRunLimit(int a): int", + "insertText": "getRunLimit" + }, + { + "label": "getRunStart", + "kind": "method", + "documentation": "getRunStart(int a): int", + "insertText": "getRunStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeftToRight", + "kind": "method", + "documentation": "isLeftToRight(): boolean", + "insertText": "isLeftToRight" + }, + { + "label": "isMixed", + "kind": "method", + "documentation": "isMixed(): boolean", + "insertText": "isMixed" + }, + { + "label": "isRightToLeft", + "kind": "method", + "documentation": "isRightToLeft(): boolean", + "insertText": "isRightToLeft" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Bidi", + "kind": "constructor", + "documentation": "Constructor: Bidi", + "insertText": "Bidi" + } + }, + { + "label": "BreakIterator", + "kind": "class", + "documentation": "Class: BreakIterator", + "insertText": "BreakIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: int", + "insertText": "DONE" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCharacterInstance", + "kind": "method", + "documentation": "getCharacterInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getCharacterInstance" + }, + { + "label": "getLineInstance", + "kind": "method", + "documentation": "getLineInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getLineInstance" + }, + { + "label": "getSentenceInstance", + "kind": "method", + "documentation": "getSentenceInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getSentenceInstance" + }, + { + "label": "getWordInstance", + "kind": "method", + "documentation": "getWordInstance(java.util.Locale a): java.text.BreakIterator", + "insertText": "getWordInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): int", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): int", + "insertText": "first" + }, + { + "label": "following", + "kind": "method", + "documentation": "following(int a): int", + "insertText": "following" + }, + { + "label": "getText", + "kind": "method", + "documentation": "getText(): java.text.CharacterIterator", + "insertText": "getText" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isBoundary", + "kind": "method", + "documentation": "isBoundary(int a): boolean", + "insertText": "isBoundary" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): int", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(int a): int", + "insertText": "next" + }, + { + "label": "preceding", + "kind": "method", + "documentation": "preceding(int a): int", + "insertText": "preceding" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CharacterIterator", + "kind": "class", + "documentation": "Class: CharacterIterator", + "insertText": "CharacterIterator", + "properties": [ + { + "label": "DONE", + "kind": "property", + "documentation": "DONE: char", + "insertText": "DONE" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChoiceFormat", + "kind": "class", + "documentation": "Class: ChoiceFormat", + "insertText": "ChoiceFormat", + "properties": [ + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(double a, boolean b | double a): double", + "insertText": "nextDouble" + }, + { + "label": "previousDouble", + "kind": "method", + "documentation": "previousDouble(double a): double", + "insertText": "previousDouble" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "getFormats" + }, + { + "label": "getLimits", + "kind": "method", + "documentation": "getLimits(): [D", + "insertText": "getLimits" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setChoices", + "kind": "method", + "documentation": "setChoices([D a, [Ljava.lang.String; b): void", + "insertText": "setChoices" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ChoiceFormat", + "kind": "constructor", + "documentation": "Constructor: ChoiceFormat", + "insertText": "ChoiceFormat" + } + }, + { + "label": "CollationElementIterator", + "kind": "class", + "documentation": "Class: CollationElementIterator", + "insertText": "CollationElementIterator", + "properties": [ + { + "label": "NULLORDER", + "kind": "property", + "documentation": "NULLORDER: int", + "insertText": "NULLORDER" + }, + { + "label": "primaryOrder", + "kind": "method", + "documentation": "primaryOrder(int a): int", + "insertText": "primaryOrder" + }, + { + "label": "secondaryOrder", + "kind": "method", + "documentation": "secondaryOrder(int a): short", + "insertText": "secondaryOrder" + }, + { + "label": "tertiaryOrder", + "kind": "method", + "documentation": "tertiaryOrder(int a): short", + "insertText": "tertiaryOrder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getMaxExpansion", + "kind": "method", + "documentation": "getMaxExpansion(int a): int", + "insertText": "getMaxExpansion" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): int", + "insertText": "getOffset" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): int", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): int", + "insertText": "previous" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): void", + "insertText": "reset" + }, + { + "label": "setOffset", + "kind": "method", + "documentation": "setOffset(int a): void", + "insertText": "setOffset" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "CollationKey", + "kind": "class", + "documentation": "Class: CollationKey", + "insertText": "CollationKey", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.text.CollationKey a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSourceString", + "kind": "method", + "documentation": "getSourceString(): java.lang.String", + "insertText": "getSourceString" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collator", + "kind": "class", + "documentation": "Class: Collator", + "insertText": "Collator", + "properties": [ + { + "label": "CANONICAL_DECOMPOSITION", + "kind": "property", + "documentation": "CANONICAL_DECOMPOSITION: int", + "insertText": "CANONICAL_DECOMPOSITION" + }, + { + "label": "FULL_DECOMPOSITION", + "kind": "property", + "documentation": "FULL_DECOMPOSITION: int", + "insertText": "FULL_DECOMPOSITION" + }, + { + "label": "IDENTICAL", + "kind": "property", + "documentation": "IDENTICAL: int", + "insertText": "IDENTICAL" + }, + { + "label": "NO_DECOMPOSITION", + "kind": "property", + "documentation": "NO_DECOMPOSITION: int", + "insertText": "NO_DECOMPOSITION" + }, + { + "label": "PRIMARY", + "kind": "property", + "documentation": "PRIMARY: int", + "insertText": "PRIMARY" + }, + { + "label": "SECONDARY", + "kind": "property", + "documentation": "SECONDARY: int", + "insertText": "SECONDARY" + }, + { + "label": "TERTIARY", + "kind": "property", + "documentation": "TERTIARY: int", + "insertText": "TERTIARY" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.Collator", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat", + "kind": "class", + "documentation": "Class: DateFormat", + "insertText": "DateFormat", + "properties": [ + { + "label": "AM_PM_FIELD", + "kind": "property", + "documentation": "AM_PM_FIELD: int", + "insertText": "AM_PM_FIELD" + }, + { + "label": "DATE_FIELD", + "kind": "property", + "documentation": "DATE_FIELD: int", + "insertText": "DATE_FIELD" + }, + { + "label": "DAY_OF_WEEK_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_FIELD: int", + "insertText": "DAY_OF_WEEK_FIELD" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH_FIELD", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH_FIELD: int", + "insertText": "DAY_OF_WEEK_IN_MONTH_FIELD" + }, + { + "label": "DAY_OF_YEAR_FIELD", + "kind": "property", + "documentation": "DAY_OF_YEAR_FIELD: int", + "insertText": "DAY_OF_YEAR_FIELD" + }, + { + "label": "DEFAULT", + "kind": "property", + "documentation": "DEFAULT: int", + "insertText": "DEFAULT" + }, + { + "label": "ERA_FIELD", + "kind": "property", + "documentation": "ERA_FIELD: int", + "insertText": "ERA_FIELD" + }, + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: int", + "insertText": "FULL" + }, + { + "label": "HOUR0_FIELD", + "kind": "property", + "documentation": "HOUR0_FIELD: int", + "insertText": "HOUR0_FIELD" + }, + { + "label": "HOUR1_FIELD", + "kind": "property", + "documentation": "HOUR1_FIELD: int", + "insertText": "HOUR1_FIELD" + }, + { + "label": "HOUR_OF_DAY0_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY0_FIELD: int", + "insertText": "HOUR_OF_DAY0_FIELD" + }, + { + "label": "HOUR_OF_DAY1_FIELD", + "kind": "property", + "documentation": "HOUR_OF_DAY1_FIELD: int", + "insertText": "HOUR_OF_DAY1_FIELD" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: int", + "insertText": "MEDIUM" + }, + { + "label": "MILLISECOND_FIELD", + "kind": "property", + "documentation": "MILLISECOND_FIELD: int", + "insertText": "MILLISECOND_FIELD" + }, + { + "label": "MINUTE_FIELD", + "kind": "property", + "documentation": "MINUTE_FIELD: int", + "insertText": "MINUTE_FIELD" + }, + { + "label": "MONTH_FIELD", + "kind": "property", + "documentation": "MONTH_FIELD: int", + "insertText": "MONTH_FIELD" + }, + { + "label": "SECOND_FIELD", + "kind": "property", + "documentation": "SECOND_FIELD: int", + "insertText": "SECOND_FIELD" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "TIMEZONE_FIELD", + "kind": "property", + "documentation": "TIMEZONE_FIELD: int", + "insertText": "TIMEZONE_FIELD" + }, + { + "label": "WEEK_OF_MONTH_FIELD", + "kind": "property", + "documentation": "WEEK_OF_MONTH_FIELD: int", + "insertText": "WEEK_OF_MONTH_FIELD" + }, + { + "label": "WEEK_OF_YEAR_FIELD", + "kind": "property", + "documentation": "WEEK_OF_YEAR_FIELD: int", + "insertText": "WEEK_OF_YEAR_FIELD" + }, + { + "label": "YEAR_FIELD", + "kind": "property", + "documentation": "YEAR_FIELD: int", + "insertText": "YEAR_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDateInstance", + "kind": "method", + "documentation": "getDateInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getDateInstance" + }, + { + "label": "getDateTimeInstance", + "kind": "method", + "documentation": "getDateTimeInstance(int a, int b, java.util.Locale c | int a, int b): java.text.DateFormat", + "insertText": "getDateTimeInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(): java.text.DateFormat", + "insertText": "getInstance" + }, + { + "label": "getTimeInstance", + "kind": "method", + "documentation": "getTimeInstance(int a, java.util.Locale b | int a): java.text.DateFormat", + "insertText": "getTimeInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormat.Field", + "kind": "class", + "documentation": "Class: DateFormat.Field", + "insertText": "DateFormat.Field", + "properties": [ + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: java.text.DateFormat$Field", + "insertText": "AM_PM" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: java.text.DateFormat$Field", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.text.DateFormat$Field", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.text.DateFormat$Field", + "insertText": "ERA" + }, + { + "label": "HOUR0", + "kind": "property", + "documentation": "HOUR0: java.text.DateFormat$Field", + "insertText": "HOUR0" + }, + { + "label": "HOUR1", + "kind": "property", + "documentation": "HOUR1: java.text.DateFormat$Field", + "insertText": "HOUR1" + }, + { + "label": "HOUR_OF_DAY0", + "kind": "property", + "documentation": "HOUR_OF_DAY0: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY0" + }, + { + "label": "HOUR_OF_DAY1", + "kind": "property", + "documentation": "HOUR_OF_DAY1: java.text.DateFormat$Field", + "insertText": "HOUR_OF_DAY1" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: java.text.DateFormat$Field", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: java.text.DateFormat$Field", + "insertText": "MINUTE" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: java.text.DateFormat$Field", + "insertText": "MONTH" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: java.text.DateFormat$Field", + "insertText": "SECOND" + }, + { + "label": "TIME_ZONE", + "kind": "property", + "documentation": "TIME_ZONE: java.text.DateFormat$Field", + "insertText": "TIME_ZONE" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: java.text.DateFormat$Field", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: java.text.DateFormat$Field", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.text.DateFormat$Field", + "insertText": "YEAR" + }, + { + "label": "ofCalendarField", + "kind": "method", + "documentation": "ofCalendarField(int a): java.text.DateFormat$Field", + "insertText": "ofCalendarField" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCalendarField", + "kind": "method", + "documentation": "getCalendarField(): int", + "insertText": "getCalendarField" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateFormatSymbols", + "kind": "class", + "documentation": "Class: DateFormatSymbols", + "insertText": "DateFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DateFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAmPmStrings", + "kind": "method", + "documentation": "getAmPmStrings(): [Ljava.lang.String;", + "insertText": "getAmPmStrings" + }, + { + "label": "getEras", + "kind": "method", + "documentation": "getEras(): [Ljava.lang.String;", + "insertText": "getEras" + }, + { + "label": "getLocalPatternChars", + "kind": "method", + "documentation": "getLocalPatternChars(): java.lang.String", + "insertText": "getLocalPatternChars" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): [Ljava.lang.String;", + "insertText": "getMonths" + }, + { + "label": "getShortMonths", + "kind": "method", + "documentation": "getShortMonths(): [Ljava.lang.String;", + "insertText": "getShortMonths" + }, + { + "label": "getShortWeekdays", + "kind": "method", + "documentation": "getShortWeekdays(): [Ljava.lang.String;", + "insertText": "getShortWeekdays" + }, + { + "label": "getWeekdays", + "kind": "method", + "documentation": "getWeekdays(): [Ljava.lang.String;", + "insertText": "getWeekdays" + }, + { + "label": "getZoneStrings", + "kind": "method", + "documentation": "getZoneStrings(): [[Ljava.lang.String;", + "insertText": "getZoneStrings" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setAmPmStrings", + "kind": "method", + "documentation": "setAmPmStrings([Ljava.lang.String; a): void", + "insertText": "setAmPmStrings" + }, + { + "label": "setEras", + "kind": "method", + "documentation": "setEras([Ljava.lang.String; a): void", + "insertText": "setEras" + }, + { + "label": "setLocalPatternChars", + "kind": "method", + "documentation": "setLocalPatternChars(java.lang.String a): void", + "insertText": "setLocalPatternChars" + }, + { + "label": "setMonths", + "kind": "method", + "documentation": "setMonths([Ljava.lang.String; a): void", + "insertText": "setMonths" + }, + { + "label": "setShortMonths", + "kind": "method", + "documentation": "setShortMonths([Ljava.lang.String; a): void", + "insertText": "setShortMonths" + }, + { + "label": "setShortWeekdays", + "kind": "method", + "documentation": "setShortWeekdays([Ljava.lang.String; a): void", + "insertText": "setShortWeekdays" + }, + { + "label": "setWeekdays", + "kind": "method", + "documentation": "setWeekdays([Ljava.lang.String; a): void", + "insertText": "setWeekdays" + }, + { + "label": "setZoneStrings", + "kind": "method", + "documentation": "setZoneStrings([[Ljava.lang.String; a): void", + "insertText": "setZoneStrings" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DateFormatSymbols", + "insertText": "DateFormatSymbols" + } + }, + { + "label": "DecimalFormat", + "kind": "class", + "documentation": "Class: DecimalFormat", + "insertText": "DecimalFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getDecimalFormatSymbols", + "kind": "method", + "documentation": "getDecimalFormatSymbols(): java.text.DecimalFormatSymbols", + "insertText": "getDecimalFormatSymbols" + }, + { + "label": "getGroupingSize", + "kind": "method", + "documentation": "getGroupingSize(): int", + "insertText": "getGroupingSize" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getMultiplier", + "kind": "method", + "documentation": "getMultiplier(): int", + "insertText": "getMultiplier" + }, + { + "label": "getNegativePrefix", + "kind": "method", + "documentation": "getNegativePrefix(): java.lang.String", + "insertText": "getNegativePrefix" + }, + { + "label": "getNegativeSuffix", + "kind": "method", + "documentation": "getNegativeSuffix(): java.lang.String", + "insertText": "getNegativeSuffix" + }, + { + "label": "getPositivePrefix", + "kind": "method", + "documentation": "getPositivePrefix(): java.lang.String", + "insertText": "getPositivePrefix" + }, + { + "label": "getPositiveSuffix", + "kind": "method", + "documentation": "getPositiveSuffix(): java.lang.String", + "insertText": "getPositiveSuffix" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "isDecimalSeparatorAlwaysShown(): boolean", + "insertText": "isDecimalSeparatorAlwaysShown" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseBigDecimal", + "kind": "method", + "documentation": "isParseBigDecimal(): boolean", + "insertText": "isParseBigDecimal" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setDecimalFormatSymbols", + "kind": "method", + "documentation": "setDecimalFormatSymbols(java.text.DecimalFormatSymbols a): void", + "insertText": "setDecimalFormatSymbols" + }, + { + "label": "setDecimalSeparatorAlwaysShown", + "kind": "method", + "documentation": "setDecimalSeparatorAlwaysShown(boolean a): void", + "insertText": "setDecimalSeparatorAlwaysShown" + }, + { + "label": "setGroupingSize", + "kind": "method", + "documentation": "setGroupingSize(int a): void", + "insertText": "setGroupingSize" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setMultiplier", + "kind": "method", + "documentation": "setMultiplier(int a): void", + "insertText": "setMultiplier" + }, + { + "label": "setNegativePrefix", + "kind": "method", + "documentation": "setNegativePrefix(java.lang.String a): void", + "insertText": "setNegativePrefix" + }, + { + "label": "setNegativeSuffix", + "kind": "method", + "documentation": "setNegativeSuffix(java.lang.String a): void", + "insertText": "setNegativeSuffix" + }, + { + "label": "setParseBigDecimal", + "kind": "method", + "documentation": "setParseBigDecimal(boolean a): void", + "insertText": "setParseBigDecimal" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setPositivePrefix", + "kind": "method", + "documentation": "setPositivePrefix(java.lang.String a): void", + "insertText": "setPositivePrefix" + }, + { + "label": "setPositiveSuffix", + "kind": "method", + "documentation": "setPositiveSuffix(java.lang.String a): void", + "insertText": "setPositiveSuffix" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormat", + "kind": "constructor", + "documentation": "Constructor: DecimalFormat", + "insertText": "DecimalFormat" + } + }, + { + "label": "DecimalFormatSymbols", + "kind": "class", + "documentation": "Class: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols", + "properties": [ + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.DecimalFormatSymbols", + "insertText": "getInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getCurrencySymbol", + "kind": "method", + "documentation": "getCurrencySymbol(): java.lang.String", + "insertText": "getCurrencySymbol" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getDigit", + "kind": "method", + "documentation": "getDigit(): char", + "insertText": "getDigit" + }, + { + "label": "getExponentSeparator", + "kind": "method", + "documentation": "getExponentSeparator(): java.lang.String", + "insertText": "getExponentSeparator" + }, + { + "label": "getGroupingSeparator", + "kind": "method", + "documentation": "getGroupingSeparator(): char", + "insertText": "getGroupingSeparator" + }, + { + "label": "getInfinity", + "kind": "method", + "documentation": "getInfinity(): java.lang.String", + "insertText": "getInfinity" + }, + { + "label": "getInternationalCurrencySymbol", + "kind": "method", + "documentation": "getInternationalCurrencySymbol(): java.lang.String", + "insertText": "getInternationalCurrencySymbol" + }, + { + "label": "getMinusSign", + "kind": "method", + "documentation": "getMinusSign(): char", + "insertText": "getMinusSign" + }, + { + "label": "getMonetaryDecimalSeparator", + "kind": "method", + "documentation": "getMonetaryDecimalSeparator(): char", + "insertText": "getMonetaryDecimalSeparator" + }, + { + "label": "getNaN", + "kind": "method", + "documentation": "getNaN(): java.lang.String", + "insertText": "getNaN" + }, + { + "label": "getPatternSeparator", + "kind": "method", + "documentation": "getPatternSeparator(): char", + "insertText": "getPatternSeparator" + }, + { + "label": "getPerMill", + "kind": "method", + "documentation": "getPerMill(): char", + "insertText": "getPerMill" + }, + { + "label": "getPercent", + "kind": "method", + "documentation": "getPercent(): char", + "insertText": "getPercent" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setCurrencySymbol", + "kind": "method", + "documentation": "setCurrencySymbol(java.lang.String a): void", + "insertText": "setCurrencySymbol" + }, + { + "label": "setDecimalSeparator", + "kind": "method", + "documentation": "setDecimalSeparator(char a): void", + "insertText": "setDecimalSeparator" + }, + { + "label": "setDigit", + "kind": "method", + "documentation": "setDigit(char a): void", + "insertText": "setDigit" + }, + { + "label": "setExponentSeparator", + "kind": "method", + "documentation": "setExponentSeparator(java.lang.String a): void", + "insertText": "setExponentSeparator" + }, + { + "label": "setGroupingSeparator", + "kind": "method", + "documentation": "setGroupingSeparator(char a): void", + "insertText": "setGroupingSeparator" + }, + { + "label": "setInfinity", + "kind": "method", + "documentation": "setInfinity(java.lang.String a): void", + "insertText": "setInfinity" + }, + { + "label": "setInternationalCurrencySymbol", + "kind": "method", + "documentation": "setInternationalCurrencySymbol(java.lang.String a): void", + "insertText": "setInternationalCurrencySymbol" + }, + { + "label": "setMinusSign", + "kind": "method", + "documentation": "setMinusSign(char a): void", + "insertText": "setMinusSign" + }, + { + "label": "setMonetaryDecimalSeparator", + "kind": "method", + "documentation": "setMonetaryDecimalSeparator(char a): void", + "insertText": "setMonetaryDecimalSeparator" + }, + { + "label": "setNaN", + "kind": "method", + "documentation": "setNaN(java.lang.String a): void", + "insertText": "setNaN" + }, + { + "label": "setPatternSeparator", + "kind": "method", + "documentation": "setPatternSeparator(char a): void", + "insertText": "setPatternSeparator" + }, + { + "label": "setPerMill", + "kind": "method", + "documentation": "setPerMill(char a): void", + "insertText": "setPerMill" + }, + { + "label": "setPercent", + "kind": "method", + "documentation": "setPercent(char a): void", + "insertText": "setPercent" + }, + { + "label": "setZeroDigit", + "kind": "method", + "documentation": "setZeroDigit(char a): void", + "insertText": "setZeroDigit" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DecimalFormatSymbols", + "kind": "constructor", + "documentation": "Constructor: DecimalFormatSymbols", + "insertText": "DecimalFormatSymbols" + } + }, + { + "label": "FieldPosition", + "kind": "class", + "documentation": "Class: FieldPosition", + "insertText": "FieldPosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getField", + "kind": "method", + "documentation": "getField(): int", + "insertText": "getField" + }, + { + "label": "getFieldAttribute", + "kind": "method", + "documentation": "getFieldAttribute(): java.text.Format$Field", + "insertText": "getFieldAttribute" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setBeginIndex", + "kind": "method", + "documentation": "setBeginIndex(int a): void", + "insertText": "setBeginIndex" + }, + { + "label": "setEndIndex", + "kind": "method", + "documentation": "setEndIndex(int a): void", + "insertText": "setEndIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FieldPosition", + "kind": "constructor", + "documentation": "Constructor: FieldPosition", + "insertText": "FieldPosition" + } + }, + { + "label": "Format", + "kind": "class", + "documentation": "Class: Format", + "insertText": "Format", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Format.Field", + "kind": "class", + "documentation": "Class: Format.Field", + "insertText": "Format.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat", + "kind": "class", + "documentation": "Class: MessageFormat", + "insertText": "MessageFormat", + "properties": [ + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.String a, [Ljava.lang.Object; b): java.lang.String", + "insertText": "format" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getFormats", + "kind": "method", + "documentation": "getFormats(): [Ljava.text.Format;", + "insertText": "getFormats" + }, + { + "label": "getFormatsByArgumentIndex", + "kind": "method", + "documentation": "getFormatsByArgumentIndex(): [Ljava.text.Format;", + "insertText": "getFormatsByArgumentIndex" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): [Ljava.lang.Object;", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setFormat", + "kind": "method", + "documentation": "setFormat(int a, java.text.Format b): void", + "insertText": "setFormat" + }, + { + "label": "setFormatByArgumentIndex", + "kind": "method", + "documentation": "setFormatByArgumentIndex(int a, java.text.Format b): void", + "insertText": "setFormatByArgumentIndex" + }, + { + "label": "setFormats", + "kind": "method", + "documentation": "setFormats([Ljava.text.Format; a): void", + "insertText": "setFormats" + }, + { + "label": "setFormatsByArgumentIndex", + "kind": "method", + "documentation": "setFormatsByArgumentIndex([Ljava.text.Format; a): void", + "insertText": "setFormatsByArgumentIndex" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): void", + "insertText": "setLocale" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MessageFormat.Field", + "kind": "class", + "documentation": "Class: MessageFormat.Field", + "insertText": "MessageFormat.Field", + "properties": [ + { + "label": "ARGUMENT", + "kind": "property", + "documentation": "ARGUMENT: java.text.MessageFormat$Field", + "insertText": "ARGUMENT" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer", + "kind": "class", + "documentation": "Class: Normalizer", + "insertText": "Normalizer", + "properties": [ + { + "label": "isNormalized", + "kind": "method", + "documentation": "isNormalized(java.lang.CharSequence a, java.text.Normalizer$Form b): boolean", + "insertText": "isNormalized" + }, + { + "label": "normalize", + "kind": "method", + "documentation": "normalize(java.lang.CharSequence a, java.text.Normalizer$Form b): java.lang.String", + "insertText": "normalize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Normalizer.Form", + "kind": "class", + "documentation": "Class: Normalizer.Form", + "insertText": "Normalizer.Form", + "properties": [ + { + "label": "NFC", + "kind": "property", + "documentation": "NFC: java.text.Normalizer$Form", + "insertText": "NFC" + }, + { + "label": "NFD", + "kind": "property", + "documentation": "NFD: java.text.Normalizer$Form", + "insertText": "NFD" + }, + { + "label": "NFKC", + "kind": "property", + "documentation": "NFKC: java.text.Normalizer$Form", + "insertText": "NFKC" + }, + { + "label": "NFKD", + "kind": "property", + "documentation": "NFKD: java.text.Normalizer$Form", + "insertText": "NFKD" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.text.Normalizer$Form", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.text.Normalizer$Form;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat", + "kind": "class", + "documentation": "Class: NumberFormat", + "insertText": "NumberFormat", + "properties": [ + { + "label": "FRACTION_FIELD", + "kind": "property", + "documentation": "FRACTION_FIELD: int", + "insertText": "FRACTION_FIELD" + }, + { + "label": "INTEGER_FIELD", + "kind": "property", + "documentation": "INTEGER_FIELD: int", + "insertText": "INTEGER_FIELD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getCurrencyInstance", + "kind": "method", + "documentation": "getCurrencyInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getCurrencyInstance" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getInstance" + }, + { + "label": "getIntegerInstance", + "kind": "method", + "documentation": "getIntegerInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getIntegerInstance" + }, + { + "label": "getNumberInstance", + "kind": "method", + "documentation": "getNumberInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getNumberInstance" + }, + { + "label": "getPercentInstance", + "kind": "method", + "documentation": "getPercentInstance(java.util.Locale a): java.text.NumberFormat", + "insertText": "getPercentInstance" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "getCurrency", + "kind": "method", + "documentation": "getCurrency(): java.util.Currency", + "insertText": "getCurrency" + }, + { + "label": "getMaximumFractionDigits", + "kind": "method", + "documentation": "getMaximumFractionDigits(): int", + "insertText": "getMaximumFractionDigits" + }, + { + "label": "getMaximumIntegerDigits", + "kind": "method", + "documentation": "getMaximumIntegerDigits(): int", + "insertText": "getMaximumIntegerDigits" + }, + { + "label": "getMinimumFractionDigits", + "kind": "method", + "documentation": "getMinimumFractionDigits(): int", + "insertText": "getMinimumFractionDigits" + }, + { + "label": "getMinimumIntegerDigits", + "kind": "method", + "documentation": "getMinimumIntegerDigits(): int", + "insertText": "getMinimumIntegerDigits" + }, + { + "label": "getRoundingMode", + "kind": "method", + "documentation": "getRoundingMode(): java.math.RoundingMode", + "insertText": "getRoundingMode" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGroupingUsed", + "kind": "method", + "documentation": "isGroupingUsed(): boolean", + "insertText": "isGroupingUsed" + }, + { + "label": "isParseIntegerOnly", + "kind": "method", + "documentation": "isParseIntegerOnly(): boolean", + "insertText": "isParseIntegerOnly" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Number", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "setCurrency", + "kind": "method", + "documentation": "setCurrency(java.util.Currency a): void", + "insertText": "setCurrency" + }, + { + "label": "setGroupingUsed", + "kind": "method", + "documentation": "setGroupingUsed(boolean a): void", + "insertText": "setGroupingUsed" + }, + { + "label": "setMaximumFractionDigits", + "kind": "method", + "documentation": "setMaximumFractionDigits(int a): void", + "insertText": "setMaximumFractionDigits" + }, + { + "label": "setMaximumIntegerDigits", + "kind": "method", + "documentation": "setMaximumIntegerDigits(int a): void", + "insertText": "setMaximumIntegerDigits" + }, + { + "label": "setMinimumFractionDigits", + "kind": "method", + "documentation": "setMinimumFractionDigits(int a): void", + "insertText": "setMinimumFractionDigits" + }, + { + "label": "setMinimumIntegerDigits", + "kind": "method", + "documentation": "setMinimumIntegerDigits(int a): void", + "insertText": "setMinimumIntegerDigits" + }, + { + "label": "setParseIntegerOnly", + "kind": "method", + "documentation": "setParseIntegerOnly(boolean a): void", + "insertText": "setParseIntegerOnly" + }, + { + "label": "setRoundingMode", + "kind": "method", + "documentation": "setRoundingMode(java.math.RoundingMode a): void", + "insertText": "setRoundingMode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NumberFormat.Field", + "kind": "class", + "documentation": "Class: NumberFormat.Field", + "insertText": "NumberFormat.Field", + "properties": [ + { + "label": "CURRENCY", + "kind": "property", + "documentation": "CURRENCY: java.text.NumberFormat$Field", + "insertText": "CURRENCY" + }, + { + "label": "DECIMAL_SEPARATOR", + "kind": "property", + "documentation": "DECIMAL_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "DECIMAL_SEPARATOR" + }, + { + "label": "EXPONENT", + "kind": "property", + "documentation": "EXPONENT: java.text.NumberFormat$Field", + "insertText": "EXPONENT" + }, + { + "label": "EXPONENT_SIGN", + "kind": "property", + "documentation": "EXPONENT_SIGN: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SIGN" + }, + { + "label": "EXPONENT_SYMBOL", + "kind": "property", + "documentation": "EXPONENT_SYMBOL: java.text.NumberFormat$Field", + "insertText": "EXPONENT_SYMBOL" + }, + { + "label": "FRACTION", + "kind": "property", + "documentation": "FRACTION: java.text.NumberFormat$Field", + "insertText": "FRACTION" + }, + { + "label": "GROUPING_SEPARATOR", + "kind": "property", + "documentation": "GROUPING_SEPARATOR: java.text.NumberFormat$Field", + "insertText": "GROUPING_SEPARATOR" + }, + { + "label": "INTEGER", + "kind": "property", + "documentation": "INTEGER: java.text.NumberFormat$Field", + "insertText": "INTEGER" + }, + { + "label": "PERCENT", + "kind": "property", + "documentation": "PERCENT: java.text.NumberFormat$Field", + "insertText": "PERCENT" + }, + { + "label": "PERMILLE", + "kind": "property", + "documentation": "PERMILLE: java.text.NumberFormat$Field", + "insertText": "PERMILLE" + }, + { + "label": "SIGN", + "kind": "property", + "documentation": "SIGN: java.text.NumberFormat$Field", + "insertText": "SIGN" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ParseException", + "kind": "class", + "documentation": "Class: ParseException", + "insertText": "ParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorOffset", + "kind": "method", + "documentation": "getErrorOffset(): int", + "insertText": "getErrorOffset" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParseException", + "kind": "constructor", + "documentation": "Constructor: ParseException", + "insertText": "ParseException" + } + }, + { + "label": "ParsePosition", + "kind": "class", + "documentation": "Class: ParsePosition", + "insertText": "ParsePosition", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setErrorIndex", + "kind": "method", + "documentation": "setErrorIndex(int a): void", + "insertText": "setErrorIndex" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): void", + "insertText": "setIndex" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ParsePosition", + "kind": "constructor", + "documentation": "Constructor: ParsePosition", + "insertText": "ParsePosition" + } + }, + { + "label": "RuleBasedCollator", + "kind": "class", + "documentation": "Class: RuleBasedCollator", + "insertText": "RuleBasedCollator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.String a, java.lang.String b | java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCollationElementIterator", + "kind": "method", + "documentation": "getCollationElementIterator(java.lang.String a): java.text.CollationElementIterator", + "insertText": "getCollationElementIterator" + }, + { + "label": "getCollationKey", + "kind": "method", + "documentation": "getCollationKey(java.lang.String a): java.text.CollationKey", + "insertText": "getCollationKey" + }, + { + "label": "getDecomposition", + "kind": "method", + "documentation": "getDecomposition(): int", + "insertText": "getDecomposition" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.lang.String", + "insertText": "getRules" + }, + { + "label": "getStrength", + "kind": "method", + "documentation": "getStrength(): int", + "insertText": "getStrength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "setDecomposition", + "kind": "method", + "documentation": "setDecomposition(int a): void", + "insertText": "setDecomposition" + }, + { + "label": "setStrength", + "kind": "method", + "documentation": "setStrength(int a): void", + "insertText": "setStrength" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "RuleBasedCollator", + "kind": "constructor", + "documentation": "Constructor: RuleBasedCollator", + "insertText": "RuleBasedCollator" + } + }, + { + "label": "SimpleDateFormat", + "kind": "class", + "documentation": "Class: SimpleDateFormat", + "insertText": "SimpleDateFormat", + "properties": [ + { + "label": "applyLocalizedPattern", + "kind": "method", + "documentation": "applyLocalizedPattern(java.lang.String a): void", + "insertText": "applyLocalizedPattern" + }, + { + "label": "applyPattern", + "kind": "method", + "documentation": "applyPattern(java.lang.String a): void", + "insertText": "applyPattern" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.lang.Object a, java.lang.StringBuffer b, java.text.FieldPosition c | java.lang.Object a): java.lang.StringBuffer | java.lang.String", + "insertText": "format" + }, + { + "label": "formatToCharacterIterator", + "kind": "method", + "documentation": "formatToCharacterIterator(java.lang.Object a): java.text.AttributedCharacterIterator", + "insertText": "formatToCharacterIterator" + }, + { + "label": "get2DigitYearStart", + "kind": "method", + "documentation": "get2DigitYearStart(): java.util.Date", + "insertText": "get2DigitYearStart" + }, + { + "label": "getCalendar", + "kind": "method", + "documentation": "getCalendar(): java.util.Calendar", + "insertText": "getCalendar" + }, + { + "label": "getDateFormatSymbols", + "kind": "method", + "documentation": "getDateFormatSymbols(): java.text.DateFormatSymbols", + "insertText": "getDateFormatSymbols" + }, + { + "label": "getNumberFormat", + "kind": "method", + "documentation": "getNumberFormat(): java.text.NumberFormat", + "insertText": "getNumberFormat" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.util.Date", + "insertText": "parse" + }, + { + "label": "parseObject", + "kind": "method", + "documentation": "parseObject(java.lang.String a, java.text.ParsePosition b | java.lang.String a): java.lang.Object", + "insertText": "parseObject" + }, + { + "label": "set2DigitYearStart", + "kind": "method", + "documentation": "set2DigitYearStart(java.util.Date a): void", + "insertText": "set2DigitYearStart" + }, + { + "label": "setCalendar", + "kind": "method", + "documentation": "setCalendar(java.util.Calendar a): void", + "insertText": "setCalendar" + }, + { + "label": "setDateFormatSymbols", + "kind": "method", + "documentation": "setDateFormatSymbols(java.text.DateFormatSymbols a): void", + "insertText": "setDateFormatSymbols" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setNumberFormat", + "kind": "method", + "documentation": "setNumberFormat(java.text.NumberFormat a): void", + "insertText": "setNumberFormat" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "toLocalizedPattern", + "kind": "method", + "documentation": "toLocalizedPattern(): java.lang.String", + "insertText": "toLocalizedPattern" + }, + { + "label": "toPattern", + "kind": "method", + "documentation": "toPattern(): java.lang.String", + "insertText": "toPattern" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "SimpleDateFormat", + "kind": "constructor", + "documentation": "Constructor: SimpleDateFormat", + "insertText": "SimpleDateFormat" + } + }, + { + "label": "StringCharacterIterator", + "kind": "class", + "documentation": "Class: StringCharacterIterator", + "insertText": "StringCharacterIterator", + "properties": [ + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "current", + "kind": "method", + "documentation": "current(): char", + "insertText": "current" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): char", + "insertText": "first" + }, + { + "label": "getBeginIndex", + "kind": "method", + "documentation": "getBeginIndex(): int", + "insertText": "getBeginIndex" + }, + { + "label": "getEndIndex", + "kind": "method", + "documentation": "getEndIndex(): int", + "insertText": "getEndIndex" + }, + { + "label": "getIndex", + "kind": "method", + "documentation": "getIndex(): int", + "insertText": "getIndex" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): char", + "insertText": "last" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): char", + "insertText": "next" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(): char", + "insertText": "previous" + }, + { + "label": "setIndex", + "kind": "method", + "documentation": "setIndex(int a): char", + "insertText": "setIndex" + }, + { + "label": "setText", + "kind": "method", + "documentation": "setText(java.lang.String a): void", + "insertText": "setText" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringCharacterIterator", + "kind": "constructor", + "documentation": "Constructor: StringCharacterIterator", + "insertText": "StringCharacterIterator" + } + }, + { + "label": "Clock", + "kind": "class", + "documentation": "Class: Clock", + "insertText": "Clock", + "properties": [ + { + "label": "fixed", + "kind": "method", + "documentation": "fixed(java.time.Instant a, java.time.ZoneId b): java.time.Clock", + "insertText": "fixed" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "offset" + }, + { + "label": "tick", + "kind": "method", + "documentation": "tick(java.time.Clock a, java.time.Duration b): java.time.Clock", + "insertText": "tick" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "instant", + "kind": "method", + "documentation": "instant(): java.time.Instant", + "insertText": "instant" + }, + { + "label": "millis", + "kind": "method", + "documentation": "millis(): long", + "insertText": "millis" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeException", + "kind": "class", + "documentation": "Class: DateTimeException", + "insertText": "DateTimeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeException", + "kind": "constructor", + "documentation": "Constructor: DateTimeException", + "insertText": "DateTimeException" + } + }, + { + "label": "DayOfWeek", + "kind": "class", + "documentation": "Class: DayOfWeek", + "insertText": "DayOfWeek", + "properties": [ + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: java.time.DayOfWeek", + "insertText": "FRIDAY" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: java.time.DayOfWeek", + "insertText": "MONDAY" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: java.time.DayOfWeek", + "insertText": "SATURDAY" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: java.time.DayOfWeek", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: java.time.DayOfWeek", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: java.time.DayOfWeek", + "insertText": "TUESDAY" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: java.time.DayOfWeek", + "insertText": "WEDNESDAY" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.DayOfWeek", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.DayOfWeek", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.DayOfWeek", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.DayOfWeek;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.DayOfWeek", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.DayOfWeek", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Duration", + "kind": "class", + "documentation": "Class: Duration", + "insertText": "Duration", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Duration", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): java.time.Duration", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Duration", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a, java.time.temporal.TemporalUnit b): java.time.Duration", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(long a): java.time.Duration", + "insertText": "ofDays" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(long a): java.time.Duration", + "insertText": "ofHours" + }, + { + "label": "ofMillis", + "kind": "method", + "documentation": "ofMillis(long a): java.time.Duration", + "insertText": "ofMillis" + }, + { + "label": "ofMinutes", + "kind": "method", + "documentation": "ofMinutes(long a): java.time.Duration", + "insertText": "ofMinutes" + }, + { + "label": "ofNanos", + "kind": "method", + "documentation": "ofNanos(long a): java.time.Duration", + "insertText": "ofNanos" + }, + { + "label": "ofSeconds", + "kind": "method", + "documentation": "ofSeconds(long a, long b | long a): java.time.Duration", + "insertText": "ofSeconds" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Duration", + "insertText": "parse" + }, + { + "label": "abs", + "kind": "method", + "documentation": "abs(): java.time.Duration", + "insertText": "abs" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Duration a): int", + "insertText": "compareTo" + }, + { + "label": "dividedBy", + "kind": "method", + "documentation": "dividedBy(long a): java.time.Duration", + "insertText": "dividedBy" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSeconds", + "kind": "method", + "documentation": "getSeconds(): long", + "insertText": "getSeconds" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Duration", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.Duration", + "insertText": "minusHours" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Duration", + "insertText": "minusMillis" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.Duration", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Duration", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Duration", + "insertText": "minusSeconds" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(long a): java.time.Duration", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Duration", + "insertText": "negated" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.Duration a): java.time.Duration", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Duration", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.Duration", + "insertText": "plusHours" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Duration", + "insertText": "plusMillis" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.Duration", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Duration", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Duration", + "insertText": "plusSeconds" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toDays", + "kind": "method", + "documentation": "toDays(): long", + "insertText": "toDays" + }, + { + "label": "toHours", + "kind": "method", + "documentation": "toHours(): long", + "insertText": "toHours" + }, + { + "label": "toMillis", + "kind": "method", + "documentation": "toMillis(): long", + "insertText": "toMillis" + }, + { + "label": "toMinutes", + "kind": "method", + "documentation": "toMinutes(): long", + "insertText": "toMinutes" + }, + { + "label": "toNanos", + "kind": "method", + "documentation": "toNanos(): long", + "insertText": "toNanos" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withNanos", + "kind": "method", + "documentation": "withNanos(int a): java.time.Duration", + "insertText": "withNanos" + }, + { + "label": "withSeconds", + "kind": "method", + "documentation": "withSeconds(long a): java.time.Duration", + "insertText": "withSeconds" + } + ] + }, + { + "label": "Instant", + "kind": "class", + "documentation": "Class: Instant", + "insertText": "Instant", + "properties": [ + { + "label": "EPOCH", + "kind": "property", + "documentation": "EPOCH: java.time.Instant", + "insertText": "EPOCH" + }, + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.Instant", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.Instant", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Instant", + "insertText": "from" + }, + { + "label": "ofEpochMilli", + "kind": "method", + "documentation": "ofEpochMilli(long a): java.time.Instant", + "insertText": "ofEpochMilli" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, long b | long a): java.time.Instant", + "insertText": "ofEpochSecond" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Instant", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Instant a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getEpochSecond", + "kind": "method", + "documentation": "getEpochSecond(): long", + "insertText": "getEpochSecond" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Instant a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.Instant a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "minus" + }, + { + "label": "minusMillis", + "kind": "method", + "documentation": "minusMillis(long a): java.time.Instant", + "insertText": "minusMillis" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.Instant", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.Instant", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Instant", + "insertText": "plus" + }, + { + "label": "plusMillis", + "kind": "method", + "documentation": "plusMillis(long a): java.time.Instant", + "insertText": "plusMillis" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.Instant", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.Instant", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.Instant", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Instant", + "insertText": "with" + } + ] + }, + { + "label": "LocalDate", + "kind": "class", + "documentation": "Class: LocalDate", + "insertText": "LocalDate", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDate", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDate", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.LocalDate", + "insertText": "of" + }, + { + "label": "ofEpochDay", + "kind": "method", + "documentation": "ofEpochDay(long a): java.time.LocalDate", + "insertText": "ofEpochDay" + }, + { + "label": "ofYearDay", + "kind": "method", + "documentation": "ofYearDay(int a, int b): java.time.LocalDate", + "insertText": "ofYearDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDate", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atStartOfDay", + "kind": "method", + "documentation": "atStartOfDay(java.time.ZoneId a): java.time.ZonedDateTime | java.time.LocalDateTime", + "insertText": "atStartOfDay" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(int a, int b, int c, int d | int a, int b, int c | int a, int b | java.time.LocalTime a): java.time.LocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDate", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDate", + "insertText": "minusMonths" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDate", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDate", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDate", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDate", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDate", + "insertText": "plusMonths" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDate", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDate", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.Period", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDate", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDate", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDate", + "insertText": "withDayOfYear" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDate", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDate", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalDateTime", + "kind": "class", + "documentation": "Class: LocalDateTime", + "insertText": "LocalDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined | int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | java.time.LocalDate a, java.time.LocalTime b): java.time.LocalDateTime", + "insertText": "of" + }, + { + "label": "ofEpochSecond", + "kind": "method", + "documentation": "ofEpochSecond(long a, int b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "ofEpochSecond" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.LocalDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalDateTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "atOffset" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.LocalDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.LocalDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.LocalDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.LocalDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.LocalDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.LocalDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.LocalDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.LocalDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.LocalDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.LocalDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.LocalDateTime", + "insertText": "withMonth" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.LocalDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "LocalTime", + "kind": "class", + "documentation": "Class: LocalTime", + "insertText": "LocalTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.LocalTime", + "insertText": "MAX" + }, + { + "label": "MIDNIGHT", + "kind": "property", + "documentation": "MIDNIGHT: java.time.LocalTime", + "insertText": "MIDNIGHT" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.LocalTime", + "insertText": "MIN" + }, + { + "label": "NOON", + "kind": "property", + "documentation": "NOON: java.time.LocalTime", + "insertText": "NOON" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.LocalTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d | int a, int b, int c | int a, int b): java.time.LocalTime", + "insertText": "of" + }, + { + "label": "ofNanoOfDay", + "kind": "method", + "documentation": "ofNanoOfDay(long a): java.time.LocalTime", + "insertText": "ofNanoOfDay" + }, + { + "label": "ofSecondOfDay", + "kind": "method", + "documentation": "ofSecondOfDay(long a): java.time.LocalTime", + "insertText": "ofSecondOfDay" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.LocalTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDate", + "kind": "method", + "documentation": "atDate(java.time.LocalDate a): java.time.LocalDateTime", + "insertText": "atDate" + }, + { + "label": "atOffset", + "kind": "method", + "documentation": "atOffset(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "atOffset" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.LocalTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.LocalTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.LocalTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.LocalTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.LocalTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.LocalTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.LocalTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.LocalTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.LocalTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.LocalTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.LocalTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.LocalTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toNanoOfDay", + "kind": "method", + "documentation": "toNanoOfDay(): long", + "insertText": "toNanoOfDay" + }, + { + "label": "toSecondOfDay", + "kind": "method", + "documentation": "toSecondOfDay(): int", + "insertText": "toSecondOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.LocalTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.LocalTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.LocalTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.LocalTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.LocalTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.LocalTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Month", + "kind": "class", + "documentation": "Class: Month", + "insertText": "Month", + "properties": [ + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: java.time.Month", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: java.time.Month", + "insertText": "AUGUST" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: java.time.Month", + "insertText": "DECEMBER" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: java.time.Month", + "insertText": "FEBRUARY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: java.time.Month", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: java.time.Month", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: java.time.Month", + "insertText": "JUNE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: java.time.Month", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: java.time.Month", + "insertText": "MAY" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: java.time.Month", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: java.time.Month", + "insertText": "OCTOBER" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: java.time.Month", + "insertText": "SEPTEMBER" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Month", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Month", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.Month", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.Month;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(boolean a): int", + "insertText": "firstDayOfYear" + }, + { + "label": "firstMonthOfQuarter", + "kind": "method", + "documentation": "firstMonthOfQuarter(): java.time.Month", + "insertText": "firstMonthOfQuarter" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(boolean a): int", + "insertText": "length" + }, + { + "label": "maxLength", + "kind": "method", + "documentation": "maxLength(): int", + "insertText": "maxLength" + }, + { + "label": "minLength", + "kind": "method", + "documentation": "minLength(): int", + "insertText": "minLength" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a): java.time.Month", + "insertText": "minus" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a): java.time.Month", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MonthDay", + "kind": "class", + "documentation": "Class: MonthDay", + "insertText": "MonthDay", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.MonthDay", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.MonthDay", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.MonthDay", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atYear", + "kind": "method", + "documentation": "atYear(int a): java.time.LocalDate", + "insertText": "atYear" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.MonthDay a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.MonthDay a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.MonthDay a): boolean", + "insertText": "isBefore" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidYear", + "kind": "method", + "documentation": "isValidYear(int a): boolean", + "insertText": "isValidYear" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.Month a): java.time.MonthDay", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.MonthDay", + "insertText": "withDayOfMonth" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.MonthDay", + "insertText": "withMonth" + } + ] + }, + { + "label": "OffsetDateTime", + "kind": "class", + "documentation": "Class: OffsetDateTime", + "insertText": "OffsetDateTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetDateTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetDateTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneOffset undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneOffset c | java.time.LocalDateTime a, java.time.ZoneOffset b): java.time.OffsetDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetDateTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetDateTime", + "insertText": "parse" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZoneSameInstant", + "kind": "method", + "documentation": "atZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSameInstant" + }, + { + "label": "atZoneSimilarLocal", + "kind": "method", + "documentation": "atZoneSimilarLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "atZoneSimilarLocal" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.OffsetDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.OffsetDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.OffsetDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.OffsetDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.OffsetDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.OffsetDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.OffsetDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.OffsetDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetTime", + "kind": "method", + "documentation": "toOffsetTime(): java.time.OffsetTime", + "insertText": "toOffsetTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.OffsetDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.OffsetDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetDateTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.OffsetDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetDateTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetDateTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.OffsetDateTime", + "insertText": "withYear" + } + ] + }, + { + "label": "OffsetTime", + "kind": "class", + "documentation": "Class: OffsetTime", + "insertText": "OffsetTime", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.OffsetTime", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.OffsetTime", + "insertText": "MIN" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.OffsetTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, java.time.ZoneOffset e | java.time.LocalTime a, java.time.ZoneOffset b): java.time.OffsetTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.Instant a, java.time.ZoneId b): java.time.OffsetTime", + "insertText": "ofInstant" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.OffsetTime", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.OffsetTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.OffsetTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.OffsetTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.OffsetTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "minus" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.OffsetTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.OffsetTime", + "insertText": "minusMinutes" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.OffsetTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.OffsetTime", + "insertText": "minusSeconds" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.OffsetTime", + "insertText": "plus" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.OffsetTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.OffsetTime", + "insertText": "plusMinutes" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.OffsetTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.OffsetTime", + "insertText": "plusSeconds" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.OffsetTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.OffsetTime", + "insertText": "with" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.OffsetTime", + "insertText": "withHour" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.OffsetTime", + "insertText": "withMinute" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.OffsetTime", + "insertText": "withNano" + }, + { + "label": "withOffsetSameInstant", + "kind": "method", + "documentation": "withOffsetSameInstant(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameInstant" + }, + { + "label": "withOffsetSameLocal", + "kind": "method", + "documentation": "withOffsetSameLocal(java.time.ZoneOffset a): java.time.OffsetTime", + "insertText": "withOffsetSameLocal" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.OffsetTime", + "insertText": "withSecond" + } + ] + }, + { + "label": "Period", + "kind": "class", + "documentation": "Class: Period", + "insertText": "Period", + "properties": [ + { + "label": "ZERO", + "kind": "property", + "documentation": "ZERO: java.time.Period", + "insertText": "ZERO" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.LocalDate a, java.time.LocalDate b): java.time.Period", + "insertText": "between" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.Period", + "insertText": "of" + }, + { + "label": "ofDays", + "kind": "method", + "documentation": "ofDays(int a): java.time.Period", + "insertText": "ofDays" + }, + { + "label": "ofMonths", + "kind": "method", + "documentation": "ofMonths(int a): java.time.Period", + "insertText": "ofMonths" + }, + { + "label": "ofWeeks", + "kind": "method", + "documentation": "ofWeeks(int a): java.time.Period", + "insertText": "ofWeeks" + }, + { + "label": "ofYears", + "kind": "method", + "documentation": "ofYears(int a): java.time.Period", + "insertText": "ofYears" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a): java.time.Period", + "insertText": "parse" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.IsoChronology", + "insertText": "getChronology" + }, + { + "label": "getDays", + "kind": "method", + "documentation": "getDays(): int", + "insertText": "getDays" + }, + { + "label": "getMonths", + "kind": "method", + "documentation": "getMonths(): int", + "insertText": "getMonths" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "getYears", + "kind": "method", + "documentation": "getYears(): int", + "insertText": "getYears" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.Period", + "insertText": "minusDays" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.Period", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Period", + "insertText": "minusYears" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.Period", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.Period", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.Period", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.Period", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.Period", + "insertText": "plusDays" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.Period", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Period", + "insertText": "plusYears" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toTotalMonths", + "kind": "method", + "documentation": "toTotalMonths(): long", + "insertText": "toTotalMonths" + }, + { + "label": "withDays", + "kind": "method", + "documentation": "withDays(int a): java.time.Period", + "insertText": "withDays" + }, + { + "label": "withMonths", + "kind": "method", + "documentation": "withMonths(int a): java.time.Period", + "insertText": "withMonths" + }, + { + "label": "withYears", + "kind": "method", + "documentation": "withYears(int a): java.time.Period", + "insertText": "withYears" + } + ] + }, + { + "label": "Year", + "kind": "class", + "documentation": "Class: Year", + "insertText": "Year", + "properties": [ + { + "label": "MAX_VALUE", + "kind": "property", + "documentation": "MAX_VALUE: int", + "insertText": "MAX_VALUE" + }, + { + "label": "MIN_VALUE", + "kind": "property", + "documentation": "MIN_VALUE: int", + "insertText": "MIN_VALUE" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.Year", + "insertText": "from" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(long a): boolean", + "insertText": "isLeap" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.Year", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.Year", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atMonth", + "kind": "method", + "documentation": "atMonth(int a): java.time.YearMonth", + "insertText": "atMonth" + }, + { + "label": "atMonthDay", + "kind": "method", + "documentation": "atMonthDay(java.time.MonthDay a): java.time.LocalDate", + "insertText": "atMonthDay" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.Year a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.Year a): boolean", + "insertText": "isAfter" + }, + { + "label": "isLeap", + "kind": "method", + "documentation": "isLeap(): boolean", + "insertText": "isLeap" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidMonthDay", + "kind": "method", + "documentation": "isValidMonthDay(java.time.MonthDay a): boolean", + "insertText": "isValidMonthDay" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "minus" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.Year", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.Year", + "insertText": "plus" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.Year", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.Year", + "insertText": "with" + } + ] + }, + { + "label": "YearMonth", + "kind": "class", + "documentation": "Class: YearMonth", + "insertText": "YearMonth", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.YearMonth", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b): java.time.YearMonth", + "insertText": "of" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.YearMonth", + "insertText": "parse" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atDay", + "kind": "method", + "documentation": "atDay(int a): java.time.LocalDate", + "insertText": "atDay" + }, + { + "label": "atEndOfMonth", + "kind": "method", + "documentation": "atEndOfMonth(): java.time.LocalDate", + "insertText": "atEndOfMonth" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.YearMonth a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.YearMonth a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.YearMonth a): boolean", + "insertText": "isBefore" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "isValidDay", + "kind": "method", + "documentation": "isValidDay(int a): boolean", + "insertText": "isValidDay" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "minus" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.YearMonth", + "insertText": "minusMonths" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.YearMonth", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.YearMonth", + "insertText": "plus" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.YearMonth", + "insertText": "plusMonths" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.YearMonth", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.YearMonth", + "insertText": "with" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.YearMonth", + "insertText": "withMonth" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.YearMonth", + "insertText": "withYear" + } + ] + }, + { + "label": "ZoneId", + "kind": "class", + "documentation": "Class: ZoneId", + "insertText": "ZoneId", + "properties": [ + { + "label": "SHORT_IDS", + "kind": "property", + "documentation": "SHORT_IDS: java.util.Map", + "insertText": "SHORT_IDS" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneId", + "insertText": "from" + }, + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a, java.util.Map b | java.lang.String a): java.time.ZoneId", + "insertText": "of" + }, + { + "label": "ofOffset", + "kind": "method", + "documentation": "ofOffset(java.lang.String a, java.time.ZoneOffset b): java.time.ZoneId", + "insertText": "ofOffset" + }, + { + "label": "systemDefault", + "kind": "method", + "documentation": "systemDefault(): java.time.ZoneId", + "insertText": "systemDefault" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffset", + "kind": "class", + "documentation": "Class: ZoneOffset", + "insertText": "ZoneOffset", + "properties": [ + { + "label": "MAX", + "kind": "property", + "documentation": "MAX: java.time.ZoneOffset", + "insertText": "MAX" + }, + { + "label": "MIN", + "kind": "property", + "documentation": "MIN: java.time.ZoneOffset", + "insertText": "MIN" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.ZoneOffset", + "insertText": "UTC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZoneOffset", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.ZoneOffset", + "insertText": "of" + }, + { + "label": "ofHours", + "kind": "method", + "documentation": "ofHours(int a): java.time.ZoneOffset", + "insertText": "ofHours" + }, + { + "label": "ofHoursMinutes", + "kind": "method", + "documentation": "ofHoursMinutes(int a, int b): java.time.ZoneOffset", + "insertText": "ofHoursMinutes" + }, + { + "label": "ofHoursMinutesSeconds", + "kind": "method", + "documentation": "ofHoursMinutesSeconds(int a, int b, int c): java.time.ZoneOffset", + "insertText": "ofHoursMinutesSeconds" + }, + { + "label": "ofTotalSeconds", + "kind": "method", + "documentation": "ofTotalSeconds(int a): java.time.ZoneOffset", + "insertText": "ofTotalSeconds" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getTotalSeconds", + "kind": "method", + "documentation": "getTotalSeconds(): int", + "insertText": "getTotalSeconds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.ZoneId", + "insertText": "normalized" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZonedDateTime", + "kind": "class", + "documentation": "Class: ZonedDateTime", + "insertText": "ZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c, int d, int e, int f, int undefined, java.time.ZoneId undefined | java.time.LocalDate a, java.time.LocalTime b, java.time.ZoneId c | java.time.LocalDateTime a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "of" + }, + { + "label": "ofInstant", + "kind": "method", + "documentation": "ofInstant(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c | java.time.Instant a, java.time.ZoneId b): java.time.ZonedDateTime", + "insertText": "ofInstant" + }, + { + "label": "ofLocal", + "kind": "method", + "documentation": "ofLocal(java.time.LocalDateTime a, java.time.ZoneId b, java.time.ZoneOffset c): java.time.ZonedDateTime", + "insertText": "ofLocal" + }, + { + "label": "ofStrict", + "kind": "method", + "documentation": "ofStrict(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneId c): java.time.ZonedDateTime", + "insertText": "ofStrict" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.format.DateTimeFormatter b | java.lang.CharSequence a): java.time.ZonedDateTime", + "insertText": "parse" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "AbstractChronology", + "kind": "class", + "documentation": "Class: AbstractChronology", + "insertText": "AbstractChronology", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ChronoLocalDate", + "kind": "class", + "documentation": "Class: ChronoLocalDate", + "insertText": "ChronoLocalDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.Era", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDate", + "insertText": "with" + } + ] + }, + { + "label": "ChronoLocalDateTime", + "kind": "class", + "documentation": "Class: ChronoLocalDateTime", + "insertText": "ChronoLocalDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atZone", + "kind": "method", + "documentation": "atZone(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "atZone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoLocalDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(java.time.ZoneOffset a): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(java.time.ZoneOffset a): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoLocalDateTime", + "insertText": "with" + } + ] + }, + { + "label": "ChronoPeriod", + "kind": "class", + "documentation": "Class: ChronoPeriod", + "insertText": "ChronoPeriod", + "properties": [ + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.chrono.ChronoLocalDate a, java.time.chrono.ChronoLocalDate b): java.time.chrono.ChronoPeriod", + "insertText": "between" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isNegative", + "kind": "method", + "documentation": "isNegative(): boolean", + "insertText": "isNegative" + }, + { + "label": "isZero", + "kind": "method", + "documentation": "isZero(): boolean", + "insertText": "isZero" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "minus" + }, + { + "label": "multipliedBy", + "kind": "method", + "documentation": "multipliedBy(int a): java.time.chrono.ChronoPeriod", + "insertText": "multipliedBy" + }, + { + "label": "negated", + "kind": "method", + "documentation": "negated(): java.time.chrono.ChronoPeriod", + "insertText": "negated" + }, + { + "label": "normalized", + "kind": "method", + "documentation": "normalized(): java.time.chrono.ChronoPeriod", + "insertText": "normalized" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(java.time.temporal.TemporalAmount a): java.time.chrono.ChronoPeriod", + "insertText": "plus" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoZonedDateTime", + "kind": "class", + "documentation": "Class: ChronoZonedDateTime", + "insertText": "ChronoZonedDateTime", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "from" + }, + { + "label": "timeLineOrder", + "kind": "method", + "documentation": "timeLineOrder(): java.util.Comparator", + "insertText": "timeLineOrder" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ChronoZonedDateTime", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.chrono.ChronoLocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.chrono.ChronoLocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ChronoZonedDateTime", + "insertText": "with" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.chrono.ChronoZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.chrono.ChronoZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "Chronology", + "kind": "class", + "documentation": "Class: Chronology", + "insertText": "Chronology", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.Chronology", + "insertText": "from" + }, + { + "label": "getAvailableChronologies", + "kind": "method", + "documentation": "getAvailableChronologies(): java.util.Set", + "insertText": "getAvailableChronologies" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.lang.String a): java.time.chrono.Chronology", + "insertText": "of" + }, + { + "label": "ofLocale", + "kind": "method", + "documentation": "ofLocale(java.util.Locale a): java.time.chrono.Chronology", + "insertText": "ofLocale" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ChronoLocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ChronoLocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.Era", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ChronoLocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "Era", + "kind": "class", + "documentation": "Class: Era", + "insertText": "Era", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "HijrahChronology", + "kind": "class", + "documentation": "Class: HijrahChronology", + "insertText": "HijrahChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.HijrahChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.HijrahDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.HijrahDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.HijrahEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.HijrahDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "HijrahDate", + "kind": "class", + "documentation": "Class: HijrahDate", + "insertText": "HijrahDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.HijrahDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.HijrahDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.HijrahChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.HijrahEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.HijrahDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.HijrahDate", + "insertText": "with" + }, + { + "label": "withVariant", + "kind": "method", + "documentation": "withVariant(java.time.chrono.HijrahChronology a): java.time.chrono.HijrahDate", + "insertText": "withVariant" + } + ] + }, + { + "label": "HijrahEra", + "kind": "class", + "documentation": "Class: HijrahEra", + "insertText": "HijrahEra", + "properties": [ + { + "label": "AH", + "kind": "property", + "documentation": "AH: java.time.chrono.HijrahEra", + "insertText": "AH" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.HijrahEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.HijrahEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.HijrahEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoChronology", + "kind": "class", + "documentation": "Class: IsoChronology", + "insertText": "IsoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.IsoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.LocalDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.LocalDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.LocalDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.IsoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.LocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.Period", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.LocalDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.ZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "IsoEra", + "kind": "class", + "documentation": "Class: IsoEra", + "insertText": "IsoEra", + "properties": [ + { + "label": "BCE", + "kind": "property", + "documentation": "BCE: java.time.chrono.IsoEra", + "insertText": "BCE" + }, + { + "label": "CE", + "kind": "property", + "documentation": "CE: java.time.chrono.IsoEra", + "insertText": "CE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.IsoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.IsoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.IsoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JapaneseChronology", + "kind": "class", + "documentation": "Class: JapaneseChronology", + "insertText": "JapaneseChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.JapaneseChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.JapaneseDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.JapaneseDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.JapaneseEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.JapaneseDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "JapaneseDate", + "kind": "class", + "documentation": "Class: JapaneseDate", + "insertText": "JapaneseDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.JapaneseDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.JapaneseDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.JapaneseChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.JapaneseEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.JapaneseDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.JapaneseDate", + "insertText": "with" + } + ] + }, + { + "label": "JapaneseEra", + "kind": "class", + "documentation": "Class: JapaneseEra", + "insertText": "JapaneseEra", + "properties": [ + { + "label": "HEISEI", + "kind": "property", + "documentation": "HEISEI: java.time.chrono.JapaneseEra", + "insertText": "HEISEI" + }, + { + "label": "MEIJI", + "kind": "property", + "documentation": "MEIJI: java.time.chrono.JapaneseEra", + "insertText": "MEIJI" + }, + { + "label": "SHOWA", + "kind": "property", + "documentation": "SHOWA: java.time.chrono.JapaneseEra", + "insertText": "SHOWA" + }, + { + "label": "TAISHO", + "kind": "property", + "documentation": "TAISHO: java.time.chrono.JapaneseEra", + "insertText": "TAISHO" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.JapaneseEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.JapaneseEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.JapaneseEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MinguoChronology", + "kind": "class", + "documentation": "Class: MinguoChronology", + "insertText": "MinguoChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.MinguoChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.MinguoDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.MinguoDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.MinguoEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.MinguoDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "MinguoDate", + "kind": "class", + "documentation": "Class: MinguoDate", + "insertText": "MinguoDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.MinguoDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.MinguoDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.MinguoChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.MinguoEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.MinguoDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.MinguoDate", + "insertText": "with" + } + ] + }, + { + "label": "MinguoEra", + "kind": "class", + "documentation": "Class: MinguoEra", + "insertText": "MinguoEra", + "properties": [ + { + "label": "BEFORE_ROC", + "kind": "property", + "documentation": "BEFORE_ROC: java.time.chrono.MinguoEra", + "insertText": "BEFORE_ROC" + }, + { + "label": "ROC", + "kind": "property", + "documentation": "ROC: java.time.chrono.MinguoEra", + "insertText": "ROC" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.MinguoEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.MinguoEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.MinguoEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ThaiBuddhistChronology", + "kind": "class", + "documentation": "Class: ThaiBuddhistChronology", + "insertText": "ThaiBuddhistChronology", + "properties": [ + { + "label": "INSTANCE", + "kind": "property", + "documentation": "INSTANCE: java.time.chrono.ThaiBuddhistChronology", + "insertText": "INSTANCE" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.Chronology a): int", + "insertText": "compareTo" + }, + { + "label": "date", + "kind": "method", + "documentation": "date(java.time.chrono.Era a, int b, int c, int d | int a, int b, int c | java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "date" + }, + { + "label": "dateEpochDay", + "kind": "method", + "documentation": "dateEpochDay(long a): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateEpochDay" + }, + { + "label": "dateYearDay", + "kind": "method", + "documentation": "dateYearDay(java.time.chrono.Era a, int b, int c | int a, int b): java.time.chrono.ThaiBuddhistDate", + "insertText": "dateYearDay" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "eraOf", + "kind": "method", + "documentation": "eraOf(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "eraOf" + }, + { + "label": "eras", + "kind": "method", + "documentation": "eras(): java.util.List", + "insertText": "eras" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getId", + "kind": "method", + "documentation": "getId(): java.lang.String", + "insertText": "getId" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(long a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "localDateTime", + "kind": "method", + "documentation": "localDateTime(java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoLocalDateTime", + "insertText": "localDateTime" + }, + { + "label": "period", + "kind": "method", + "documentation": "period(int a, int b, int c): java.time.chrono.ChronoPeriod", + "insertText": "period" + }, + { + "label": "prolepticYear", + "kind": "method", + "documentation": "prolepticYear(java.time.chrono.Era a, int b): int", + "insertText": "prolepticYear" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.ChronoField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "resolveDate", + "kind": "method", + "documentation": "resolveDate(java.util.Map a, java.time.format.ResolverStyle b): java.time.chrono.ThaiBuddhistDate", + "insertText": "resolveDate" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "zonedDateTime", + "kind": "method", + "documentation": "zonedDateTime(java.time.Instant a, java.time.ZoneId b | java.time.temporal.TemporalAccessor a): java.time.chrono.ChronoZonedDateTime", + "insertText": "zonedDateTime" + } + ] + }, + { + "label": "ThaiBuddhistDate", + "kind": "class", + "documentation": "Class: ThaiBuddhistDate", + "insertText": "ThaiBuddhistDate", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.temporal.TemporalAccessor a): java.time.chrono.ThaiBuddhistDate", + "insertText": "from" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a, int b, int c): java.time.chrono.ThaiBuddhistDate", + "insertText": "of" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "atTime", + "kind": "method", + "documentation": "atTime(java.time.LocalTime a): java.time.chrono.ChronoLocalDateTime", + "insertText": "atTime" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoLocalDate a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.ThaiBuddhistChronology", + "insertText": "getChronology" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): java.time.chrono.ThaiBuddhistEra", + "insertText": "getEra" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoLocalDate a): boolean", + "insertText": "isEqual" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "lengthOfMonth", + "kind": "method", + "documentation": "lengthOfMonth(): int", + "insertText": "lengthOfMonth" + }, + { + "label": "lengthOfYear", + "kind": "method", + "documentation": "lengthOfYear(): int", + "insertText": "lengthOfYear" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.chrono.ThaiBuddhistDate", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochDay", + "kind": "method", + "documentation": "toEpochDay(): long", + "insertText": "toEpochDay" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b | java.time.chrono.ChronoLocalDate a): long | java.time.chrono.ChronoPeriod", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.chrono.ThaiBuddhistDate", + "insertText": "with" + } + ] + }, + { + "label": "ThaiBuddhistEra", + "kind": "class", + "documentation": "Class: ThaiBuddhistEra", + "insertText": "ThaiBuddhistEra", + "properties": [ + { + "label": "BE", + "kind": "property", + "documentation": "BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BE" + }, + { + "label": "BEFORE_BE", + "kind": "property", + "documentation": "BEFORE_BE: java.time.chrono.ThaiBuddhistEra", + "insertText": "BEFORE_BE" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.time.chrono.ThaiBuddhistEra", + "insertText": "of" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.chrono.ThaiBuddhistEra", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.chrono.ThaiBuddhistEra;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.time.format.TextStyle a, java.util.Locale b): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): int", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DateTimeFormatter", + "kind": "class", + "documentation": "Class: DateTimeFormatter", + "insertText": "DateTimeFormatter", + "properties": [ + { + "label": "BASIC_ISO_DATE", + "kind": "property", + "documentation": "BASIC_ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "BASIC_ISO_DATE" + }, + { + "label": "ISO_DATE", + "kind": "property", + "documentation": "ISO_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE" + }, + { + "label": "ISO_DATE_TIME", + "kind": "property", + "documentation": "ISO_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_DATE_TIME" + }, + { + "label": "ISO_INSTANT", + "kind": "property", + "documentation": "ISO_INSTANT: java.time.format.DateTimeFormatter", + "insertText": "ISO_INSTANT" + }, + { + "label": "ISO_LOCAL_DATE", + "kind": "property", + "documentation": "ISO_LOCAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE" + }, + { + "label": "ISO_LOCAL_DATE_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_DATE_TIME" + }, + { + "label": "ISO_LOCAL_TIME", + "kind": "property", + "documentation": "ISO_LOCAL_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_LOCAL_TIME" + }, + { + "label": "ISO_OFFSET_DATE", + "kind": "property", + "documentation": "ISO_OFFSET_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE" + }, + { + "label": "ISO_OFFSET_DATE_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_DATE_TIME" + }, + { + "label": "ISO_OFFSET_TIME", + "kind": "property", + "documentation": "ISO_OFFSET_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_OFFSET_TIME" + }, + { + "label": "ISO_ORDINAL_DATE", + "kind": "property", + "documentation": "ISO_ORDINAL_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_ORDINAL_DATE" + }, + { + "label": "ISO_TIME", + "kind": "property", + "documentation": "ISO_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_TIME" + }, + { + "label": "ISO_WEEK_DATE", + "kind": "property", + "documentation": "ISO_WEEK_DATE: java.time.format.DateTimeFormatter", + "insertText": "ISO_WEEK_DATE" + }, + { + "label": "ISO_ZONED_DATE_TIME", + "kind": "property", + "documentation": "ISO_ZONED_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "ISO_ZONED_DATE_TIME" + }, + { + "label": "RFC_1123_DATE_TIME", + "kind": "property", + "documentation": "RFC_1123_DATE_TIME: java.time.format.DateTimeFormatter", + "insertText": "RFC_1123_DATE_TIME" + }, + { + "label": "ofLocalizedDate", + "kind": "method", + "documentation": "ofLocalizedDate(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDate" + }, + { + "label": "ofLocalizedDateTime", + "kind": "method", + "documentation": "ofLocalizedDateTime(java.time.format.FormatStyle a, java.time.format.FormatStyle b | java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedDateTime" + }, + { + "label": "ofLocalizedTime", + "kind": "method", + "documentation": "ofLocalizedTime(java.time.format.FormatStyle a): java.time.format.DateTimeFormatter", + "insertText": "ofLocalizedTime" + }, + { + "label": "ofPattern", + "kind": "method", + "documentation": "ofPattern(java.lang.String a, java.util.Locale b | java.lang.String a): java.time.format.DateTimeFormatter", + "insertText": "ofPattern" + }, + { + "label": "parsedExcessDays", + "kind": "method", + "documentation": "parsedExcessDays(): java.time.temporal.TemporalQuery", + "insertText": "parsedExcessDays" + }, + { + "label": "parsedLeapSecond", + "kind": "method", + "documentation": "parsedLeapSecond(): java.time.temporal.TemporalQuery", + "insertText": "parsedLeapSecond" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.temporal.TemporalAccessor a): java.lang.String", + "insertText": "format" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.time.temporal.TemporalAccessor a, java.lang.Appendable b): void", + "insertText": "formatTo" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDecimalStyle", + "kind": "method", + "documentation": "getDecimalStyle(): java.time.format.DecimalStyle", + "insertText": "getDecimalStyle" + }, + { + "label": "getLocale", + "kind": "method", + "documentation": "getLocale(): java.util.Locale", + "insertText": "getLocale" + }, + { + "label": "getResolverFields", + "kind": "method", + "documentation": "getResolverFields(): java.util.Set", + "insertText": "getResolverFields" + }, + { + "label": "getResolverStyle", + "kind": "method", + "documentation": "getResolverStyle(): java.time.format.ResolverStyle", + "insertText": "getResolverStyle" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.CharSequence a, java.time.temporal.TemporalQuery b | java.lang.CharSequence a): org.elasticsearch.painless.lookup.def | java.time.temporal.TemporalAccessor", + "insertText": "parse" + }, + { + "label": "parseBest", + "kind": "method", + "documentation": "parseBest(java.lang.CharSequence a, [Ljava.time.temporal.TemporalQuery; b): java.time.temporal.TemporalAccessor", + "insertText": "parseBest" + }, + { + "label": "parseUnresolved", + "kind": "method", + "documentation": "parseUnresolved(java.lang.CharSequence a, java.text.ParsePosition b): java.time.temporal.TemporalAccessor", + "insertText": "parseUnresolved" + }, + { + "label": "toFormat", + "kind": "method", + "documentation": "toFormat(java.time.temporal.TemporalQuery a): java.text.Format", + "insertText": "toFormat" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withChronology", + "kind": "method", + "documentation": "withChronology(java.time.chrono.Chronology a): java.time.format.DateTimeFormatter", + "insertText": "withChronology" + }, + { + "label": "withDecimalStyle", + "kind": "method", + "documentation": "withDecimalStyle(java.time.format.DecimalStyle a): java.time.format.DateTimeFormatter", + "insertText": "withDecimalStyle" + }, + { + "label": "withLocale", + "kind": "method", + "documentation": "withLocale(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "withLocale" + }, + { + "label": "withResolverFields", + "kind": "method", + "documentation": "withResolverFields(java.util.Set a): java.time.format.DateTimeFormatter", + "insertText": "withResolverFields" + }, + { + "label": "withResolverStyle", + "kind": "method", + "documentation": "withResolverStyle(java.time.format.ResolverStyle a): java.time.format.DateTimeFormatter", + "insertText": "withResolverStyle" + }, + { + "label": "withZone", + "kind": "method", + "documentation": "withZone(java.time.ZoneId a): java.time.format.DateTimeFormatter", + "insertText": "withZone" + } + ] + }, + { + "label": "DateTimeFormatterBuilder", + "kind": "class", + "documentation": "Class: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder", + "properties": [ + { + "label": "getLocalizedDateTimePattern", + "kind": "method", + "documentation": "getLocalizedDateTimePattern(java.time.format.FormatStyle a, java.time.format.FormatStyle b, java.time.chrono.Chronology c, java.util.Locale d): java.lang.String", + "insertText": "getLocalizedDateTimePattern" + }, + { + "label": "append", + "kind": "method", + "documentation": "append(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "append" + }, + { + "label": "appendChronologyId", + "kind": "method", + "documentation": "appendChronologyId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyId" + }, + { + "label": "appendChronologyText", + "kind": "method", + "documentation": "appendChronologyText(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendChronologyText" + }, + { + "label": "appendFraction", + "kind": "method", + "documentation": "appendFraction(java.time.temporal.TemporalField a, int b, int c, boolean d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendFraction" + }, + { + "label": "appendInstant", + "kind": "method", + "documentation": "appendInstant(int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendInstant" + }, + { + "label": "appendLiteral", + "kind": "method", + "documentation": "appendLiteral(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLiteral" + }, + { + "label": "appendLocalized", + "kind": "method", + "documentation": "appendLocalized(java.time.format.FormatStyle a, java.time.format.FormatStyle b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalized" + }, + { + "label": "appendLocalizedOffset", + "kind": "method", + "documentation": "appendLocalizedOffset(java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendLocalizedOffset" + }, + { + "label": "appendOffset", + "kind": "method", + "documentation": "appendOffset(java.lang.String a, java.lang.String b): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffset" + }, + { + "label": "appendOffsetId", + "kind": "method", + "documentation": "appendOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOffsetId" + }, + { + "label": "appendOptional", + "kind": "method", + "documentation": "appendOptional(java.time.format.DateTimeFormatter a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendOptional" + }, + { + "label": "appendPattern", + "kind": "method", + "documentation": "appendPattern(java.lang.String a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendPattern" + }, + { + "label": "appendText", + "kind": "method", + "documentation": "appendText(java.time.temporal.TemporalField a, java.time.format.TextStyle b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendText" + }, + { + "label": "appendValue", + "kind": "method", + "documentation": "appendValue(java.time.temporal.TemporalField a, int b, int c, java.time.format.SignStyle d | java.time.temporal.TemporalField a, int b | java.time.temporal.TemporalField a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValue" + }, + { + "label": "appendValueReduced", + "kind": "method", + "documentation": "appendValueReduced(java.time.temporal.TemporalField a, int b, int c, int d): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendValueReduced" + }, + { + "label": "appendZoneId", + "kind": "method", + "documentation": "appendZoneId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneId" + }, + { + "label": "appendZoneOrOffsetId", + "kind": "method", + "documentation": "appendZoneOrOffsetId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneOrOffsetId" + }, + { + "label": "appendZoneRegionId", + "kind": "method", + "documentation": "appendZoneRegionId(): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneRegionId" + }, + { + "label": "appendZoneText", + "kind": "method", + "documentation": "appendZoneText(java.time.format.TextStyle a, java.util.Set b | java.time.format.TextStyle a): java.time.format.DateTimeFormatterBuilder", + "insertText": "appendZoneText" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "optionalEnd", + "kind": "method", + "documentation": "optionalEnd(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalEnd" + }, + { + "label": "optionalStart", + "kind": "method", + "documentation": "optionalStart(): java.time.format.DateTimeFormatterBuilder", + "insertText": "optionalStart" + }, + { + "label": "padNext", + "kind": "method", + "documentation": "padNext(int a, char b | int a): java.time.format.DateTimeFormatterBuilder", + "insertText": "padNext" + }, + { + "label": "parseCaseInsensitive", + "kind": "method", + "documentation": "parseCaseInsensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseInsensitive" + }, + { + "label": "parseCaseSensitive", + "kind": "method", + "documentation": "parseCaseSensitive(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseCaseSensitive" + }, + { + "label": "parseDefaulting", + "kind": "method", + "documentation": "parseDefaulting(java.time.temporal.TemporalField a, long b): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseDefaulting" + }, + { + "label": "parseLenient", + "kind": "method", + "documentation": "parseLenient(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseLenient" + }, + { + "label": "parseStrict", + "kind": "method", + "documentation": "parseStrict(): java.time.format.DateTimeFormatterBuilder", + "insertText": "parseStrict" + }, + { + "label": "toFormatter", + "kind": "method", + "documentation": "toFormatter(java.util.Locale a): java.time.format.DateTimeFormatter", + "insertText": "toFormatter" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeFormatterBuilder", + "kind": "constructor", + "documentation": "Constructor: DateTimeFormatterBuilder", + "insertText": "DateTimeFormatterBuilder" + } + }, + { + "label": "DateTimeParseException", + "kind": "class", + "documentation": "Class: DateTimeParseException", + "insertText": "DateTimeParseException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getParsedString", + "kind": "method", + "documentation": "getParsedString(): java.lang.String", + "insertText": "getParsedString" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DateTimeParseException", + "kind": "constructor", + "documentation": "Constructor: DateTimeParseException", + "insertText": "DateTimeParseException" + } + }, + { + "label": "DecimalStyle", + "kind": "class", + "documentation": "Class: DecimalStyle", + "insertText": "DecimalStyle", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.format.DecimalStyle", + "insertText": "STANDARD" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): java.util.Set", + "insertText": "getAvailableLocales" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.Locale a): java.time.format.DecimalStyle", + "insertText": "of" + }, + { + "label": "ofDefaultLocale", + "kind": "method", + "documentation": "ofDefaultLocale(): java.time.format.DecimalStyle", + "insertText": "ofDefaultLocale" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDecimalSeparator", + "kind": "method", + "documentation": "getDecimalSeparator(): char", + "insertText": "getDecimalSeparator" + }, + { + "label": "getNegativeSign", + "kind": "method", + "documentation": "getNegativeSign(): char", + "insertText": "getNegativeSign" + }, + { + "label": "getPositiveSign", + "kind": "method", + "documentation": "getPositiveSign(): char", + "insertText": "getPositiveSign" + }, + { + "label": "getZeroDigit", + "kind": "method", + "documentation": "getZeroDigit(): char", + "insertText": "getZeroDigit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withDecimalSeparator", + "kind": "method", + "documentation": "withDecimalSeparator(char a): java.time.format.DecimalStyle", + "insertText": "withDecimalSeparator" + }, + { + "label": "withNegativeSign", + "kind": "method", + "documentation": "withNegativeSign(char a): java.time.format.DecimalStyle", + "insertText": "withNegativeSign" + }, + { + "label": "withPositiveSign", + "kind": "method", + "documentation": "withPositiveSign(char a): java.time.format.DecimalStyle", + "insertText": "withPositiveSign" + }, + { + "label": "withZeroDigit", + "kind": "method", + "documentation": "withZeroDigit(char a): java.time.format.DecimalStyle", + "insertText": "withZeroDigit" + } + ] + }, + { + "label": "FormatStyle", + "kind": "class", + "documentation": "Class: FormatStyle", + "insertText": "FormatStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.FormatStyle", + "insertText": "FULL" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: java.time.format.FormatStyle", + "insertText": "LONG" + }, + { + "label": "MEDIUM", + "kind": "property", + "documentation": "MEDIUM: java.time.format.FormatStyle", + "insertText": "MEDIUM" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.FormatStyle", + "insertText": "SHORT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.FormatStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.FormatStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ResolverStyle", + "kind": "class", + "documentation": "Class: ResolverStyle", + "insertText": "ResolverStyle", + "properties": [ + { + "label": "LENIENT", + "kind": "property", + "documentation": "LENIENT: java.time.format.ResolverStyle", + "insertText": "LENIENT" + }, + { + "label": "SMART", + "kind": "property", + "documentation": "SMART: java.time.format.ResolverStyle", + "insertText": "SMART" + }, + { + "label": "STRICT", + "kind": "property", + "documentation": "STRICT: java.time.format.ResolverStyle", + "insertText": "STRICT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.ResolverStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.ResolverStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SignStyle", + "kind": "class", + "documentation": "Class: SignStyle", + "insertText": "SignStyle", + "properties": [ + { + "label": "ALWAYS", + "kind": "property", + "documentation": "ALWAYS: java.time.format.SignStyle", + "insertText": "ALWAYS" + }, + { + "label": "EXCEEDS_PAD", + "kind": "property", + "documentation": "EXCEEDS_PAD: java.time.format.SignStyle", + "insertText": "EXCEEDS_PAD" + }, + { + "label": "NEVER", + "kind": "property", + "documentation": "NEVER: java.time.format.SignStyle", + "insertText": "NEVER" + }, + { + "label": "NORMAL", + "kind": "property", + "documentation": "NORMAL: java.time.format.SignStyle", + "insertText": "NORMAL" + }, + { + "label": "NOT_NEGATIVE", + "kind": "property", + "documentation": "NOT_NEGATIVE: java.time.format.SignStyle", + "insertText": "NOT_NEGATIVE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.SignStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.SignStyle;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TextStyle", + "kind": "class", + "documentation": "Class: TextStyle", + "insertText": "TextStyle", + "properties": [ + { + "label": "FULL", + "kind": "property", + "documentation": "FULL: java.time.format.TextStyle", + "insertText": "FULL" + }, + { + "label": "FULL_STANDALONE", + "kind": "property", + "documentation": "FULL_STANDALONE: java.time.format.TextStyle", + "insertText": "FULL_STANDALONE" + }, + { + "label": "NARROW", + "kind": "property", + "documentation": "NARROW: java.time.format.TextStyle", + "insertText": "NARROW" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: java.time.format.TextStyle", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: java.time.format.TextStyle", + "insertText": "SHORT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: java.time.format.TextStyle", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.format.TextStyle", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.format.TextStyle;", + "insertText": "values" + }, + { + "label": "asNormal", + "kind": "method", + "documentation": "asNormal(): java.time.format.TextStyle", + "insertText": "asNormal" + }, + { + "label": "asStandalone", + "kind": "method", + "documentation": "asStandalone(): java.time.format.TextStyle", + "insertText": "asStandalone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isStandalone", + "kind": "method", + "documentation": "isStandalone(): boolean", + "insertText": "isStandalone" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoField", + "kind": "class", + "documentation": "Class: ChronoField", + "insertText": "ChronoField", + "properties": [ + { + "label": "ALIGNED_DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "ALIGNED_DAY_OF_WEEK_IN_YEAR", + "kind": "property", + "documentation": "ALIGNED_DAY_OF_WEEK_IN_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_DAY_OF_WEEK_IN_YEAR" + }, + { + "label": "ALIGNED_WEEK_OF_MONTH", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_MONTH" + }, + { + "label": "ALIGNED_WEEK_OF_YEAR", + "kind": "property", + "documentation": "ALIGNED_WEEK_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "ALIGNED_WEEK_OF_YEAR" + }, + { + "label": "AMPM_OF_DAY", + "kind": "property", + "documentation": "AMPM_OF_DAY: java.time.temporal.ChronoField", + "insertText": "AMPM_OF_DAY" + }, + { + "label": "CLOCK_HOUR_OF_AMPM", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_AMPM" + }, + { + "label": "CLOCK_HOUR_OF_DAY", + "kind": "property", + "documentation": "CLOCK_HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "CLOCK_HOUR_OF_DAY" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: java.time.temporal.ChronoField", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: java.time.temporal.ChronoField", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "EPOCH_DAY", + "kind": "property", + "documentation": "EPOCH_DAY: java.time.temporal.ChronoField", + "insertText": "EPOCH_DAY" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: java.time.temporal.ChronoField", + "insertText": "ERA" + }, + { + "label": "HOUR_OF_AMPM", + "kind": "property", + "documentation": "HOUR_OF_AMPM: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_AMPM" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: java.time.temporal.ChronoField", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "INSTANT_SECONDS", + "kind": "property", + "documentation": "INSTANT_SECONDS: java.time.temporal.ChronoField", + "insertText": "INSTANT_SECONDS" + }, + { + "label": "MICRO_OF_DAY", + "kind": "property", + "documentation": "MICRO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_DAY" + }, + { + "label": "MICRO_OF_SECOND", + "kind": "property", + "documentation": "MICRO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MICRO_OF_SECOND" + }, + { + "label": "MILLI_OF_DAY", + "kind": "property", + "documentation": "MILLI_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_DAY" + }, + { + "label": "MILLI_OF_SECOND", + "kind": "property", + "documentation": "MILLI_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "MILLI_OF_SECOND" + }, + { + "label": "MINUTE_OF_DAY", + "kind": "property", + "documentation": "MINUTE_OF_DAY: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_DAY" + }, + { + "label": "MINUTE_OF_HOUR", + "kind": "property", + "documentation": "MINUTE_OF_HOUR: java.time.temporal.ChronoField", + "insertText": "MINUTE_OF_HOUR" + }, + { + "label": "MONTH_OF_YEAR", + "kind": "property", + "documentation": "MONTH_OF_YEAR: java.time.temporal.ChronoField", + "insertText": "MONTH_OF_YEAR" + }, + { + "label": "NANO_OF_DAY", + "kind": "property", + "documentation": "NANO_OF_DAY: java.time.temporal.ChronoField", + "insertText": "NANO_OF_DAY" + }, + { + "label": "NANO_OF_SECOND", + "kind": "property", + "documentation": "NANO_OF_SECOND: java.time.temporal.ChronoField", + "insertText": "NANO_OF_SECOND" + }, + { + "label": "OFFSET_SECONDS", + "kind": "property", + "documentation": "OFFSET_SECONDS: java.time.temporal.ChronoField", + "insertText": "OFFSET_SECONDS" + }, + { + "label": "PROLEPTIC_MONTH", + "kind": "property", + "documentation": "PROLEPTIC_MONTH: java.time.temporal.ChronoField", + "insertText": "PROLEPTIC_MONTH" + }, + { + "label": "SECOND_OF_DAY", + "kind": "property", + "documentation": "SECOND_OF_DAY: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_DAY" + }, + { + "label": "SECOND_OF_MINUTE", + "kind": "property", + "documentation": "SECOND_OF_MINUTE: java.time.temporal.ChronoField", + "insertText": "SECOND_OF_MINUTE" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: java.time.temporal.ChronoField", + "insertText": "YEAR" + }, + { + "label": "YEAR_OF_ERA", + "kind": "property", + "documentation": "YEAR_OF_ERA: java.time.temporal.ChronoField", + "insertText": "YEAR_OF_ERA" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoField", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoField;", + "insertText": "values" + }, + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a): long", + "insertText": "checkValidValue" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ChronoUnit", + "kind": "class", + "documentation": "Class: ChronoUnit", + "insertText": "ChronoUnit", + "properties": [ + { + "label": "CENTURIES", + "kind": "property", + "documentation": "CENTURIES: java.time.temporal.ChronoUnit", + "insertText": "CENTURIES" + }, + { + "label": "DAYS", + "kind": "property", + "documentation": "DAYS: java.time.temporal.ChronoUnit", + "insertText": "DAYS" + }, + { + "label": "DECADES", + "kind": "property", + "documentation": "DECADES: java.time.temporal.ChronoUnit", + "insertText": "DECADES" + }, + { + "label": "ERAS", + "kind": "property", + "documentation": "ERAS: java.time.temporal.ChronoUnit", + "insertText": "ERAS" + }, + { + "label": "FOREVER", + "kind": "property", + "documentation": "FOREVER: java.time.temporal.ChronoUnit", + "insertText": "FOREVER" + }, + { + "label": "HALF_DAYS", + "kind": "property", + "documentation": "HALF_DAYS: java.time.temporal.ChronoUnit", + "insertText": "HALF_DAYS" + }, + { + "label": "HOURS", + "kind": "property", + "documentation": "HOURS: java.time.temporal.ChronoUnit", + "insertText": "HOURS" + }, + { + "label": "MICROS", + "kind": "property", + "documentation": "MICROS: java.time.temporal.ChronoUnit", + "insertText": "MICROS" + }, + { + "label": "MILLENNIA", + "kind": "property", + "documentation": "MILLENNIA: java.time.temporal.ChronoUnit", + "insertText": "MILLENNIA" + }, + { + "label": "MILLIS", + "kind": "property", + "documentation": "MILLIS: java.time.temporal.ChronoUnit", + "insertText": "MILLIS" + }, + { + "label": "MINUTES", + "kind": "property", + "documentation": "MINUTES: java.time.temporal.ChronoUnit", + "insertText": "MINUTES" + }, + { + "label": "MONTHS", + "kind": "property", + "documentation": "MONTHS: java.time.temporal.ChronoUnit", + "insertText": "MONTHS" + }, + { + "label": "NANOS", + "kind": "property", + "documentation": "NANOS: java.time.temporal.ChronoUnit", + "insertText": "NANOS" + }, + { + "label": "SECONDS", + "kind": "property", + "documentation": "SECONDS: java.time.temporal.ChronoUnit", + "insertText": "SECONDS" + }, + { + "label": "WEEKS", + "kind": "property", + "documentation": "WEEKS: java.time.temporal.ChronoUnit", + "insertText": "WEEKS" + }, + { + "label": "YEARS", + "kind": "property", + "documentation": "YEARS: java.time.temporal.ChronoUnit", + "insertText": "YEARS" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.temporal.ChronoUnit", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.temporal.ChronoUnit;", + "insertText": "values" + }, + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IsoFields", + "kind": "class", + "documentation": "Class: IsoFields", + "insertText": "IsoFields", + "properties": [ + { + "label": "DAY_OF_QUARTER", + "kind": "property", + "documentation": "DAY_OF_QUARTER: java.time.temporal.TemporalField", + "insertText": "DAY_OF_QUARTER" + }, + { + "label": "QUARTER_OF_YEAR", + "kind": "property", + "documentation": "QUARTER_OF_YEAR: java.time.temporal.TemporalField", + "insertText": "QUARTER_OF_YEAR" + }, + { + "label": "QUARTER_YEARS", + "kind": "property", + "documentation": "QUARTER_YEARS: java.time.temporal.TemporalUnit", + "insertText": "QUARTER_YEARS" + }, + { + "label": "WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_BASED_YEAR" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "WEEK_OF_WEEK_BASED_YEAR", + "kind": "property", + "documentation": "WEEK_OF_WEEK_BASED_YEAR: java.time.temporal.TemporalField", + "insertText": "WEEK_OF_WEEK_BASED_YEAR" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JulianFields", + "kind": "class", + "documentation": "Class: JulianFields", + "insertText": "JulianFields", + "properties": [ + { + "label": "JULIAN_DAY", + "kind": "property", + "documentation": "JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "JULIAN_DAY" + }, + { + "label": "MODIFIED_JULIAN_DAY", + "kind": "property", + "documentation": "MODIFIED_JULIAN_DAY: java.time.temporal.TemporalField", + "insertText": "MODIFIED_JULIAN_DAY" + }, + { + "label": "RATA_DIE", + "kind": "property", + "documentation": "RATA_DIE: java.time.temporal.TemporalField", + "insertText": "RATA_DIE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Temporal", + "kind": "class", + "documentation": "Class: Temporal", + "insertText": "Temporal", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "minus" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.temporal.Temporal", + "insertText": "plus" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.temporal.Temporal", + "insertText": "with" + } + ] + }, + { + "label": "TemporalAccessor", + "kind": "class", + "documentation": "Class: TemporalAccessor", + "insertText": "TemporalAccessor", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjuster", + "kind": "class", + "documentation": "Class: TemporalAdjuster", + "insertText": "TemporalAdjuster", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAdjusters", + "kind": "class", + "documentation": "Class: TemporalAdjusters", + "insertText": "TemporalAdjusters", + "properties": [ + { + "label": "dayOfWeekInMonth", + "kind": "method", + "documentation": "dayOfWeekInMonth(int a, java.time.DayOfWeek b): java.time.temporal.TemporalAdjuster", + "insertText": "dayOfWeekInMonth" + }, + { + "label": "firstDayOfMonth", + "kind": "method", + "documentation": "firstDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfMonth" + }, + { + "label": "firstDayOfNextMonth", + "kind": "method", + "documentation": "firstDayOfNextMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextMonth" + }, + { + "label": "firstDayOfNextYear", + "kind": "method", + "documentation": "firstDayOfNextYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfNextYear" + }, + { + "label": "firstDayOfYear", + "kind": "method", + "documentation": "firstDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "firstDayOfYear" + }, + { + "label": "firstInMonth", + "kind": "method", + "documentation": "firstInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "firstInMonth" + }, + { + "label": "lastDayOfMonth", + "kind": "method", + "documentation": "lastDayOfMonth(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfMonth" + }, + { + "label": "lastDayOfYear", + "kind": "method", + "documentation": "lastDayOfYear(): java.time.temporal.TemporalAdjuster", + "insertText": "lastDayOfYear" + }, + { + "label": "lastInMonth", + "kind": "method", + "documentation": "lastInMonth(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "lastInMonth" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "next" + }, + { + "label": "nextOrSame", + "kind": "method", + "documentation": "nextOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "nextOrSame" + }, + { + "label": "ofDateAdjuster", + "kind": "method", + "documentation": "ofDateAdjuster(java.util.function.UnaryOperator a): java.time.temporal.TemporalAdjuster", + "insertText": "ofDateAdjuster" + }, + { + "label": "previous", + "kind": "method", + "documentation": "previous(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previous" + }, + { + "label": "previousOrSame", + "kind": "method", + "documentation": "previousOrSame(java.time.DayOfWeek a): java.time.temporal.TemporalAdjuster", + "insertText": "previousOrSame" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalAmount", + "kind": "class", + "documentation": "Class: TemporalAmount", + "insertText": "TemporalAmount", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalUnit a): long", + "insertText": "get" + }, + { + "label": "getUnits", + "kind": "method", + "documentation": "getUnits(): java.util.List", + "insertText": "getUnits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "subtractFrom", + "kind": "method", + "documentation": "subtractFrom(java.time.temporal.Temporal a): java.time.temporal.Temporal", + "insertText": "subtractFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalField", + "kind": "class", + "documentation": "Class: TemporalField", + "insertText": "TemporalField", + "properties": [ + { + "label": "adjustInto", + "kind": "method", + "documentation": "adjustInto(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "adjustInto" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBaseUnit", + "kind": "method", + "documentation": "getBaseUnit(): java.time.temporal.TemporalUnit", + "insertText": "getBaseUnit" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getFrom", + "kind": "method", + "documentation": "getFrom(java.time.temporal.TemporalAccessor a): long", + "insertText": "getFrom" + }, + { + "label": "getRangeUnit", + "kind": "method", + "documentation": "getRangeUnit(): java.time.temporal.TemporalUnit", + "insertText": "getRangeUnit" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.TemporalAccessor a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "rangeRefinedBy", + "kind": "method", + "documentation": "rangeRefinedBy(java.time.temporal.TemporalAccessor a): java.time.temporal.ValueRange", + "insertText": "rangeRefinedBy" + }, + { + "label": "resolve", + "kind": "method", + "documentation": "resolve(java.util.Map a, java.time.temporal.TemporalAccessor b, java.time.format.ResolverStyle c): java.time.temporal.TemporalAccessor", + "insertText": "resolve" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQueries", + "kind": "class", + "documentation": "Class: TemporalQueries", + "insertText": "TemporalQueries", + "properties": [ + { + "label": "chronology", + "kind": "method", + "documentation": "chronology(): java.time.temporal.TemporalQuery", + "insertText": "chronology" + }, + { + "label": "localDate", + "kind": "method", + "documentation": "localDate(): java.time.temporal.TemporalQuery", + "insertText": "localDate" + }, + { + "label": "localTime", + "kind": "method", + "documentation": "localTime(): java.time.temporal.TemporalQuery", + "insertText": "localTime" + }, + { + "label": "offset", + "kind": "method", + "documentation": "offset(): java.time.temporal.TemporalQuery", + "insertText": "offset" + }, + { + "label": "precision", + "kind": "method", + "documentation": "precision(): java.time.temporal.TemporalQuery", + "insertText": "precision" + }, + { + "label": "zone", + "kind": "method", + "documentation": "zone(): java.time.temporal.TemporalQuery", + "insertText": "zone" + }, + { + "label": "zoneId", + "kind": "method", + "documentation": "zoneId(): java.time.temporal.TemporalQuery", + "insertText": "zoneId" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalQuery", + "kind": "class", + "documentation": "Class: TemporalQuery", + "insertText": "TemporalQuery", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "queryFrom", + "kind": "method", + "documentation": "queryFrom(java.time.temporal.TemporalAccessor a): org.elasticsearch.painless.lookup.def", + "insertText": "queryFrom" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "TemporalUnit", + "kind": "class", + "documentation": "Class: TemporalUnit", + "insertText": "TemporalUnit", + "properties": [ + { + "label": "addTo", + "kind": "method", + "documentation": "addTo(java.time.temporal.Temporal a, long b): java.time.temporal.Temporal", + "insertText": "addTo" + }, + { + "label": "between", + "kind": "method", + "documentation": "between(java.time.temporal.Temporal a, java.time.temporal.Temporal b): long", + "insertText": "between" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDateBased", + "kind": "method", + "documentation": "isDateBased(): boolean", + "insertText": "isDateBased" + }, + { + "label": "isDurationEstimated", + "kind": "method", + "documentation": "isDurationEstimated(): boolean", + "insertText": "isDurationEstimated" + }, + { + "label": "isSupportedBy", + "kind": "method", + "documentation": "isSupportedBy(java.time.temporal.Temporal a): boolean", + "insertText": "isSupportedBy" + }, + { + "label": "isTimeBased", + "kind": "method", + "documentation": "isTimeBased(): boolean", + "insertText": "isTimeBased" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnsupportedTemporalTypeException", + "kind": "class", + "documentation": "Class: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnsupportedTemporalTypeException", + "kind": "constructor", + "documentation": "Constructor: UnsupportedTemporalTypeException", + "insertText": "UnsupportedTemporalTypeException" + } + }, + { + "label": "ValueRange", + "kind": "class", + "documentation": "Class: ValueRange", + "insertText": "ValueRange", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(long a, long b, long c, long d | long a, long b, long c | long a, long b): java.time.temporal.ValueRange", + "insertText": "of" + }, + { + "label": "checkValidIntValue", + "kind": "method", + "documentation": "checkValidIntValue(long a, java.time.temporal.TemporalField b): int", + "insertText": "checkValidIntValue" + }, + { + "label": "checkValidValue", + "kind": "method", + "documentation": "checkValidValue(long a, java.time.temporal.TemporalField b): long", + "insertText": "checkValidValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLargestMinimum", + "kind": "method", + "documentation": "getLargestMinimum(): long", + "insertText": "getLargestMinimum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(): long", + "insertText": "getMaximum" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(): long", + "insertText": "getMinimum" + }, + { + "label": "getSmallestMaximum", + "kind": "method", + "documentation": "getSmallestMaximum(): long", + "insertText": "getSmallestMaximum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isFixed", + "kind": "method", + "documentation": "isFixed(): boolean", + "insertText": "isFixed" + }, + { + "label": "isIntValue", + "kind": "method", + "documentation": "isIntValue(): boolean", + "insertText": "isIntValue" + }, + { + "label": "isValidIntValue", + "kind": "method", + "documentation": "isValidIntValue(long a): boolean", + "insertText": "isValidIntValue" + }, + { + "label": "isValidValue", + "kind": "method", + "documentation": "isValidValue(long a): boolean", + "insertText": "isValidValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "WeekFields", + "kind": "class", + "documentation": "Class: WeekFields", + "insertText": "WeekFields", + "properties": [ + { + "label": "ISO", + "kind": "property", + "documentation": "ISO: java.time.temporal.WeekFields", + "insertText": "ISO" + }, + { + "label": "SUNDAY_START", + "kind": "property", + "documentation": "SUNDAY_START: java.time.temporal.WeekFields", + "insertText": "SUNDAY_START" + }, + { + "label": "WEEK_BASED_YEARS", + "kind": "property", + "documentation": "WEEK_BASED_YEARS: java.time.temporal.TemporalUnit", + "insertText": "WEEK_BASED_YEARS" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.DayOfWeek a, int b | java.util.Locale a): java.time.temporal.WeekFields", + "insertText": "of" + }, + { + "label": "dayOfWeek", + "kind": "method", + "documentation": "dayOfWeek(): java.time.temporal.TemporalField", + "insertText": "dayOfWeek" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): java.time.DayOfWeek", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "weekBasedYear", + "kind": "method", + "documentation": "weekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekBasedYear" + }, + { + "label": "weekOfMonth", + "kind": "method", + "documentation": "weekOfMonth(): java.time.temporal.TemporalField", + "insertText": "weekOfMonth" + }, + { + "label": "weekOfWeekBasedYear", + "kind": "method", + "documentation": "weekOfWeekBasedYear(): java.time.temporal.TemporalField", + "insertText": "weekOfWeekBasedYear" + }, + { + "label": "weekOfYear", + "kind": "method", + "documentation": "weekOfYear(): java.time.temporal.TemporalField", + "insertText": "weekOfYear" + } + ] + }, + { + "label": "ZoneOffsetTransition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransition", + "insertText": "ZoneOffsetTransition", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.zone.ZoneOffsetTransition", + "insertText": "of" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.zone.ZoneOffsetTransition a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDateTimeAfter", + "kind": "method", + "documentation": "getDateTimeAfter(): java.time.LocalDateTime", + "insertText": "getDateTimeAfter" + }, + { + "label": "getDateTimeBefore", + "kind": "method", + "documentation": "getDateTimeBefore(): java.time.LocalDateTime", + "insertText": "getDateTimeBefore" + }, + { + "label": "getDuration", + "kind": "method", + "documentation": "getDuration(): java.time.Duration", + "insertText": "getDuration" + }, + { + "label": "getInstant", + "kind": "method", + "documentation": "getInstant(): java.time.Instant", + "insertText": "getInstant" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isGap", + "kind": "method", + "documentation": "isGap(): boolean", + "insertText": "isGap" + }, + { + "label": "isOverlap", + "kind": "method", + "documentation": "isOverlap(): boolean", + "insertText": "isOverlap" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.ZoneOffset a): boolean", + "insertText": "isValidOffset" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule", + "insertText": "ZoneOffsetTransitionRule", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.Month a, int b, java.time.DayOfWeek c, java.time.LocalTime d, boolean e, java.time.zone.ZoneOffsetTransitionRule$TimeDefinition f, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined, java.time.ZoneOffset undefined): java.time.zone.ZoneOffsetTransitionRule", + "insertText": "of" + }, + { + "label": "createTransition", + "kind": "method", + "documentation": "createTransition(int a): java.time.zone.ZoneOffsetTransition", + "insertText": "createTransition" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDayOfMonthIndicator", + "kind": "method", + "documentation": "getDayOfMonthIndicator(): int", + "insertText": "getDayOfMonthIndicator" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): java.time.DayOfWeek", + "insertText": "getDayOfWeek" + }, + { + "label": "getLocalTime", + "kind": "method", + "documentation": "getLocalTime(): java.time.LocalTime", + "insertText": "getLocalTime" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getOffsetAfter", + "kind": "method", + "documentation": "getOffsetAfter(): java.time.ZoneOffset", + "insertText": "getOffsetAfter" + }, + { + "label": "getOffsetBefore", + "kind": "method", + "documentation": "getOffsetBefore(): java.time.ZoneOffset", + "insertText": "getOffsetBefore" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTimeDefinition", + "kind": "method", + "documentation": "getTimeDefinition(): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "getTimeDefinition" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isMidnightEndOfDay", + "kind": "method", + "documentation": "isMidnightEndOfDay(): boolean", + "insertText": "isMidnightEndOfDay" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneOffsetTransitionRule.TimeDefinition", + "kind": "class", + "documentation": "Class: ZoneOffsetTransitionRule.TimeDefinition", + "insertText": "ZoneOffsetTransitionRule.TimeDefinition", + "properties": [ + { + "label": "STANDARD", + "kind": "property", + "documentation": "STANDARD: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "STANDARD" + }, + { + "label": "UTC", + "kind": "property", + "documentation": "UTC: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "UTC" + }, + { + "label": "WALL", + "kind": "property", + "documentation": "WALL: java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "WALL" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.time.zone.ZoneOffsetTransitionRule$TimeDefinition", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "createDateTime", + "kind": "method", + "documentation": "createDateTime(java.time.LocalDateTime a, java.time.ZoneOffset b, java.time.ZoneOffset c): java.time.LocalDateTime", + "insertText": "createDateTime" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRules", + "kind": "class", + "documentation": "Class: ZoneRules", + "insertText": "ZoneRules", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.time.ZoneOffset a, java.time.ZoneOffset b, java.util.List c, java.util.List d, java.util.List e | java.time.ZoneOffset a): java.time.zone.ZoneRules", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDaylightSavings", + "kind": "method", + "documentation": "getDaylightSavings(java.time.Instant a): java.time.Duration", + "insertText": "getDaylightSavings" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getStandardOffset", + "kind": "method", + "documentation": "getStandardOffset(java.time.Instant a): java.time.ZoneOffset", + "insertText": "getStandardOffset" + }, + { + "label": "getTransition", + "kind": "method", + "documentation": "getTransition(java.time.LocalDateTime a): java.time.zone.ZoneOffsetTransition", + "insertText": "getTransition" + }, + { + "label": "getTransitionRules", + "kind": "method", + "documentation": "getTransitionRules(): java.util.List", + "insertText": "getTransitionRules" + }, + { + "label": "getTransitions", + "kind": "method", + "documentation": "getTransitions(): java.util.List", + "insertText": "getTransitions" + }, + { + "label": "getValidOffsets", + "kind": "method", + "documentation": "getValidOffsets(java.time.LocalDateTime a): java.util.List", + "insertText": "getValidOffsets" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isDaylightSavings", + "kind": "method", + "documentation": "isDaylightSavings(java.time.Instant a): boolean", + "insertText": "isDaylightSavings" + }, + { + "label": "isFixedOffset", + "kind": "method", + "documentation": "isFixedOffset(): boolean", + "insertText": "isFixedOffset" + }, + { + "label": "isValidOffset", + "kind": "method", + "documentation": "isValidOffset(java.time.LocalDateTime a, java.time.ZoneOffset b): boolean", + "insertText": "isValidOffset" + }, + { + "label": "nextTransition", + "kind": "method", + "documentation": "nextTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "nextTransition" + }, + { + "label": "previousTransition", + "kind": "method", + "documentation": "previousTransition(java.time.Instant a): java.time.zone.ZoneOffsetTransition", + "insertText": "previousTransition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ZoneRulesException", + "kind": "class", + "documentation": "Class: ZoneRulesException", + "insertText": "ZoneRulesException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ZoneRulesException", + "kind": "constructor", + "documentation": "Constructor: ZoneRulesException", + "insertText": "ZoneRulesException" + } + }, + { + "label": "ZoneRulesProvider", + "kind": "class", + "documentation": "Class: ZoneRulesProvider", + "insertText": "ZoneRulesProvider", + "properties": [ + { + "label": "getAvailableZoneIds", + "kind": "method", + "documentation": "getAvailableZoneIds(): java.util.Set", + "insertText": "getAvailableZoneIds" + }, + { + "label": "getRules", + "kind": "method", + "documentation": "getRules(java.lang.String a, boolean b): java.time.zone.ZoneRules", + "insertText": "getRules" + }, + { + "label": "getVersions", + "kind": "method", + "documentation": "getVersions(java.lang.String a): java.util.NavigableMap", + "insertText": "getVersions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractCollection", + "kind": "class", + "documentation": "Class: AbstractCollection", + "insertText": "AbstractCollection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractList", + "kind": "class", + "documentation": "Class: AbstractList", + "insertText": "AbstractList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractMap", + "kind": "class", + "documentation": "Class: AbstractMap", + "insertText": "AbstractMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "AbstractMap.SimpleEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleEntry", + "insertText": "AbstractMap.SimpleEntry" + } + }, + { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "class", + "documentation": "Class: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "AbstractMap.SimpleImmutableEntry", + "kind": "constructor", + "documentation": "Constructor: AbstractMap.SimpleImmutableEntry", + "insertText": "AbstractMap.SimpleImmutableEntry" + } + }, + { + "label": "AbstractQueue", + "kind": "class", + "documentation": "Class: AbstractQueue", + "insertText": "AbstractQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSequentialList", + "kind": "class", + "documentation": "Class: AbstractSequentialList", + "insertText": "AbstractSequentialList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "AbstractSet", + "kind": "class", + "documentation": "Class: AbstractSet", + "insertText": "AbstractSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ArrayDeque", + "kind": "class", + "documentation": "Class: ArrayDeque", + "insertText": "ArrayDeque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): java.util.ArrayDeque", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ArrayDeque", + "kind": "constructor", + "documentation": "Constructor: ArrayDeque", + "insertText": "ArrayDeque" + } + }, + { + "label": "ArrayList", + "kind": "class", + "documentation": "Class: ArrayList", + "insertText": "ArrayList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "trimToSize", + "kind": "method", + "documentation": "trimToSize(): void", + "insertText": "trimToSize" + } + ], + "constructorDefinition": { + "label": "ArrayList", + "kind": "constructor", + "documentation": "Constructor: ArrayList", + "insertText": "ArrayList" + } + }, + { + "label": "Arrays", + "kind": "class", + "documentation": "Class: Arrays", + "insertText": "Arrays", + "properties": [ + { + "label": "asList", + "kind": "method", + "documentation": "asList([Ljava.lang.Object; a): java.util.List", + "insertText": "asList" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals([Ljava.lang.Object; a, [Ljava.lang.Object; b): boolean", + "insertText": "deepEquals" + }, + { + "label": "deepHashCode", + "kind": "method", + "documentation": "deepHashCode([Ljava.lang.Object; a): int", + "insertText": "deepHashCode" + }, + { + "label": "deepToString", + "kind": "method", + "documentation": "deepToString([Ljava.lang.Object; a): java.lang.String", + "insertText": "deepToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64", + "kind": "class", + "documentation": "Class: Base64", + "insertText": "Base64", + "properties": [ + { + "label": "getDecoder", + "kind": "method", + "documentation": "getDecoder(): java.util.Base64$Decoder", + "insertText": "getDecoder" + }, + { + "label": "getEncoder", + "kind": "method", + "documentation": "getEncoder(): java.util.Base64$Encoder", + "insertText": "getEncoder" + }, + { + "label": "getMimeDecoder", + "kind": "method", + "documentation": "getMimeDecoder(): java.util.Base64$Decoder", + "insertText": "getMimeDecoder" + }, + { + "label": "getMimeEncoder", + "kind": "method", + "documentation": "getMimeEncoder(int a, [B b): java.util.Base64$Encoder", + "insertText": "getMimeEncoder" + }, + { + "label": "getUrlDecoder", + "kind": "method", + "documentation": "getUrlDecoder(): java.util.Base64$Decoder", + "insertText": "getUrlDecoder" + }, + { + "label": "getUrlEncoder", + "kind": "method", + "documentation": "getUrlEncoder(): java.util.Base64$Encoder", + "insertText": "getUrlEncoder" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Decoder", + "kind": "class", + "documentation": "Class: Base64.Decoder", + "insertText": "Base64.Decoder", + "properties": [ + { + "label": "decode", + "kind": "method", + "documentation": "decode([B a, [B b | java.lang.String a): int | [B", + "insertText": "decode" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Base64.Encoder", + "kind": "class", + "documentation": "Class: Base64.Encoder", + "insertText": "Base64.Encoder", + "properties": [ + { + "label": "encode", + "kind": "method", + "documentation": "encode([B a, [B b): int", + "insertText": "encode" + }, + { + "label": "encodeToString", + "kind": "method", + "documentation": "encodeToString([B a): java.lang.String", + "insertText": "encodeToString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "withoutPadding", + "kind": "method", + "documentation": "withoutPadding(): java.util.Base64$Encoder", + "insertText": "withoutPadding" + } + ] + }, + { + "label": "BitSet", + "kind": "class", + "documentation": "Class: BitSet", + "insertText": "BitSet", + "properties": [ + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf([J a): java.util.BitSet", + "insertText": "valueOf" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.BitSet a): void", + "insertText": "and" + }, + { + "label": "andNot", + "kind": "method", + "documentation": "andNot(java.util.BitSet a): void", + "insertText": "andNot" + }, + { + "label": "cardinality", + "kind": "method", + "documentation": "cardinality(): int", + "insertText": "cardinality" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a, int b | int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flip", + "kind": "method", + "documentation": "flip(int a, int b | int a): void", + "insertText": "flip" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "intersects", + "kind": "method", + "documentation": "intersects(java.util.BitSet a): boolean", + "insertText": "intersects" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "nextClearBit", + "kind": "method", + "documentation": "nextClearBit(int a): int", + "insertText": "nextClearBit" + }, + { + "label": "nextSetBit", + "kind": "method", + "documentation": "nextSetBit(int a): int", + "insertText": "nextSetBit" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.BitSet a): void", + "insertText": "or" + }, + { + "label": "previousClearBit", + "kind": "method", + "documentation": "previousClearBit(int a): int", + "insertText": "previousClearBit" + }, + { + "label": "previousSetBit", + "kind": "method", + "documentation": "previousSetBit(int a): int", + "insertText": "previousSetBit" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, boolean c | int a, int b | int a): void", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toByteArray", + "kind": "method", + "documentation": "toByteArray(): [B", + "insertText": "toByteArray" + }, + { + "label": "toLongArray", + "kind": "method", + "documentation": "toLongArray(): [J", + "insertText": "toLongArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "xor", + "kind": "method", + "documentation": "xor(java.util.BitSet a): void", + "insertText": "xor" + } + ], + "constructorDefinition": { + "label": "BitSet", + "kind": "constructor", + "documentation": "Constructor: BitSet", + "insertText": "BitSet" + } + }, + { + "label": "Calendar", + "kind": "class", + "documentation": "Class: Calendar", + "insertText": "Calendar", + "properties": [ + { + "label": "ALL_STYLES", + "kind": "property", + "documentation": "ALL_STYLES: int", + "insertText": "ALL_STYLES" + }, + { + "label": "AM", + "kind": "property", + "documentation": "AM: int", + "insertText": "AM" + }, + { + "label": "AM_PM", + "kind": "property", + "documentation": "AM_PM: int", + "insertText": "AM_PM" + }, + { + "label": "APRIL", + "kind": "property", + "documentation": "APRIL: int", + "insertText": "APRIL" + }, + { + "label": "AUGUST", + "kind": "property", + "documentation": "AUGUST: int", + "insertText": "AUGUST" + }, + { + "label": "DATE", + "kind": "property", + "documentation": "DATE: int", + "insertText": "DATE" + }, + { + "label": "DAY_OF_MONTH", + "kind": "property", + "documentation": "DAY_OF_MONTH: int", + "insertText": "DAY_OF_MONTH" + }, + { + "label": "DAY_OF_WEEK", + "kind": "property", + "documentation": "DAY_OF_WEEK: int", + "insertText": "DAY_OF_WEEK" + }, + { + "label": "DAY_OF_WEEK_IN_MONTH", + "kind": "property", + "documentation": "DAY_OF_WEEK_IN_MONTH: int", + "insertText": "DAY_OF_WEEK_IN_MONTH" + }, + { + "label": "DAY_OF_YEAR", + "kind": "property", + "documentation": "DAY_OF_YEAR: int", + "insertText": "DAY_OF_YEAR" + }, + { + "label": "DECEMBER", + "kind": "property", + "documentation": "DECEMBER: int", + "insertText": "DECEMBER" + }, + { + "label": "DST_OFFSET", + "kind": "property", + "documentation": "DST_OFFSET: int", + "insertText": "DST_OFFSET" + }, + { + "label": "ERA", + "kind": "property", + "documentation": "ERA: int", + "insertText": "ERA" + }, + { + "label": "FEBRUARY", + "kind": "property", + "documentation": "FEBRUARY: int", + "insertText": "FEBRUARY" + }, + { + "label": "FIELD_COUNT", + "kind": "property", + "documentation": "FIELD_COUNT: int", + "insertText": "FIELD_COUNT" + }, + { + "label": "FRIDAY", + "kind": "property", + "documentation": "FRIDAY: int", + "insertText": "FRIDAY" + }, + { + "label": "HOUR", + "kind": "property", + "documentation": "HOUR: int", + "insertText": "HOUR" + }, + { + "label": "HOUR_OF_DAY", + "kind": "property", + "documentation": "HOUR_OF_DAY: int", + "insertText": "HOUR_OF_DAY" + }, + { + "label": "JANUARY", + "kind": "property", + "documentation": "JANUARY: int", + "insertText": "JANUARY" + }, + { + "label": "JULY", + "kind": "property", + "documentation": "JULY: int", + "insertText": "JULY" + }, + { + "label": "JUNE", + "kind": "property", + "documentation": "JUNE: int", + "insertText": "JUNE" + }, + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "LONG_FORMAT", + "kind": "property", + "documentation": "LONG_FORMAT: int", + "insertText": "LONG_FORMAT" + }, + { + "label": "LONG_STANDALONE", + "kind": "property", + "documentation": "LONG_STANDALONE: int", + "insertText": "LONG_STANDALONE" + }, + { + "label": "MARCH", + "kind": "property", + "documentation": "MARCH: int", + "insertText": "MARCH" + }, + { + "label": "MAY", + "kind": "property", + "documentation": "MAY: int", + "insertText": "MAY" + }, + { + "label": "MILLISECOND", + "kind": "property", + "documentation": "MILLISECOND: int", + "insertText": "MILLISECOND" + }, + { + "label": "MINUTE", + "kind": "property", + "documentation": "MINUTE: int", + "insertText": "MINUTE" + }, + { + "label": "MONDAY", + "kind": "property", + "documentation": "MONDAY: int", + "insertText": "MONDAY" + }, + { + "label": "MONTH", + "kind": "property", + "documentation": "MONTH: int", + "insertText": "MONTH" + }, + { + "label": "NARROW_FORMAT", + "kind": "property", + "documentation": "NARROW_FORMAT: int", + "insertText": "NARROW_FORMAT" + }, + { + "label": "NARROW_STANDALONE", + "kind": "property", + "documentation": "NARROW_STANDALONE: int", + "insertText": "NARROW_STANDALONE" + }, + { + "label": "NOVEMBER", + "kind": "property", + "documentation": "NOVEMBER: int", + "insertText": "NOVEMBER" + }, + { + "label": "OCTOBER", + "kind": "property", + "documentation": "OCTOBER: int", + "insertText": "OCTOBER" + }, + { + "label": "PM", + "kind": "property", + "documentation": "PM: int", + "insertText": "PM" + }, + { + "label": "SATURDAY", + "kind": "property", + "documentation": "SATURDAY: int", + "insertText": "SATURDAY" + }, + { + "label": "SECOND", + "kind": "property", + "documentation": "SECOND: int", + "insertText": "SECOND" + }, + { + "label": "SEPTEMBER", + "kind": "property", + "documentation": "SEPTEMBER: int", + "insertText": "SEPTEMBER" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "SHORT_FORMAT", + "kind": "property", + "documentation": "SHORT_FORMAT: int", + "insertText": "SHORT_FORMAT" + }, + { + "label": "SHORT_STANDALONE", + "kind": "property", + "documentation": "SHORT_STANDALONE: int", + "insertText": "SHORT_STANDALONE" + }, + { + "label": "SUNDAY", + "kind": "property", + "documentation": "SUNDAY: int", + "insertText": "SUNDAY" + }, + { + "label": "THURSDAY", + "kind": "property", + "documentation": "THURSDAY: int", + "insertText": "THURSDAY" + }, + { + "label": "TUESDAY", + "kind": "property", + "documentation": "TUESDAY: int", + "insertText": "TUESDAY" + }, + { + "label": "UNDECIMBER", + "kind": "property", + "documentation": "UNDECIMBER: int", + "insertText": "UNDECIMBER" + }, + { + "label": "WEDNESDAY", + "kind": "property", + "documentation": "WEDNESDAY: int", + "insertText": "WEDNESDAY" + }, + { + "label": "WEEK_OF_MONTH", + "kind": "property", + "documentation": "WEEK_OF_MONTH: int", + "insertText": "WEEK_OF_MONTH" + }, + { + "label": "WEEK_OF_YEAR", + "kind": "property", + "documentation": "WEEK_OF_YEAR: int", + "insertText": "WEEK_OF_YEAR" + }, + { + "label": "YEAR", + "kind": "property", + "documentation": "YEAR: int", + "insertText": "YEAR" + }, + { + "label": "ZONE_OFFSET", + "kind": "property", + "documentation": "ZONE_OFFSET: int", + "insertText": "ZONE_OFFSET" + }, + { + "label": "getAvailableCalendarTypes", + "kind": "method", + "documentation": "getAvailableCalendarTypes(): java.util.Set", + "insertText": "getAvailableCalendarTypes" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.util.TimeZone a, java.util.Locale b | java.util.TimeZone a): java.util.Calendar", + "insertText": "getInstance" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Calendar.Builder", + "kind": "class", + "documentation": "Class: Calendar.Builder", + "insertText": "Calendar.Builder", + "properties": [ + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Calendar", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b): java.util.Calendar$Builder", + "insertText": "set" + }, + { + "label": "setCalendarType", + "kind": "method", + "documentation": "setCalendarType(java.lang.String a): java.util.Calendar$Builder", + "insertText": "setCalendarType" + }, + { + "label": "setDate", + "kind": "method", + "documentation": "setDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setDate" + }, + { + "label": "setFields", + "kind": "method", + "documentation": "setFields([I a): java.util.Calendar$Builder", + "insertText": "setFields" + }, + { + "label": "setInstant", + "kind": "method", + "documentation": "setInstant(long a): java.util.Calendar$Builder", + "insertText": "setInstant" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): java.util.Calendar$Builder", + "insertText": "setLenient" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Calendar$Builder", + "insertText": "setLocale" + }, + { + "label": "setTimeOfDay", + "kind": "method", + "documentation": "setTimeOfDay(int a, int b, int c, int d | int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setTimeOfDay" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): java.util.Calendar$Builder", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): java.util.Calendar$Builder", + "insertText": "setWeekDate" + }, + { + "label": "setWeekDefinition", + "kind": "method", + "documentation": "setWeekDefinition(int a, int b): java.util.Calendar$Builder", + "insertText": "setWeekDefinition" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Calendar.Builder", + "kind": "constructor", + "documentation": "Constructor: Calendar.Builder", + "insertText": "Calendar.Builder" + } + }, + { + "label": "Collection", + "kind": "class", + "documentation": "Class: Collection", + "insertText": "Collection", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collections", + "kind": "class", + "documentation": "Class: Collections", + "insertText": "Collections", + "properties": [ + { + "label": "EMPTY_LIST", + "kind": "property", + "documentation": "EMPTY_LIST: java.util.List", + "insertText": "EMPTY_LIST" + }, + { + "label": "EMPTY_MAP", + "kind": "property", + "documentation": "EMPTY_MAP: java.util.Map", + "insertText": "EMPTY_MAP" + }, + { + "label": "EMPTY_SET", + "kind": "property", + "documentation": "EMPTY_SET: java.util.Set", + "insertText": "EMPTY_SET" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a, [Lorg.elasticsearch.painless.lookup.def; b): boolean", + "insertText": "addAll" + }, + { + "label": "asLifoQueue", + "kind": "method", + "documentation": "asLifoQueue(java.util.Deque a): java.util.Queue", + "insertText": "asLifoQueue" + }, + { + "label": "binarySearch", + "kind": "method", + "documentation": "binarySearch(java.util.List a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c | java.util.List a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "binarySearch" + }, + { + "label": "copy", + "kind": "method", + "documentation": "copy(java.util.List a, java.util.List b): void", + "insertText": "copy" + }, + { + "label": "disjoint", + "kind": "method", + "documentation": "disjoint(java.util.Collection a, java.util.Collection b): boolean", + "insertText": "disjoint" + }, + { + "label": "emptyEnumeration", + "kind": "method", + "documentation": "emptyEnumeration(): java.util.Enumeration", + "insertText": "emptyEnumeration" + }, + { + "label": "emptyIterator", + "kind": "method", + "documentation": "emptyIterator(): java.util.Iterator", + "insertText": "emptyIterator" + }, + { + "label": "emptyList", + "kind": "method", + "documentation": "emptyList(): java.util.List", + "insertText": "emptyList" + }, + { + "label": "emptyListIterator", + "kind": "method", + "documentation": "emptyListIterator(): java.util.ListIterator", + "insertText": "emptyListIterator" + }, + { + "label": "emptyMap", + "kind": "method", + "documentation": "emptyMap(): java.util.Map", + "insertText": "emptyMap" + }, + { + "label": "emptyNavigableMap", + "kind": "method", + "documentation": "emptyNavigableMap(): java.util.NavigableMap", + "insertText": "emptyNavigableMap" + }, + { + "label": "emptyNavigableSet", + "kind": "method", + "documentation": "emptyNavigableSet(): java.util.NavigableSet", + "insertText": "emptyNavigableSet" + }, + { + "label": "emptySet", + "kind": "method", + "documentation": "emptySet(): java.util.Set", + "insertText": "emptySet" + }, + { + "label": "emptySortedMap", + "kind": "method", + "documentation": "emptySortedMap(): java.util.SortedMap", + "insertText": "emptySortedMap" + }, + { + "label": "emptySortedSet", + "kind": "method", + "documentation": "emptySortedSet(): java.util.SortedSet", + "insertText": "emptySortedSet" + }, + { + "label": "enumeration", + "kind": "method", + "documentation": "enumeration(java.util.Collection a): java.util.Enumeration", + "insertText": "enumeration" + }, + { + "label": "fill", + "kind": "method", + "documentation": "fill(java.util.List a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "fill" + }, + { + "label": "frequency", + "kind": "method", + "documentation": "frequency(java.util.Collection a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "frequency" + }, + { + "label": "indexOfSubList", + "kind": "method", + "documentation": "indexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "indexOfSubList" + }, + { + "label": "lastIndexOfSubList", + "kind": "method", + "documentation": "lastIndexOfSubList(java.util.List a, java.util.List b): int", + "insertText": "lastIndexOfSubList" + }, + { + "label": "list", + "kind": "method", + "documentation": "list(java.util.Enumeration a): java.util.ArrayList", + "insertText": "list" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Collection a, java.util.Comparator b | java.util.Collection a): org.elasticsearch.painless.lookup.def", + "insertText": "min" + }, + { + "label": "nCopies", + "kind": "method", + "documentation": "nCopies(int a, org.elasticsearch.painless.lookup.def b): java.util.List", + "insertText": "nCopies" + }, + { + "label": "newSetFromMap", + "kind": "method", + "documentation": "newSetFromMap(java.util.Map a): java.util.Set", + "insertText": "newSetFromMap" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.List a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c): boolean", + "insertText": "replaceAll" + }, + { + "label": "reverse", + "kind": "method", + "documentation": "reverse(java.util.List a): void", + "insertText": "reverse" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(java.util.Comparator a): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "rotate", + "kind": "method", + "documentation": "rotate(java.util.List a, int b): void", + "insertText": "rotate" + }, + { + "label": "shuffle", + "kind": "method", + "documentation": "shuffle(java.util.List a, java.util.Random b | java.util.List a): void", + "insertText": "shuffle" + }, + { + "label": "singleton", + "kind": "method", + "documentation": "singleton(org.elasticsearch.painless.lookup.def a): java.util.Set", + "insertText": "singleton" + }, + { + "label": "singletonList", + "kind": "method", + "documentation": "singletonList(org.elasticsearch.painless.lookup.def a): java.util.List", + "insertText": "singletonList" + }, + { + "label": "singletonMap", + "kind": "method", + "documentation": "singletonMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.Map", + "insertText": "singletonMap" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.List a, java.util.Comparator b | java.util.List a): void", + "insertText": "sort" + }, + { + "label": "swap", + "kind": "method", + "documentation": "swap(java.util.List a, int b, int c): void", + "insertText": "swap" + }, + { + "label": "unmodifiableCollection", + "kind": "method", + "documentation": "unmodifiableCollection(java.util.Collection a): java.util.Collection", + "insertText": "unmodifiableCollection" + }, + { + "label": "unmodifiableList", + "kind": "method", + "documentation": "unmodifiableList(java.util.List a): java.util.List", + "insertText": "unmodifiableList" + }, + { + "label": "unmodifiableMap", + "kind": "method", + "documentation": "unmodifiableMap(java.util.Map a): java.util.Map", + "insertText": "unmodifiableMap" + }, + { + "label": "unmodifiableNavigableMap", + "kind": "method", + "documentation": "unmodifiableNavigableMap(java.util.NavigableMap a): java.util.NavigableMap", + "insertText": "unmodifiableNavigableMap" + }, + { + "label": "unmodifiableNavigableSet", + "kind": "method", + "documentation": "unmodifiableNavigableSet(java.util.NavigableSet a): java.util.NavigableSet", + "insertText": "unmodifiableNavigableSet" + }, + { + "label": "unmodifiableSet", + "kind": "method", + "documentation": "unmodifiableSet(java.util.Set a): java.util.Set", + "insertText": "unmodifiableSet" + }, + { + "label": "unmodifiableSortedMap", + "kind": "method", + "documentation": "unmodifiableSortedMap(java.util.SortedMap a): java.util.SortedMap", + "insertText": "unmodifiableSortedMap" + }, + { + "label": "unmodifiableSortedSet", + "kind": "method", + "documentation": "unmodifiableSortedSet(java.util.SortedSet a): java.util.SortedSet", + "insertText": "unmodifiableSortedSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Comparator", + "kind": "class", + "documentation": "Class: Comparator", + "insertText": "Comparator", + "properties": [ + { + "label": "comparing", + "kind": "method", + "documentation": "comparing(java.util.function.Function a, java.util.Comparator b | java.util.function.Function a): java.util.Comparator", + "insertText": "comparing" + }, + { + "label": "comparingDouble", + "kind": "method", + "documentation": "comparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "comparingDouble" + }, + { + "label": "comparingInt", + "kind": "method", + "documentation": "comparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "comparingInt" + }, + { + "label": "comparingLong", + "kind": "method", + "documentation": "comparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "comparingLong" + }, + { + "label": "naturalOrder", + "kind": "method", + "documentation": "naturalOrder(): java.util.Comparator", + "insertText": "naturalOrder" + }, + { + "label": "nullsFirst", + "kind": "method", + "documentation": "nullsFirst(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsFirst" + }, + { + "label": "nullsLast", + "kind": "method", + "documentation": "nullsLast(java.util.Comparator a): java.util.Comparator", + "insertText": "nullsLast" + }, + { + "label": "reverseOrder", + "kind": "method", + "documentation": "reverseOrder(): java.util.Comparator", + "insertText": "reverseOrder" + }, + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "compare" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "reversed", + "kind": "method", + "documentation": "reversed(): java.util.Comparator", + "insertText": "reversed" + }, + { + "label": "thenComparing", + "kind": "method", + "documentation": "thenComparing(java.util.function.Function a, java.util.Comparator b | java.util.Comparator a): java.util.Comparator", + "insertText": "thenComparing" + }, + { + "label": "thenComparingDouble", + "kind": "method", + "documentation": "thenComparingDouble(java.util.function.ToDoubleFunction a): java.util.Comparator", + "insertText": "thenComparingDouble" + }, + { + "label": "thenComparingInt", + "kind": "method", + "documentation": "thenComparingInt(java.util.function.ToIntFunction a): java.util.Comparator", + "insertText": "thenComparingInt" + }, + { + "label": "thenComparingLong", + "kind": "method", + "documentation": "thenComparingLong(java.util.function.ToLongFunction a): java.util.Comparator", + "insertText": "thenComparingLong" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ConcurrentModificationException", + "kind": "class", + "documentation": "Class: ConcurrentModificationException", + "insertText": "ConcurrentModificationException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "ConcurrentModificationException", + "kind": "constructor", + "documentation": "Constructor: ConcurrentModificationException", + "insertText": "ConcurrentModificationException" + } + }, + { + "label": "Currency", + "kind": "class", + "documentation": "Class: Currency", + "insertText": "Currency", + "properties": [ + { + "label": "getAvailableCurrencies", + "kind": "method", + "documentation": "getAvailableCurrencies(): java.util.Set", + "insertText": "getAvailableCurrencies" + }, + { + "label": "getInstance", + "kind": "method", + "documentation": "getInstance(java.lang.String a): java.util.Currency", + "insertText": "getInstance" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCurrencyCode", + "kind": "method", + "documentation": "getCurrencyCode(): java.lang.String", + "insertText": "getCurrencyCode" + }, + { + "label": "getDefaultFractionDigits", + "kind": "method", + "documentation": "getDefaultFractionDigits(): int", + "insertText": "getDefaultFractionDigits" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getNumericCode", + "kind": "method", + "documentation": "getNumericCode(): int", + "insertText": "getNumericCode" + }, + { + "label": "getSymbol", + "kind": "method", + "documentation": "getSymbol(java.util.Locale a): java.lang.String", + "insertText": "getSymbol" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Date", + "kind": "class", + "documentation": "Class: Date", + "insertText": "Date", + "properties": [ + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.Instant a): java.util.Date", + "insertText": "from" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.util.Date a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.util.Date a): boolean", + "insertText": "before" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Date a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): long", + "insertText": "getTime" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(long a): void", + "insertText": "setTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Date", + "kind": "constructor", + "documentation": "Constructor: Date", + "insertText": "Date" + } + }, + { + "label": "Deque", + "kind": "class", + "documentation": "Class: Deque", + "insertText": "Deque", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Dictionary", + "kind": "class", + "documentation": "Class: Dictionary", + "insertText": "Dictionary", + "properties": [ + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSummaryStatistics", + "kind": "class", + "documentation": "Class: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.DoubleSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): double", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): double", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): double", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DoubleSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: DoubleSummaryStatistics", + "insertText": "DoubleSummaryStatistics" + } + }, + { + "label": "DuplicateFormatFlagsException", + "kind": "class", + "documentation": "Class: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "DuplicateFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: DuplicateFormatFlagsException", + "insertText": "DuplicateFormatFlagsException" + } + }, + { + "label": "EmptyStackException", + "kind": "class", + "documentation": "Class: EmptyStackException", + "insertText": "EmptyStackException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EmptyStackException", + "kind": "constructor", + "documentation": "Constructor: EmptyStackException", + "insertText": "EmptyStackException" + } + }, + { + "label": "Enumeration", + "kind": "class", + "documentation": "Class: Enumeration", + "insertText": "Enumeration", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListener", + "kind": "class", + "documentation": "Class: EventListener", + "insertText": "EventListener", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventListenerProxy", + "kind": "class", + "documentation": "Class: EventListenerProxy", + "insertText": "EventListenerProxy", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getListener", + "kind": "method", + "documentation": "getListener(): java.util.EventListener", + "insertText": "getListener" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "EventObject", + "kind": "class", + "documentation": "Class: EventObject", + "insertText": "EventObject", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getSource", + "kind": "method", + "documentation": "getSource(): java.lang.Object", + "insertText": "getSource" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "EventObject", + "kind": "constructor", + "documentation": "Constructor: EventObject", + "insertText": "EventObject" + } + }, + { + "label": "FormatFlagsConversionMismatchException", + "kind": "class", + "documentation": "Class: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatFlagsConversionMismatchException", + "kind": "constructor", + "documentation": "Constructor: FormatFlagsConversionMismatchException", + "insertText": "FormatFlagsConversionMismatchException" + } + }, + { + "label": "Formattable", + "kind": "class", + "documentation": "Class: Formattable", + "insertText": "Formattable", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "formatTo", + "kind": "method", + "documentation": "formatTo(java.util.Formatter a, int b, int c, int d): void", + "insertText": "formatTo" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormattableFlags", + "kind": "class", + "documentation": "Class: FormattableFlags", + "insertText": "FormattableFlags", + "properties": [ + { + "label": "ALTERNATE", + "kind": "property", + "documentation": "ALTERNATE: int", + "insertText": "ALTERNATE" + }, + { + "label": "LEFT_JUSTIFY", + "kind": "property", + "documentation": "LEFT_JUSTIFY: int", + "insertText": "LEFT_JUSTIFY" + }, + { + "label": "UPPERCASE", + "kind": "property", + "documentation": "UPPERCASE: int", + "insertText": "UPPERCASE" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Formatter", + "kind": "class", + "documentation": "Class: Formatter", + "insertText": "Formatter", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.util.Locale a, java.lang.String b, [Lorg.elasticsearch.painless.lookup.def; c | java.lang.String a, [Lorg.elasticsearch.painless.lookup.def; b): java.util.Formatter", + "insertText": "format" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "locale", + "kind": "method", + "documentation": "locale(): java.util.Locale", + "insertText": "locale" + }, + { + "label": "out", + "kind": "method", + "documentation": "out(): java.lang.Appendable", + "insertText": "out" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Formatter", + "kind": "constructor", + "documentation": "Constructor: Formatter", + "insertText": "Formatter" + } + }, + { + "label": "Formatter.BigDecimalLayoutForm", + "kind": "class", + "documentation": "Class: Formatter.BigDecimalLayoutForm", + "insertText": "Formatter.BigDecimalLayoutForm", + "properties": [ + { + "label": "DECIMAL_FLOAT", + "kind": "property", + "documentation": "DECIMAL_FLOAT: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "DECIMAL_FLOAT" + }, + { + "label": "SCIENTIFIC", + "kind": "property", + "documentation": "SCIENTIFIC: java.util.Formatter$BigDecimalLayoutForm", + "insertText": "SCIENTIFIC" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FormatterClosedException", + "kind": "class", + "documentation": "Class: FormatterClosedException", + "insertText": "FormatterClosedException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "FormatterClosedException", + "kind": "constructor", + "documentation": "Constructor: FormatterClosedException", + "insertText": "FormatterClosedException" + } + }, + { + "label": "GregorianCalendar", + "kind": "class", + "documentation": "Class: GregorianCalendar", + "insertText": "GregorianCalendar", + "properties": [ + { + "label": "AD", + "kind": "property", + "documentation": "AD: int", + "insertText": "AD" + }, + { + "label": "BC", + "kind": "property", + "documentation": "BC: int", + "insertText": "BC" + }, + { + "label": "from", + "kind": "method", + "documentation": "from(java.time.ZonedDateTime a): java.util.GregorianCalendar", + "insertText": "from" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a, int b): void", + "insertText": "add" + }, + { + "label": "after", + "kind": "method", + "documentation": "after(java.lang.Object a): boolean", + "insertText": "after" + }, + { + "label": "before", + "kind": "method", + "documentation": "before(java.lang.Object a): boolean", + "insertText": "before" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(int a): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.Calendar a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): int", + "insertText": "get" + }, + { + "label": "getActualMaximum", + "kind": "method", + "documentation": "getActualMaximum(int a): int", + "insertText": "getActualMaximum" + }, + { + "label": "getActualMinimum", + "kind": "method", + "documentation": "getActualMinimum(int a): int", + "insertText": "getActualMinimum" + }, + { + "label": "getCalendarType", + "kind": "method", + "documentation": "getCalendarType(): java.lang.String", + "insertText": "getCalendarType" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(int a, int b, java.util.Locale c): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayNames", + "kind": "method", + "documentation": "getDisplayNames(int a, int b, java.util.Locale c): java.util.Map", + "insertText": "getDisplayNames" + }, + { + "label": "getFirstDayOfWeek", + "kind": "method", + "documentation": "getFirstDayOfWeek(): int", + "insertText": "getFirstDayOfWeek" + }, + { + "label": "getGreatestMinimum", + "kind": "method", + "documentation": "getGreatestMinimum(int a): int", + "insertText": "getGreatestMinimum" + }, + { + "label": "getGregorianChange", + "kind": "method", + "documentation": "getGregorianChange(): java.util.Date", + "insertText": "getGregorianChange" + }, + { + "label": "getLeastMaximum", + "kind": "method", + "documentation": "getLeastMaximum(int a): int", + "insertText": "getLeastMaximum" + }, + { + "label": "getMaximum", + "kind": "method", + "documentation": "getMaximum(int a): int", + "insertText": "getMaximum" + }, + { + "label": "getMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "getMinimalDaysInFirstWeek(): int", + "insertText": "getMinimalDaysInFirstWeek" + }, + { + "label": "getMinimum", + "kind": "method", + "documentation": "getMinimum(int a): int", + "insertText": "getMinimum" + }, + { + "label": "getTime", + "kind": "method", + "documentation": "getTime(): java.util.Date", + "insertText": "getTime" + }, + { + "label": "getTimeInMillis", + "kind": "method", + "documentation": "getTimeInMillis(): long", + "insertText": "getTimeInMillis" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "getWeekYear", + "kind": "method", + "documentation": "getWeekYear(): int", + "insertText": "getWeekYear" + }, + { + "label": "getWeeksInWeekYear", + "kind": "method", + "documentation": "getWeeksInWeekYear(): int", + "insertText": "getWeeksInWeekYear" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isLeapYear", + "kind": "method", + "documentation": "isLeapYear(int a): boolean", + "insertText": "isLeapYear" + }, + { + "label": "isLenient", + "kind": "method", + "documentation": "isLenient(): boolean", + "insertText": "isLenient" + }, + { + "label": "isSet", + "kind": "method", + "documentation": "isSet(int a): boolean", + "insertText": "isSet" + }, + { + "label": "isWeekDateSupported", + "kind": "method", + "documentation": "isWeekDateSupported(): boolean", + "insertText": "isWeekDateSupported" + }, + { + "label": "roll", + "kind": "method", + "documentation": "roll(int a, int b): void", + "insertText": "roll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, int b, int c, int d, int e, int f | int a, int b, int c, int d, int e | int a, int b, int c | int a, int b): void", + "insertText": "set" + }, + { + "label": "setFirstDayOfWeek", + "kind": "method", + "documentation": "setFirstDayOfWeek(int a): void", + "insertText": "setFirstDayOfWeek" + }, + { + "label": "setGregorianChange", + "kind": "method", + "documentation": "setGregorianChange(java.util.Date a): void", + "insertText": "setGregorianChange" + }, + { + "label": "setLenient", + "kind": "method", + "documentation": "setLenient(boolean a): void", + "insertText": "setLenient" + }, + { + "label": "setMinimalDaysInFirstWeek", + "kind": "method", + "documentation": "setMinimalDaysInFirstWeek(int a): void", + "insertText": "setMinimalDaysInFirstWeek" + }, + { + "label": "setTime", + "kind": "method", + "documentation": "setTime(java.util.Date a): void", + "insertText": "setTime" + }, + { + "label": "setTimeInMillis", + "kind": "method", + "documentation": "setTimeInMillis(long a): void", + "insertText": "setTimeInMillis" + }, + { + "label": "setTimeZone", + "kind": "method", + "documentation": "setTimeZone(java.util.TimeZone a): void", + "insertText": "setTimeZone" + }, + { + "label": "setWeekDate", + "kind": "method", + "documentation": "setWeekDate(int a, int b, int c): void", + "insertText": "setWeekDate" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZonedDateTime", + "kind": "method", + "documentation": "toZonedDateTime(): java.time.ZonedDateTime", + "insertText": "toZonedDateTime" + } + ], + "constructorDefinition": { + "label": "GregorianCalendar", + "kind": "constructor", + "documentation": "Constructor: GregorianCalendar", + "insertText": "GregorianCalendar" + } + }, + { + "label": "HashMap", + "kind": "class", + "documentation": "Class: HashMap", + "insertText": "HashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "HashMap", + "kind": "constructor", + "documentation": "Constructor: HashMap", + "insertText": "HashMap" + } + }, + { + "label": "HashSet", + "kind": "class", + "documentation": "Class: HashSet", + "insertText": "HashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "HashSet", + "kind": "constructor", + "documentation": "Constructor: HashSet", + "insertText": "HashSet" + } + }, + { + "label": "Hashtable", + "kind": "class", + "documentation": "Class: Hashtable", + "insertText": "Hashtable", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "keys", + "kind": "method", + "documentation": "keys(): java.util.Enumeration", + "insertText": "keys" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "Hashtable", + "kind": "constructor", + "documentation": "Constructor: Hashtable", + "insertText": "Hashtable" + } + }, + { + "label": "IdentityHashMap", + "kind": "class", + "documentation": "Class: IdentityHashMap", + "insertText": "IdentityHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "IdentityHashMap", + "kind": "constructor", + "documentation": "Constructor: IdentityHashMap", + "insertText": "IdentityHashMap" + } + }, + { + "label": "IllegalFormatCodePointException", + "kind": "class", + "documentation": "Class: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCodePoint", + "kind": "method", + "documentation": "getCodePoint(): int", + "insertText": "getCodePoint" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatCodePointException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatCodePointException", + "insertText": "IllegalFormatCodePointException" + } + }, + { + "label": "IllegalFormatConversionException", + "kind": "class", + "documentation": "Class: IllegalFormatConversionException", + "insertText": "IllegalFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): char", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatException", + "kind": "class", + "documentation": "Class: IllegalFormatException", + "insertText": "IllegalFormatException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IllegalFormatFlagsException", + "kind": "class", + "documentation": "Class: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatFlagsException", + "insertText": "IllegalFormatFlagsException" + } + }, + { + "label": "IllegalFormatPrecisionException", + "kind": "class", + "documentation": "Class: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getPrecision", + "kind": "method", + "documentation": "getPrecision(): int", + "insertText": "getPrecision" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatPrecisionException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatPrecisionException", + "insertText": "IllegalFormatPrecisionException" + } + }, + { + "label": "IllegalFormatWidthException", + "kind": "class", + "documentation": "Class: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "getWidth", + "kind": "method", + "documentation": "getWidth(): int", + "insertText": "getWidth" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllegalFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: IllegalFormatWidthException", + "insertText": "IllegalFormatWidthException" + } + }, + { + "label": "IllformedLocaleException", + "kind": "class", + "documentation": "Class: IllformedLocaleException", + "insertText": "IllformedLocaleException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getErrorIndex", + "kind": "method", + "documentation": "getErrorIndex(): int", + "insertText": "getErrorIndex" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IllformedLocaleException", + "kind": "constructor", + "documentation": "Constructor: IllformedLocaleException", + "insertText": "IllformedLocaleException" + } + }, + { + "label": "InputMismatchException", + "kind": "class", + "documentation": "Class: InputMismatchException", + "insertText": "InputMismatchException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "InputMismatchException", + "kind": "constructor", + "documentation": "Constructor: InputMismatchException", + "insertText": "InputMismatchException" + } + }, + { + "label": "IntSummaryStatistics", + "kind": "class", + "documentation": "Class: IntSummaryStatistics", + "insertText": "IntSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.IntSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): int", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): int", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "IntSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: IntSummaryStatistics", + "insertText": "IntSummaryStatistics" + } + }, + { + "label": "Iterator", + "kind": "class", + "documentation": "Class: Iterator", + "insertText": "Iterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LinkedHashMap", + "kind": "class", + "documentation": "Class: LinkedHashMap", + "insertText": "LinkedHashMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "LinkedHashMap", + "kind": "constructor", + "documentation": "Constructor: LinkedHashMap", + "insertText": "LinkedHashMap" + } + }, + { + "label": "LinkedHashSet", + "kind": "class", + "documentation": "Class: LinkedHashSet", + "insertText": "LinkedHashSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedHashSet", + "kind": "constructor", + "documentation": "Constructor: LinkedHashSet", + "insertText": "LinkedHashSet" + } + }, + { + "label": "LinkedList", + "kind": "class", + "documentation": "Class: LinkedList", + "insertText": "LinkedList", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addFirst", + "kind": "method", + "documentation": "addFirst(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addFirst" + }, + { + "label": "addLast", + "kind": "method", + "documentation": "addLast(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addLast" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getFirst", + "kind": "method", + "documentation": "getFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "getFirst" + }, + { + "label": "getLast", + "kind": "method", + "documentation": "getLast(): org.elasticsearch.painless.lookup.def", + "insertText": "getLast" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "offerFirst", + "kind": "method", + "documentation": "offerFirst(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerFirst" + }, + { + "label": "offerLast", + "kind": "method", + "documentation": "offerLast(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offerLast" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "peekFirst", + "kind": "method", + "documentation": "peekFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "peekFirst" + }, + { + "label": "peekLast", + "kind": "method", + "documentation": "peekLast(): org.elasticsearch.painless.lookup.def", + "insertText": "peekLast" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): void", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeFirst", + "kind": "method", + "documentation": "removeFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "removeFirst" + }, + { + "label": "removeFirstOccurrence", + "kind": "method", + "documentation": "removeFirstOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeFirstOccurrence" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "removeLast", + "kind": "method", + "documentation": "removeLast(): org.elasticsearch.painless.lookup.def", + "insertText": "removeLast" + }, + { + "label": "removeLastOccurrence", + "kind": "method", + "documentation": "removeLastOccurrence(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeLastOccurrence" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LinkedList", + "kind": "constructor", + "documentation": "Constructor: LinkedList", + "insertText": "LinkedList" + } + }, + { + "label": "List", + "kind": "class", + "documentation": "Class: List", + "insertText": "List", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ListIterator", + "kind": "class", + "documentation": "Class: ListIterator", + "insertText": "ListIterator", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): void", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hasPrevious", + "kind": "method", + "documentation": "hasPrevious(): boolean", + "insertText": "hasPrevious" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "nextIndex", + "kind": "method", + "documentation": "nextIndex(): int", + "insertText": "nextIndex" + }, + { + "label": "previousIndex", + "kind": "method", + "documentation": "previousIndex(): int", + "insertText": "previousIndex" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(org.elasticsearch.painless.lookup.def a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale", + "kind": "class", + "documentation": "Class: Locale", + "insertText": "Locale", + "properties": [ + { + "label": "CANADA", + "kind": "property", + "documentation": "CANADA: java.util.Locale", + "insertText": "CANADA" + }, + { + "label": "CANADA_FRENCH", + "kind": "property", + "documentation": "CANADA_FRENCH: java.util.Locale", + "insertText": "CANADA_FRENCH" + }, + { + "label": "CHINA", + "kind": "property", + "documentation": "CHINA: java.util.Locale", + "insertText": "CHINA" + }, + { + "label": "CHINESE", + "kind": "property", + "documentation": "CHINESE: java.util.Locale", + "insertText": "CHINESE" + }, + { + "label": "ENGLISH", + "kind": "property", + "documentation": "ENGLISH: java.util.Locale", + "insertText": "ENGLISH" + }, + { + "label": "FRANCE", + "kind": "property", + "documentation": "FRANCE: java.util.Locale", + "insertText": "FRANCE" + }, + { + "label": "FRENCH", + "kind": "property", + "documentation": "FRENCH: java.util.Locale", + "insertText": "FRENCH" + }, + { + "label": "GERMAN", + "kind": "property", + "documentation": "GERMAN: java.util.Locale", + "insertText": "GERMAN" + }, + { + "label": "GERMANY", + "kind": "property", + "documentation": "GERMANY: java.util.Locale", + "insertText": "GERMANY" + }, + { + "label": "ITALIAN", + "kind": "property", + "documentation": "ITALIAN: java.util.Locale", + "insertText": "ITALIAN" + }, + { + "label": "ITALY", + "kind": "property", + "documentation": "ITALY: java.util.Locale", + "insertText": "ITALY" + }, + { + "label": "JAPAN", + "kind": "property", + "documentation": "JAPAN: java.util.Locale", + "insertText": "JAPAN" + }, + { + "label": "JAPANESE", + "kind": "property", + "documentation": "JAPANESE: java.util.Locale", + "insertText": "JAPANESE" + }, + { + "label": "KOREA", + "kind": "property", + "documentation": "KOREA: java.util.Locale", + "insertText": "KOREA" + }, + { + "label": "KOREAN", + "kind": "property", + "documentation": "KOREAN: java.util.Locale", + "insertText": "KOREAN" + }, + { + "label": "PRC", + "kind": "property", + "documentation": "PRC: java.util.Locale", + "insertText": "PRC" + }, + { + "label": "PRIVATE_USE_EXTENSION", + "kind": "property", + "documentation": "PRIVATE_USE_EXTENSION: char", + "insertText": "PRIVATE_USE_EXTENSION" + }, + { + "label": "ROOT", + "kind": "property", + "documentation": "ROOT: java.util.Locale", + "insertText": "ROOT" + }, + { + "label": "SIMPLIFIED_CHINESE", + "kind": "property", + "documentation": "SIMPLIFIED_CHINESE: java.util.Locale", + "insertText": "SIMPLIFIED_CHINESE" + }, + { + "label": "TAIWAN", + "kind": "property", + "documentation": "TAIWAN: java.util.Locale", + "insertText": "TAIWAN" + }, + { + "label": "TRADITIONAL_CHINESE", + "kind": "property", + "documentation": "TRADITIONAL_CHINESE: java.util.Locale", + "insertText": "TRADITIONAL_CHINESE" + }, + { + "label": "UK", + "kind": "property", + "documentation": "UK: java.util.Locale", + "insertText": "UK" + }, + { + "label": "UNICODE_LOCALE_EXTENSION", + "kind": "property", + "documentation": "UNICODE_LOCALE_EXTENSION: char", + "insertText": "UNICODE_LOCALE_EXTENSION" + }, + { + "label": "US", + "kind": "property", + "documentation": "US: java.util.Locale", + "insertText": "US" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filter" + }, + { + "label": "filterTags", + "kind": "method", + "documentation": "filterTags(java.util.List a, java.util.Collection b): java.util.List", + "insertText": "filterTags" + }, + { + "label": "forLanguageTag", + "kind": "method", + "documentation": "forLanguageTag(java.lang.String a): java.util.Locale", + "insertText": "forLanguageTag" + }, + { + "label": "getAvailableLocales", + "kind": "method", + "documentation": "getAvailableLocales(): [Ljava.util.Locale;", + "insertText": "getAvailableLocales" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(java.util.Locale$Category a): java.util.Locale", + "insertText": "getDefault" + }, + { + "label": "getISOCountries", + "kind": "method", + "documentation": "getISOCountries(): [Ljava.lang.String;", + "insertText": "getISOCountries" + }, + { + "label": "getISOLanguages", + "kind": "method", + "documentation": "getISOLanguages(): [Ljava.lang.String;", + "insertText": "getISOLanguages" + }, + { + "label": "lookup", + "kind": "method", + "documentation": "lookup(java.util.List a, java.util.Collection b): java.util.Locale", + "insertText": "lookup" + }, + { + "label": "lookupTag", + "kind": "method", + "documentation": "lookupTag(java.util.List a, java.util.Collection b): java.lang.String", + "insertText": "lookupTag" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getCountry", + "kind": "method", + "documentation": "getCountry(): java.lang.String", + "insertText": "getCountry" + }, + { + "label": "getDisplayCountry", + "kind": "method", + "documentation": "getDisplayCountry(java.util.Locale a): java.lang.String", + "insertText": "getDisplayCountry" + }, + { + "label": "getDisplayLanguage", + "kind": "method", + "documentation": "getDisplayLanguage(java.util.Locale a): java.lang.String", + "insertText": "getDisplayLanguage" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getDisplayScript", + "kind": "method", + "documentation": "getDisplayScript(java.util.Locale a): java.lang.String", + "insertText": "getDisplayScript" + }, + { + "label": "getDisplayVariant", + "kind": "method", + "documentation": "getDisplayVariant(java.util.Locale a): java.lang.String", + "insertText": "getDisplayVariant" + }, + { + "label": "getExtension", + "kind": "method", + "documentation": "getExtension(char a): java.lang.String", + "insertText": "getExtension" + }, + { + "label": "getExtensionKeys", + "kind": "method", + "documentation": "getExtensionKeys(): java.util.Set", + "insertText": "getExtensionKeys" + }, + { + "label": "getISO3Country", + "kind": "method", + "documentation": "getISO3Country(): java.lang.String", + "insertText": "getISO3Country" + }, + { + "label": "getISO3Language", + "kind": "method", + "documentation": "getISO3Language(): java.lang.String", + "insertText": "getISO3Language" + }, + { + "label": "getLanguage", + "kind": "method", + "documentation": "getLanguage(): java.lang.String", + "insertText": "getLanguage" + }, + { + "label": "getScript", + "kind": "method", + "documentation": "getScript(): java.lang.String", + "insertText": "getScript" + }, + { + "label": "getUnicodeLocaleAttributes", + "kind": "method", + "documentation": "getUnicodeLocaleAttributes(): java.util.Set", + "insertText": "getUnicodeLocaleAttributes" + }, + { + "label": "getUnicodeLocaleKeys", + "kind": "method", + "documentation": "getUnicodeLocaleKeys(): java.util.Set", + "insertText": "getUnicodeLocaleKeys" + }, + { + "label": "getUnicodeLocaleType", + "kind": "method", + "documentation": "getUnicodeLocaleType(java.lang.String a): java.lang.String", + "insertText": "getUnicodeLocaleType" + }, + { + "label": "getVariant", + "kind": "method", + "documentation": "getVariant(): java.lang.String", + "insertText": "getVariant" + }, + { + "label": "hasExtensions", + "kind": "method", + "documentation": "hasExtensions(): boolean", + "insertText": "hasExtensions" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "stripExtensions", + "kind": "method", + "documentation": "stripExtensions(): java.util.Locale", + "insertText": "stripExtensions" + }, + { + "label": "toLanguageTag", + "kind": "method", + "documentation": "toLanguageTag(): java.lang.String", + "insertText": "toLanguageTag" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale", + "kind": "constructor", + "documentation": "Constructor: Locale", + "insertText": "Locale" + } + }, + { + "label": "Locale.Builder", + "kind": "class", + "documentation": "Class: Locale.Builder", + "insertText": "Locale.Builder", + "properties": [ + { + "label": "addUnicodeLocaleAttribute", + "kind": "method", + "documentation": "addUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "addUnicodeLocaleAttribute" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.Locale", + "insertText": "build" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): java.util.Locale$Builder", + "insertText": "clear" + }, + { + "label": "clearExtensions", + "kind": "method", + "documentation": "clearExtensions(): java.util.Locale$Builder", + "insertText": "clearExtensions" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "removeUnicodeLocaleAttribute", + "kind": "method", + "documentation": "removeUnicodeLocaleAttribute(java.lang.String a): java.util.Locale$Builder", + "insertText": "removeUnicodeLocaleAttribute" + }, + { + "label": "setExtension", + "kind": "method", + "documentation": "setExtension(char a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setExtension" + }, + { + "label": "setLanguage", + "kind": "method", + "documentation": "setLanguage(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguage" + }, + { + "label": "setLanguageTag", + "kind": "method", + "documentation": "setLanguageTag(java.lang.String a): java.util.Locale$Builder", + "insertText": "setLanguageTag" + }, + { + "label": "setLocale", + "kind": "method", + "documentation": "setLocale(java.util.Locale a): java.util.Locale$Builder", + "insertText": "setLocale" + }, + { + "label": "setRegion", + "kind": "method", + "documentation": "setRegion(java.lang.String a): java.util.Locale$Builder", + "insertText": "setRegion" + }, + { + "label": "setScript", + "kind": "method", + "documentation": "setScript(java.lang.String a): java.util.Locale$Builder", + "insertText": "setScript" + }, + { + "label": "setUnicodeLocaleKeyword", + "kind": "method", + "documentation": "setUnicodeLocaleKeyword(java.lang.String a, java.lang.String b): java.util.Locale$Builder", + "insertText": "setUnicodeLocaleKeyword" + }, + { + "label": "setVariant", + "kind": "method", + "documentation": "setVariant(java.lang.String a): java.util.Locale$Builder", + "insertText": "setVariant" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.Builder", + "kind": "constructor", + "documentation": "Constructor: Locale.Builder", + "insertText": "Locale.Builder" + } + }, + { + "label": "Locale.Category", + "kind": "class", + "documentation": "Class: Locale.Category", + "insertText": "Locale.Category", + "properties": [ + { + "label": "DISPLAY", + "kind": "property", + "documentation": "DISPLAY: java.util.Locale$Category", + "insertText": "DISPLAY" + }, + { + "label": "FORMAT", + "kind": "property", + "documentation": "FORMAT: java.util.Locale$Category", + "insertText": "FORMAT" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$Category", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$Category;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.FilteringMode", + "kind": "class", + "documentation": "Class: Locale.FilteringMode", + "insertText": "Locale.FilteringMode", + "properties": [ + { + "label": "AUTOSELECT_FILTERING", + "kind": "property", + "documentation": "AUTOSELECT_FILTERING: java.util.Locale$FilteringMode", + "insertText": "AUTOSELECT_FILTERING" + }, + { + "label": "EXTENDED_FILTERING", + "kind": "property", + "documentation": "EXTENDED_FILTERING: java.util.Locale$FilteringMode", + "insertText": "EXTENDED_FILTERING" + }, + { + "label": "IGNORE_EXTENDED_RANGES", + "kind": "property", + "documentation": "IGNORE_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "IGNORE_EXTENDED_RANGES" + }, + { + "label": "MAP_EXTENDED_RANGES", + "kind": "property", + "documentation": "MAP_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "MAP_EXTENDED_RANGES" + }, + { + "label": "REJECT_EXTENDED_RANGES", + "kind": "property", + "documentation": "REJECT_EXTENDED_RANGES: java.util.Locale$FilteringMode", + "insertText": "REJECT_EXTENDED_RANGES" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.Locale$FilteringMode", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.Locale$FilteringMode;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Locale.LanguageRange", + "kind": "class", + "documentation": "Class: Locale.LanguageRange", + "insertText": "Locale.LanguageRange", + "properties": [ + { + "label": "MAX_WEIGHT", + "kind": "property", + "documentation": "MAX_WEIGHT: double", + "insertText": "MAX_WEIGHT" + }, + { + "label": "MIN_WEIGHT", + "kind": "property", + "documentation": "MIN_WEIGHT: double", + "insertText": "MIN_WEIGHT" + }, + { + "label": "mapEquivalents", + "kind": "method", + "documentation": "mapEquivalents(java.util.List a, java.util.Map b): java.util.List", + "insertText": "mapEquivalents" + }, + { + "label": "parse", + "kind": "method", + "documentation": "parse(java.lang.String a, java.util.Map b | java.lang.String a): java.util.List", + "insertText": "parse" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getRange", + "kind": "method", + "documentation": "getRange(): java.lang.String", + "insertText": "getRange" + }, + { + "label": "getWeight", + "kind": "method", + "documentation": "getWeight(): double", + "insertText": "getWeight" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Locale.LanguageRange", + "kind": "constructor", + "documentation": "Constructor: Locale.LanguageRange", + "insertText": "Locale.LanguageRange" + } + }, + { + "label": "LongSummaryStatistics", + "kind": "class", + "documentation": "Class: LongSummaryStatistics", + "insertText": "LongSummaryStatistics", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "combine", + "kind": "method", + "documentation": "combine(java.util.LongSummaryStatistics a): void", + "insertText": "combine" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAverage", + "kind": "method", + "documentation": "getAverage(): double", + "insertText": "getAverage" + }, + { + "label": "getCount", + "kind": "method", + "documentation": "getCount(): long", + "insertText": "getCount" + }, + { + "label": "getMax", + "kind": "method", + "documentation": "getMax(): long", + "insertText": "getMax" + }, + { + "label": "getMin", + "kind": "method", + "documentation": "getMin(): long", + "insertText": "getMin" + }, + { + "label": "getSum", + "kind": "method", + "documentation": "getSum(): long", + "insertText": "getSum" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "LongSummaryStatistics", + "kind": "constructor", + "documentation": "Constructor: LongSummaryStatistics", + "insertText": "LongSummaryStatistics" + } + }, + { + "label": "Map", + "kind": "class", + "documentation": "Class: Map", + "insertText": "Map", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "Map.Entry", + "kind": "class", + "documentation": "Class: Map.Entry", + "insertText": "Map.Entry", + "properties": [ + { + "label": "comparingByKey", + "kind": "method", + "documentation": "comparingByKey(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByKey" + }, + { + "label": "comparingByValue", + "kind": "method", + "documentation": "comparingByValue(java.util.Comparator a): java.util.Comparator", + "insertText": "comparingByValue" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): org.elasticsearch.painless.lookup.def", + "insertText": "getKey" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "setValue", + "kind": "method", + "documentation": "setValue(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "setValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "MissingFormatArgumentException", + "kind": "class", + "documentation": "Class: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatArgumentException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatArgumentException", + "insertText": "MissingFormatArgumentException" + } + }, + { + "label": "MissingFormatWidthException", + "kind": "class", + "documentation": "Class: MissingFormatWidthException", + "insertText": "MissingFormatWidthException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFormatSpecifier", + "kind": "method", + "documentation": "getFormatSpecifier(): java.lang.String", + "insertText": "getFormatSpecifier" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingFormatWidthException", + "kind": "constructor", + "documentation": "Constructor: MissingFormatWidthException", + "insertText": "MissingFormatWidthException" + } + }, + { + "label": "MissingResourceException", + "kind": "class", + "documentation": "Class: MissingResourceException", + "insertText": "MissingResourceException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getClassName", + "kind": "method", + "documentation": "getClassName(): java.lang.String", + "insertText": "getClassName" + }, + { + "label": "getKey", + "kind": "method", + "documentation": "getKey(): java.lang.String", + "insertText": "getKey" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "MissingResourceException", + "kind": "constructor", + "documentation": "Constructor: MissingResourceException", + "insertText": "MissingResourceException" + } + }, + { + "label": "NavigableMap", + "kind": "class", + "documentation": "Class: NavigableMap", + "insertText": "NavigableMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "NavigableSet", + "kind": "class", + "documentation": "Class: NavigableSet", + "insertText": "NavigableSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "NoSuchElementException", + "kind": "class", + "documentation": "Class: NoSuchElementException", + "insertText": "NoSuchElementException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "NoSuchElementException", + "kind": "constructor", + "documentation": "Constructor: NoSuchElementException", + "insertText": "NoSuchElementException" + } + }, + { + "label": "Objects", + "kind": "class", + "documentation": "Class: Objects", + "insertText": "Objects", + "properties": [ + { + "label": "compare", + "kind": "method", + "documentation": "compare(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.Comparator c): int", + "insertText": "compare" + }, + { + "label": "deepEquals", + "kind": "method", + "documentation": "deepEquals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "deepEquals" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a, java.lang.Object b): boolean", + "insertText": "equals" + }, + { + "label": "hash", + "kind": "method", + "documentation": "hash([Ljava.lang.Object; a): int", + "insertText": "hash" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(java.lang.Object a): int", + "insertText": "hashCode" + }, + { + "label": "isNull", + "kind": "method", + "documentation": "isNull(java.lang.Object a): boolean", + "insertText": "isNull" + }, + { + "label": "nonNull", + "kind": "method", + "documentation": "nonNull(java.lang.Object a): boolean", + "insertText": "nonNull" + }, + { + "label": "requireNonNull", + "kind": "method", + "documentation": "requireNonNull(org.elasticsearch.painless.lookup.def a, java.lang.String b | org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "requireNonNull" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.Object a, java.lang.String b | java.lang.Object a): java.lang.String", + "insertText": "toString" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Observable", + "kind": "class", + "documentation": "Class: Observable", + "insertText": "Observable", + "properties": [ + { + "label": "addObserver", + "kind": "method", + "documentation": "addObserver(java.util.Observer a): void", + "insertText": "addObserver" + }, + { + "label": "countObservers", + "kind": "method", + "documentation": "countObservers(): int", + "insertText": "countObservers" + }, + { + "label": "deleteObserver", + "kind": "method", + "documentation": "deleteObserver(java.util.Observer a): void", + "insertText": "deleteObserver" + }, + { + "label": "deleteObservers", + "kind": "method", + "documentation": "deleteObservers(): void", + "insertText": "deleteObservers" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasChanged", + "kind": "method", + "documentation": "hasChanged(): boolean", + "insertText": "hasChanged" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "notifyObservers", + "kind": "method", + "documentation": "notifyObservers(java.lang.Object a): void", + "insertText": "notifyObservers" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Observable", + "kind": "constructor", + "documentation": "Constructor: Observable", + "insertText": "Observable" + } + }, + { + "label": "Observer", + "kind": "class", + "documentation": "Class: Observer", + "insertText": "Observer", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "update", + "kind": "method", + "documentation": "update(java.util.Observable a, java.lang.Object b): void", + "insertText": "update" + } + ] + }, + { + "label": "Optional", + "kind": "class", + "documentation": "Class: Optional", + "insertText": "Optional", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.Optional", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "of" + }, + { + "label": "ofNullable", + "kind": "method", + "documentation": "ofNullable(org.elasticsearch.painless.lookup.def a): java.util.Optional", + "insertText": "ofNullable" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.Optional", + "insertText": "filter" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.Optional", + "insertText": "flatMap" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.Consumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.Optional", + "insertText": "map" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): org.elasticsearch.painless.lookup.def", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalDouble", + "kind": "class", + "documentation": "Class: OptionalDouble", + "insertText": "OptionalDouble", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalDouble", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(double a): java.util.OptionalDouble", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.DoubleConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(double a): double", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.DoubleSupplier a): double", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): double", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalInt", + "kind": "class", + "documentation": "Class: OptionalInt", + "insertText": "OptionalInt", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalInt", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(int a): java.util.OptionalInt", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.IntConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(int a): int", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.IntSupplier a): int", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): int", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "OptionalLong", + "kind": "class", + "documentation": "Class: OptionalLong", + "insertText": "OptionalLong", + "properties": [ + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.OptionalLong", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of(long a): java.util.OptionalLong", + "insertText": "of" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ifPresent", + "kind": "method", + "documentation": "ifPresent(java.util.function.LongConsumer a): void", + "insertText": "ifPresent" + }, + { + "label": "isPresent", + "kind": "method", + "documentation": "isPresent(): boolean", + "insertText": "isPresent" + }, + { + "label": "orElse", + "kind": "method", + "documentation": "orElse(long a): long", + "insertText": "orElse" + }, + { + "label": "orElseGet", + "kind": "method", + "documentation": "orElseGet(java.util.function.LongSupplier a): long", + "insertText": "orElseGet" + }, + { + "label": "orElseThrow", + "kind": "method", + "documentation": "orElseThrow(java.util.function.Supplier a): long", + "insertText": "orElseThrow" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator", + "kind": "class", + "documentation": "Class: PrimitiveIterator", + "insertText": "PrimitiveIterator", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): org.elasticsearch.painless.lookup.def", + "insertText": "next" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfDouble", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfDouble", + "insertText": "PrimitiveIterator.OfDouble", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Double", + "insertText": "next" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfInt", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfInt", + "insertText": "PrimitiveIterator.OfInt", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Integer", + "insertText": "next" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(): int", + "insertText": "nextInt" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PrimitiveIterator.OfLong", + "kind": "class", + "documentation": "Class: PrimitiveIterator.OfLong", + "insertText": "PrimitiveIterator.OfLong", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "hasNext", + "kind": "method", + "documentation": "hasNext(): boolean", + "insertText": "hasNext" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "next", + "kind": "method", + "documentation": "next(): java.lang.Long", + "insertText": "next" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): void", + "insertText": "remove" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "PriorityQueue", + "kind": "class", + "documentation": "Class: PriorityQueue", + "insertText": "PriorityQueue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "PriorityQueue", + "kind": "constructor", + "documentation": "Constructor: PriorityQueue", + "insertText": "PriorityQueue" + } + }, + { + "label": "Queue", + "kind": "class", + "documentation": "Class: Queue", + "insertText": "Queue", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "element", + "kind": "method", + "documentation": "element(): org.elasticsearch.painless.lookup.def", + "insertText": "element" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "offer", + "kind": "method", + "documentation": "offer(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "offer" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "poll", + "kind": "method", + "documentation": "poll(): org.elasticsearch.painless.lookup.def", + "insertText": "poll" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Random", + "kind": "class", + "documentation": "Class: Random", + "insertText": "Random", + "properties": [ + { + "label": "doubles", + "kind": "method", + "documentation": "doubles(long a, double b, double c | long a): java.util.stream.DoubleStream", + "insertText": "doubles" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "ints", + "kind": "method", + "documentation": "ints(long a, int b, int c | long a): java.util.stream.IntStream", + "insertText": "ints" + }, + { + "label": "longs", + "kind": "method", + "documentation": "longs(long a, long b, long c | long a): java.util.stream.LongStream", + "insertText": "longs" + }, + { + "label": "nextBoolean", + "kind": "method", + "documentation": "nextBoolean(): boolean", + "insertText": "nextBoolean" + }, + { + "label": "nextBytes", + "kind": "method", + "documentation": "nextBytes([B a): void", + "insertText": "nextBytes" + }, + { + "label": "nextDouble", + "kind": "method", + "documentation": "nextDouble(): double", + "insertText": "nextDouble" + }, + { + "label": "nextFloat", + "kind": "method", + "documentation": "nextFloat(): float", + "insertText": "nextFloat" + }, + { + "label": "nextGaussian", + "kind": "method", + "documentation": "nextGaussian(): double", + "insertText": "nextGaussian" + }, + { + "label": "nextInt", + "kind": "method", + "documentation": "nextInt(int a): int", + "insertText": "nextInt" + }, + { + "label": "nextLong", + "kind": "method", + "documentation": "nextLong(): long", + "insertText": "nextLong" + }, + { + "label": "setSeed", + "kind": "method", + "documentation": "setSeed(long a): void", + "insertText": "setSeed" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Random", + "kind": "constructor", + "documentation": "Constructor: Random", + "insertText": "Random" + } + }, + { + "label": "RandomAccess", + "kind": "class", + "documentation": "Class: RandomAccess", + "insertText": "RandomAccess", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Set", + "kind": "class", + "documentation": "Class: Set", + "insertText": "Set", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "SimpleTimeZone", + "kind": "class", + "documentation": "Class: SimpleTimeZone", + "insertText": "SimpleTimeZone", + "properties": [ + { + "label": "STANDARD_TIME", + "kind": "property", + "documentation": "STANDARD_TIME: int", + "insertText": "STANDARD_TIME" + }, + { + "label": "UTC_TIME", + "kind": "property", + "documentation": "UTC_TIME: int", + "insertText": "UTC_TIME" + }, + { + "label": "WALL_TIME", + "kind": "property", + "documentation": "WALL_TIME: int", + "insertText": "WALL_TIME" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setDSTSavings", + "kind": "method", + "documentation": "setDSTSavings(int a): void", + "insertText": "setDSTSavings" + }, + { + "label": "setEndRule", + "kind": "method", + "documentation": "setEndRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setEndRule" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "setStartRule", + "kind": "method", + "documentation": "setStartRule(int a, int b, int c, int d, boolean e | int a, int b, int c, int d | int a, int b, int c): void", + "insertText": "setStartRule" + }, + { + "label": "setStartYear", + "kind": "method", + "documentation": "setStartYear(int a): void", + "insertText": "setStartYear" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ], + "constructorDefinition": { + "label": "SimpleTimeZone", + "kind": "constructor", + "documentation": "Constructor: SimpleTimeZone", + "insertText": "SimpleTimeZone" + } + }, + { + "label": "SortedMap", + "kind": "class", + "documentation": "Class: SortedMap", + "insertText": "SortedMap", + "properties": [ + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a): java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ] + }, + { + "label": "SortedSet", + "kind": "class", + "documentation": "Class: SortedSet", + "insertText": "SortedSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a): java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Spliterator", + "kind": "class", + "documentation": "Class: Spliterator", + "insertText": "Spliterator", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: int", + "insertText": "CONCURRENT" + }, + { + "label": "DISTINCT", + "kind": "property", + "documentation": "DISTINCT: int", + "insertText": "DISTINCT" + }, + { + "label": "IMMUTABLE", + "kind": "property", + "documentation": "IMMUTABLE: int", + "insertText": "IMMUTABLE" + }, + { + "label": "NONNULL", + "kind": "property", + "documentation": "NONNULL: int", + "insertText": "NONNULL" + }, + { + "label": "ORDERED", + "kind": "property", + "documentation": "ORDERED: int", + "insertText": "ORDERED" + }, + { + "label": "SIZED", + "kind": "property", + "documentation": "SIZED: int", + "insertText": "SIZED" + }, + { + "label": "SORTED", + "kind": "property", + "documentation": "SORTED: int", + "insertText": "SORTED" + }, + { + "label": "SUBSIZED", + "kind": "property", + "documentation": "SUBSIZED: int", + "insertText": "SUBSIZED" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(java.util.function.Consumer a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(java.util.function.Consumer a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfDouble", + "kind": "class", + "documentation": "Class: Spliterator.OfDouble", + "insertText": "Spliterator.OfDouble", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfDouble", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfInt", + "kind": "class", + "documentation": "Class: Spliterator.OfInt", + "insertText": "Spliterator.OfInt", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfInt", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfLong", + "kind": "class", + "documentation": "Class: Spliterator.OfLong", + "insertText": "Spliterator.OfLong", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfLong", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterator.OfPrimitive", + "kind": "class", + "documentation": "Class: Spliterator.OfPrimitive", + "insertText": "Spliterator.OfPrimitive", + "properties": [ + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): int", + "insertText": "characteristics" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "estimateSize", + "kind": "method", + "documentation": "estimateSize(): long", + "insertText": "estimateSize" + }, + { + "label": "forEachRemaining", + "kind": "method", + "documentation": "forEachRemaining(org.elasticsearch.painless.lookup.def a): void", + "insertText": "forEachRemaining" + }, + { + "label": "getComparator", + "kind": "method", + "documentation": "getComparator(): java.util.Comparator", + "insertText": "getComparator" + }, + { + "label": "getExactSizeIfKnown", + "kind": "method", + "documentation": "getExactSizeIfKnown(): long", + "insertText": "getExactSizeIfKnown" + }, + { + "label": "hasCharacteristics", + "kind": "method", + "documentation": "hasCharacteristics(int a): boolean", + "insertText": "hasCharacteristics" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "tryAdvance", + "kind": "method", + "documentation": "tryAdvance(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "tryAdvance" + }, + { + "label": "trySplit", + "kind": "method", + "documentation": "trySplit(): java.util.Spliterator$OfPrimitive", + "insertText": "trySplit" + } + ] + }, + { + "label": "Spliterators", + "kind": "class", + "documentation": "Class: Spliterators", + "insertText": "Spliterators", + "properties": [ + { + "label": "emptyDoubleSpliterator", + "kind": "method", + "documentation": "emptyDoubleSpliterator(): java.util.Spliterator$OfDouble", + "insertText": "emptyDoubleSpliterator" + }, + { + "label": "emptyIntSpliterator", + "kind": "method", + "documentation": "emptyIntSpliterator(): java.util.Spliterator$OfInt", + "insertText": "emptyIntSpliterator" + }, + { + "label": "emptyLongSpliterator", + "kind": "method", + "documentation": "emptyLongSpliterator(): java.util.Spliterator$OfLong", + "insertText": "emptyLongSpliterator" + }, + { + "label": "emptySpliterator", + "kind": "method", + "documentation": "emptySpliterator(): java.util.Spliterator", + "insertText": "emptySpliterator" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(java.util.Spliterator a): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(java.util.Iterator a, long b, int c | java.util.Collection a, int b): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "spliteratorUnknownSize", + "kind": "method", + "documentation": "spliteratorUnknownSize(java.util.Iterator a, int b): java.util.Spliterator", + "insertText": "spliteratorUnknownSize" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stack", + "kind": "class", + "documentation": "Class: Stack", + "insertText": "Stack", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): boolean", + "insertText": "empty" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(): org.elasticsearch.painless.lookup.def", + "insertText": "peek" + }, + { + "label": "pop", + "kind": "method", + "documentation": "pop(): org.elasticsearch.painless.lookup.def", + "insertText": "pop" + }, + { + "label": "push", + "kind": "method", + "documentation": "push(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "push" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "search", + "kind": "method", + "documentation": "search(org.elasticsearch.painless.lookup.def a): int", + "insertText": "search" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Stack", + "kind": "constructor", + "documentation": "Constructor: Stack", + "insertText": "Stack" + } + }, + { + "label": "StringJoiner", + "kind": "class", + "documentation": "Class: StringJoiner", + "insertText": "StringJoiner", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "add" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "length", + "kind": "method", + "documentation": "length(): int", + "insertText": "length" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(java.util.StringJoiner a): java.util.StringJoiner", + "insertText": "merge" + }, + { + "label": "setEmptyValue", + "kind": "method", + "documentation": "setEmptyValue(java.lang.CharSequence a): java.util.StringJoiner", + "insertText": "setEmptyValue" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringJoiner", + "kind": "constructor", + "documentation": "Constructor: StringJoiner", + "insertText": "StringJoiner" + } + }, + { + "label": "StringTokenizer", + "kind": "class", + "documentation": "Class: StringTokenizer", + "insertText": "StringTokenizer", + "properties": [ + { + "label": "countTokens", + "kind": "method", + "documentation": "countTokens(): int", + "insertText": "countTokens" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hasMoreElements", + "kind": "method", + "documentation": "hasMoreElements(): boolean", + "insertText": "hasMoreElements" + }, + { + "label": "hasMoreTokens", + "kind": "method", + "documentation": "hasMoreTokens(): boolean", + "insertText": "hasMoreTokens" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "nextElement", + "kind": "method", + "documentation": "nextElement(): org.elasticsearch.painless.lookup.def", + "insertText": "nextElement" + }, + { + "label": "nextToken", + "kind": "method", + "documentation": "nextToken(java.lang.String a): java.lang.String", + "insertText": "nextToken" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "StringTokenizer", + "kind": "constructor", + "documentation": "Constructor: StringTokenizer", + "insertText": "StringTokenizer" + } + }, + { + "label": "TimeZone", + "kind": "class", + "documentation": "Class: TimeZone", + "insertText": "TimeZone", + "properties": [ + { + "label": "LONG", + "kind": "property", + "documentation": "LONG: int", + "insertText": "LONG" + }, + { + "label": "SHORT", + "kind": "property", + "documentation": "SHORT: int", + "insertText": "SHORT" + }, + { + "label": "getAvailableIDs", + "kind": "method", + "documentation": "getAvailableIDs(int a): [Ljava.lang.String;", + "insertText": "getAvailableIDs" + }, + { + "label": "getDefault", + "kind": "method", + "documentation": "getDefault(): java.util.TimeZone", + "insertText": "getDefault" + }, + { + "label": "getTimeZone", + "kind": "method", + "documentation": "getTimeZone(java.lang.String a): java.util.TimeZone", + "insertText": "getTimeZone" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDSTSavings", + "kind": "method", + "documentation": "getDSTSavings(): int", + "insertText": "getDSTSavings" + }, + { + "label": "getDisplayName", + "kind": "method", + "documentation": "getDisplayName(boolean a, int b, java.util.Locale c | boolean a, int b | java.util.Locale a): java.lang.String", + "insertText": "getDisplayName" + }, + { + "label": "getID", + "kind": "method", + "documentation": "getID(): java.lang.String", + "insertText": "getID" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(int a, int b, int c, int d, int e, int f | long a): int", + "insertText": "getOffset" + }, + { + "label": "getRawOffset", + "kind": "method", + "documentation": "getRawOffset(): int", + "insertText": "getRawOffset" + }, + { + "label": "hasSameRules", + "kind": "method", + "documentation": "hasSameRules(java.util.TimeZone a): boolean", + "insertText": "hasSameRules" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "inDaylightTime", + "kind": "method", + "documentation": "inDaylightTime(java.util.Date a): boolean", + "insertText": "inDaylightTime" + }, + { + "label": "observesDaylightTime", + "kind": "method", + "documentation": "observesDaylightTime(): boolean", + "insertText": "observesDaylightTime" + }, + { + "label": "setRawOffset", + "kind": "method", + "documentation": "setRawOffset(int a): void", + "insertText": "setRawOffset" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "toZoneId", + "kind": "method", + "documentation": "toZoneId(): java.time.ZoneId", + "insertText": "toZoneId" + }, + { + "label": "useDaylightTime", + "kind": "method", + "documentation": "useDaylightTime(): boolean", + "insertText": "useDaylightTime" + } + ] + }, + { + "label": "TooManyListenersException", + "kind": "class", + "documentation": "Class: TooManyListenersException", + "insertText": "TooManyListenersException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TooManyListenersException", + "kind": "constructor", + "documentation": "Constructor: TooManyListenersException", + "insertText": "TooManyListenersException" + } + }, + { + "label": "TreeMap", + "kind": "class", + "documentation": "Class: TreeMap", + "insertText": "TreeMap", + "properties": [ + { + "label": "ceilingEntry", + "kind": "method", + "documentation": "ceilingEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "ceilingEntry" + }, + { + "label": "ceilingKey", + "kind": "method", + "documentation": "ceilingKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceilingKey" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "compute", + "kind": "method", + "documentation": "compute(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "compute" + }, + { + "label": "computeIfAbsent", + "kind": "method", + "documentation": "computeIfAbsent(org.elasticsearch.painless.lookup.def a, java.util.function.Function b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfAbsent" + }, + { + "label": "computeIfPresent", + "kind": "method", + "documentation": "computeIfPresent(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b): org.elasticsearch.painless.lookup.def", + "insertText": "computeIfPresent" + }, + { + "label": "containsKey", + "kind": "method", + "documentation": "containsKey(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsKey" + }, + { + "label": "containsValue", + "kind": "method", + "documentation": "containsValue(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "containsValue" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(java.util.function.BiPredicate a): int", + "insertText": "count" + }, + { + "label": "descendingKeySet", + "kind": "method", + "documentation": "descendingKeySet(): java.util.NavigableSet", + "insertText": "descendingKeySet" + }, + { + "label": "descendingMap", + "kind": "method", + "documentation": "descendingMap(): java.util.NavigableMap", + "insertText": "descendingMap" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.BiConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "entrySet", + "kind": "method", + "documentation": "entrySet(): java.util.Set", + "insertText": "entrySet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.BiPredicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.BiPredicate a): java.util.Map$Entry", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.BiPredicate a): java.util.Map", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b | java.util.function.BiFunction a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.BiFunction a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstEntry", + "kind": "method", + "documentation": "firstEntry(): java.util.Map$Entry", + "insertText": "firstEntry" + }, + { + "label": "firstKey", + "kind": "method", + "documentation": "firstKey(): org.elasticsearch.painless.lookup.def", + "insertText": "firstKey" + }, + { + "label": "floorEntry", + "kind": "method", + "documentation": "floorEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "floorEntry" + }, + { + "label": "floorKey", + "kind": "method", + "documentation": "floorKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floorKey" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.BiConsumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getOrDefault", + "kind": "method", + "documentation": "getOrDefault(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "getOrDefault" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.BiFunction a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headMap", + "kind": "method", + "documentation": "headMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "headMap" + }, + { + "label": "higherEntry", + "kind": "method", + "documentation": "higherEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "higherEntry" + }, + { + "label": "higherKey", + "kind": "method", + "documentation": "higherKey(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higherKey" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "keySet", + "kind": "method", + "documentation": "keySet(): java.util.Set", + "insertText": "keySet" + }, + { + "label": "lastEntry", + "kind": "method", + "documentation": "lastEntry(): java.util.Map$Entry", + "insertText": "lastEntry" + }, + { + "label": "lastKey", + "kind": "method", + "documentation": "lastKey(): org.elasticsearch.painless.lookup.def", + "insertText": "lastKey" + }, + { + "label": "lowerEntry", + "kind": "method", + "documentation": "lowerEntry(org.elasticsearch.painless.lookup.def a): java.util.Map$Entry", + "insertText": "lowerEntry" + }, + { + "label": "merge", + "kind": "method", + "documentation": "merge(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, java.util.function.BiFunction c): org.elasticsearch.painless.lookup.def", + "insertText": "merge" + }, + { + "label": "navigableKeySet", + "kind": "method", + "documentation": "navigableKeySet(): java.util.NavigableSet", + "insertText": "navigableKeySet" + }, + { + "label": "pollFirstEntry", + "kind": "method", + "documentation": "pollFirstEntry(): java.util.Map$Entry", + "insertText": "pollFirstEntry" + }, + { + "label": "pollLastEntry", + "kind": "method", + "documentation": "pollLastEntry(): java.util.Map$Entry", + "insertText": "pollLastEntry" + }, + { + "label": "put", + "kind": "method", + "documentation": "put(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "put" + }, + { + "label": "putAll", + "kind": "method", + "documentation": "putAll(java.util.Map a): void", + "insertText": "putAll" + }, + { + "label": "putIfAbsent", + "kind": "method", + "documentation": "putIfAbsent(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "putIfAbsent" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "replace", + "kind": "method", + "documentation": "replace(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b, org.elasticsearch.painless.lookup.def c | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean | org.elasticsearch.painless.lookup.def", + "insertText": "replace" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.BiFunction a): void", + "insertText": "replaceAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "subMap", + "kind": "method", + "documentation": "subMap(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableMap | java.util.SortedMap", + "insertText": "subMap" + }, + { + "label": "tailMap", + "kind": "method", + "documentation": "tailMap(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableMap | java.util.SortedMap", + "insertText": "tailMap" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): java.util.Collection", + "insertText": "values" + } + ], + "constructorDefinition": { + "label": "TreeMap", + "kind": "constructor", + "documentation": "Constructor: TreeMap", + "insertText": "TreeMap" + } + }, + { + "label": "TreeSet", + "kind": "class", + "documentation": "Class: TreeSet", + "insertText": "TreeSet", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "ceiling", + "kind": "method", + "documentation": "ceiling(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "ceiling" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "comparator", + "kind": "method", + "documentation": "comparator(): java.util.Comparator", + "insertText": "comparator" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "descendingIterator", + "kind": "method", + "documentation": "descendingIterator(): java.util.Iterator", + "insertText": "descendingIterator" + }, + { + "label": "descendingSet", + "kind": "method", + "documentation": "descendingSet(): java.util.NavigableSet", + "insertText": "descendingSet" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "first", + "kind": "method", + "documentation": "first(): org.elasticsearch.painless.lookup.def", + "insertText": "first" + }, + { + "label": "floor", + "kind": "method", + "documentation": "floor(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "floor" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "headSet", + "kind": "method", + "documentation": "headSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "headSet" + }, + { + "label": "higher", + "kind": "method", + "documentation": "higher(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "higher" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "last", + "kind": "method", + "documentation": "last(): org.elasticsearch.painless.lookup.def", + "insertText": "last" + }, + { + "label": "lower", + "kind": "method", + "documentation": "lower(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "lower" + }, + { + "label": "pollFirst", + "kind": "method", + "documentation": "pollFirst(): org.elasticsearch.painless.lookup.def", + "insertText": "pollFirst" + }, + { + "label": "pollLast", + "kind": "method", + "documentation": "pollLast(): org.elasticsearch.painless.lookup.def", + "insertText": "pollLast" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subSet", + "kind": "method", + "documentation": "subSet(org.elasticsearch.painless.lookup.def a, boolean b, org.elasticsearch.painless.lookup.def c, boolean d | org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): java.util.NavigableSet | java.util.SortedSet", + "insertText": "subSet" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "tailSet", + "kind": "method", + "documentation": "tailSet(org.elasticsearch.painless.lookup.def a, boolean b | org.elasticsearch.painless.lookup.def a): java.util.NavigableSet | java.util.SortedSet", + "insertText": "tailSet" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "TreeSet", + "kind": "constructor", + "documentation": "Constructor: TreeSet", + "insertText": "TreeSet" + } + }, + { + "label": "UUID", + "kind": "class", + "documentation": "Class: UUID", + "insertText": "UUID", + "properties": [ + { + "label": "fromString", + "kind": "method", + "documentation": "fromString(java.lang.String a): java.util.UUID", + "insertText": "fromString" + }, + { + "label": "nameUUIDFromBytes", + "kind": "method", + "documentation": "nameUUIDFromBytes([B a): java.util.UUID", + "insertText": "nameUUIDFromBytes" + }, + { + "label": "randomUUID", + "kind": "method", + "documentation": "randomUUID(): java.util.UUID", + "insertText": "randomUUID" + }, + { + "label": "clockSequence", + "kind": "method", + "documentation": "clockSequence(): int", + "insertText": "clockSequence" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.util.UUID a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLeastSignificantBits", + "kind": "method", + "documentation": "getLeastSignificantBits(): long", + "insertText": "getLeastSignificantBits" + }, + { + "label": "getMostSignificantBits", + "kind": "method", + "documentation": "getMostSignificantBits(): long", + "insertText": "getMostSignificantBits" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "node", + "kind": "method", + "documentation": "node(): long", + "insertText": "node" + }, + { + "label": "timestamp", + "kind": "method", + "documentation": "timestamp(): long", + "insertText": "timestamp" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "variant", + "kind": "method", + "documentation": "variant(): int", + "insertText": "variant" + }, + { + "label": "version", + "kind": "method", + "documentation": "version(): int", + "insertText": "version" + } + ], + "constructorDefinition": { + "label": "UUID", + "kind": "constructor", + "documentation": "Constructor: UUID", + "insertText": "UUID" + } + }, + { + "label": "UnknownFormatConversionException", + "kind": "class", + "documentation": "Class: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getConversion", + "kind": "method", + "documentation": "getConversion(): java.lang.String", + "insertText": "getConversion" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatConversionException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatConversionException", + "insertText": "UnknownFormatConversionException" + } + }, + { + "label": "UnknownFormatFlagsException", + "kind": "class", + "documentation": "Class: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFlags", + "kind": "method", + "documentation": "getFlags(): java.lang.String", + "insertText": "getFlags" + }, + { + "label": "getLocalizedMessage", + "kind": "method", + "documentation": "getLocalizedMessage(): java.lang.String", + "insertText": "getLocalizedMessage" + }, + { + "label": "getMessage", + "kind": "method", + "documentation": "getMessage(): java.lang.String", + "insertText": "getMessage" + }, + { + "label": "getStackTrace", + "kind": "method", + "documentation": "getStackTrace(): [Ljava.lang.StackTraceElement;", + "insertText": "getStackTrace" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "UnknownFormatFlagsException", + "kind": "constructor", + "documentation": "Constructor: UnknownFormatFlagsException", + "insertText": "UnknownFormatFlagsException" + } + }, + { + "label": "Vector", + "kind": "class", + "documentation": "Class: Vector", + "insertText": "Vector", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "addElement", + "kind": "method", + "documentation": "addElement(org.elasticsearch.painless.lookup.def a): void", + "insertText": "addElement" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "clone", + "kind": "method", + "documentation": "clone(): org.elasticsearch.painless.lookup.def", + "insertText": "clone" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "copyInto", + "kind": "method", + "documentation": "copyInto([Ljava.lang.Object; a): void", + "insertText": "copyInto" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "elementAt", + "kind": "method", + "documentation": "elementAt(int a): org.elasticsearch.painless.lookup.def", + "insertText": "elementAt" + }, + { + "label": "elements", + "kind": "method", + "documentation": "elements(): java.util.Enumeration", + "insertText": "elements" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "firstElement", + "kind": "method", + "documentation": "firstElement(): org.elasticsearch.painless.lookup.def", + "insertText": "firstElement" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "insertElementAt", + "kind": "method", + "documentation": "insertElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "insertElementAt" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastElement", + "kind": "method", + "documentation": "lastElement(): org.elasticsearch.painless.lookup.def", + "insertText": "lastElement" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a, int b | org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeAllElements", + "kind": "method", + "documentation": "removeAllElements(): void", + "insertText": "removeAllElements" + }, + { + "label": "removeElement", + "kind": "method", + "documentation": "removeElement(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "removeElement" + }, + { + "label": "removeElementAt", + "kind": "method", + "documentation": "removeElementAt(int a): void", + "insertText": "removeElementAt" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "setElementAt", + "kind": "method", + "documentation": "setElementAt(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "setElementAt" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ], + "constructorDefinition": { + "label": "Vector", + "kind": "constructor", + "documentation": "Constructor: Vector", + "insertText": "Vector" + } + }, + { + "label": "BiConsumer", + "kind": "class", + "documentation": "Class: BiConsumer", + "insertText": "BiConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.BiConsumer a): java.util.function.BiConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiFunction", + "kind": "class", + "documentation": "Class: BiFunction", + "insertText": "BiFunction", + "properties": [ + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BiPredicate", + "kind": "class", + "documentation": "Class: BiPredicate", + "insertText": "BiPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.BiPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.BiPredicate a): java.util.function.BiPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BinaryOperator", + "kind": "class", + "documentation": "Class: BinaryOperator", + "insertText": "BinaryOperator", + "properties": [ + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.function.BinaryOperator", + "insertText": "minBy" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.BiFunction", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BooleanSupplier", + "kind": "class", + "documentation": "Class: BooleanSupplier", + "insertText": "BooleanSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsBoolean", + "kind": "method", + "documentation": "getAsBoolean(): boolean", + "insertText": "getAsBoolean" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Consumer", + "kind": "class", + "documentation": "Class: Consumer", + "insertText": "Consumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleBinaryOperator", + "kind": "class", + "documentation": "Class: DoubleBinaryOperator", + "insertText": "DoubleBinaryOperator", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a, double b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleConsumer", + "kind": "class", + "documentation": "Class: DoubleConsumer", + "insertText": "DoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleFunction", + "kind": "class", + "documentation": "Class: DoubleFunction", + "insertText": "DoubleFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(double a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoublePredicate", + "kind": "class", + "documentation": "Class: DoublePredicate", + "insertText": "DoublePredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.DoublePredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.DoublePredicate a): java.util.function.DoublePredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(double a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleSupplier", + "kind": "class", + "documentation": "Class: DoubleSupplier", + "insertText": "DoubleSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsDouble", + "kind": "method", + "documentation": "getAsDouble(): double", + "insertText": "getAsDouble" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToIntFunction", + "kind": "class", + "documentation": "Class: DoubleToIntFunction", + "insertText": "DoubleToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(double a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleToLongFunction", + "kind": "class", + "documentation": "Class: DoubleToLongFunction", + "insertText": "DoubleToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(double a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleUnaryOperator", + "kind": "class", + "documentation": "Class: DoubleUnaryOperator", + "insertText": "DoubleUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.DoubleUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(double a): double", + "insertText": "applyAsDouble" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.DoubleUnaryOperator a): java.util.function.DoubleUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Function", + "kind": "class", + "documentation": "Class: Function", + "insertText": "Function", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.Function", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntBinaryOperator", + "kind": "class", + "documentation": "Class: IntBinaryOperator", + "insertText": "IntBinaryOperator", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a, int b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntConsumer", + "kind": "class", + "documentation": "Class: IntConsumer", + "insertText": "IntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntFunction", + "kind": "class", + "documentation": "Class: IntFunction", + "insertText": "IntFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(int a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntPredicate", + "kind": "class", + "documentation": "Class: IntPredicate", + "insertText": "IntPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.IntPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.IntPredicate a): java.util.function.IntPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(int a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntSupplier", + "kind": "class", + "documentation": "Class: IntSupplier", + "insertText": "IntSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsInt", + "kind": "method", + "documentation": "getAsInt(): int", + "insertText": "getAsInt" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToDoubleFunction", + "kind": "class", + "documentation": "Class: IntToDoubleFunction", + "insertText": "IntToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(int a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntToLongFunction", + "kind": "class", + "documentation": "Class: IntToLongFunction", + "insertText": "IntToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(int a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntUnaryOperator", + "kind": "class", + "documentation": "Class: IntUnaryOperator", + "insertText": "IntUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.IntUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(int a): int", + "insertText": "applyAsInt" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.IntUnaryOperator a): java.util.function.IntUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongBinaryOperator", + "kind": "class", + "documentation": "Class: LongBinaryOperator", + "insertText": "LongBinaryOperator", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a, long b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongConsumer", + "kind": "class", + "documentation": "Class: LongConsumer", + "insertText": "LongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongFunction", + "kind": "class", + "documentation": "Class: LongFunction", + "insertText": "LongFunction", + "properties": [ + { + "label": "apply", + "kind": "method", + "documentation": "apply(long a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongPredicate", + "kind": "class", + "documentation": "Class: LongPredicate", + "insertText": "LongPredicate", + "properties": [ + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.LongPredicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.LongPredicate a): java.util.function.LongPredicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(long a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongSupplier", + "kind": "class", + "documentation": "Class: LongSupplier", + "insertText": "LongSupplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getAsLong", + "kind": "method", + "documentation": "getAsLong(): long", + "insertText": "getAsLong" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToDoubleFunction", + "kind": "class", + "documentation": "Class: LongToDoubleFunction", + "insertText": "LongToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(long a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongToIntFunction", + "kind": "class", + "documentation": "Class: LongToIntFunction", + "insertText": "LongToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(long a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongUnaryOperator", + "kind": "class", + "documentation": "Class: LongUnaryOperator", + "insertText": "LongUnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.LongUnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "andThen" + }, + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(long a): long", + "insertText": "applyAsLong" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.LongUnaryOperator a): java.util.function.LongUnaryOperator", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjDoubleConsumer", + "kind": "class", + "documentation": "Class: ObjDoubleConsumer", + "insertText": "ObjDoubleConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, double b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjIntConsumer", + "kind": "class", + "documentation": "Class: ObjIntConsumer", + "insertText": "ObjIntConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, int b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ObjLongConsumer", + "kind": "class", + "documentation": "Class: ObjLongConsumer", + "insertText": "ObjLongConsumer", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a, long b): void", + "insertText": "accept" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Predicate", + "kind": "class", + "documentation": "Class: Predicate", + "insertText": "Predicate", + "properties": [ + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(org.elasticsearch.painless.lookup.def a): java.util.function.Predicate", + "insertText": "isEqual" + }, + { + "label": "and", + "kind": "method", + "documentation": "and(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "and" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "negate", + "kind": "method", + "documentation": "negate(): java.util.function.Predicate", + "insertText": "negate" + }, + { + "label": "or", + "kind": "method", + "documentation": "or(java.util.function.Predicate a): java.util.function.Predicate", + "insertText": "or" + }, + { + "label": "test", + "kind": "method", + "documentation": "test(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "test" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Supplier", + "kind": "class", + "documentation": "Class: Supplier", + "insertText": "Supplier", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(): org.elasticsearch.painless.lookup.def", + "insertText": "get" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleBiFunction", + "kind": "class", + "documentation": "Class: ToDoubleBiFunction", + "insertText": "ToDoubleBiFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToDoubleFunction", + "kind": "class", + "documentation": "Class: ToDoubleFunction", + "insertText": "ToDoubleFunction", + "properties": [ + { + "label": "applyAsDouble", + "kind": "method", + "documentation": "applyAsDouble(org.elasticsearch.painless.lookup.def a): double", + "insertText": "applyAsDouble" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntBiFunction", + "kind": "class", + "documentation": "Class: ToIntBiFunction", + "insertText": "ToIntBiFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToIntFunction", + "kind": "class", + "documentation": "Class: ToIntFunction", + "insertText": "ToIntFunction", + "properties": [ + { + "label": "applyAsInt", + "kind": "method", + "documentation": "applyAsInt(org.elasticsearch.painless.lookup.def a): int", + "insertText": "applyAsInt" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongBiFunction", + "kind": "class", + "documentation": "Class: ToLongBiFunction", + "insertText": "ToLongBiFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a, org.elasticsearch.painless.lookup.def b): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ToLongFunction", + "kind": "class", + "documentation": "Class: ToLongFunction", + "insertText": "ToLongFunction", + "properties": [ + { + "label": "applyAsLong", + "kind": "method", + "documentation": "applyAsLong(org.elasticsearch.painless.lookup.def a): long", + "insertText": "applyAsLong" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "UnaryOperator", + "kind": "class", + "documentation": "Class: UnaryOperator", + "insertText": "UnaryOperator", + "properties": [ + { + "label": "identity", + "kind": "method", + "documentation": "identity(): java.util.function.UnaryOperator", + "insertText": "identity" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Function a): java.util.function.Function", + "insertText": "andThen" + }, + { + "label": "apply", + "kind": "method", + "documentation": "apply(org.elasticsearch.painless.lookup.def a): org.elasticsearch.painless.lookup.def", + "insertText": "apply" + }, + { + "label": "compose", + "kind": "method", + "documentation": "compose(java.util.function.Function a): java.util.function.Function", + "insertText": "compose" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Matcher", + "kind": "class", + "documentation": "Class: Matcher", + "insertText": "Matcher", + "properties": [ + { + "label": "quoteReplacement", + "kind": "method", + "documentation": "quoteReplacement(java.lang.String a): java.lang.String", + "insertText": "quoteReplacement" + }, + { + "label": "end", + "kind": "method", + "documentation": "end(int a): int", + "insertText": "end" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(int a): boolean", + "insertText": "find" + }, + { + "label": "group", + "kind": "method", + "documentation": "group(int a): java.lang.String", + "insertText": "group" + }, + { + "label": "groupCount", + "kind": "method", + "documentation": "groupCount(): int", + "insertText": "groupCount" + }, + { + "label": "hasAnchoringBounds", + "kind": "method", + "documentation": "hasAnchoringBounds(): boolean", + "insertText": "hasAnchoringBounds" + }, + { + "label": "hasTransparentBounds", + "kind": "method", + "documentation": "hasTransparentBounds(): boolean", + "insertText": "hasTransparentBounds" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "hitEnd", + "kind": "method", + "documentation": "hitEnd(): boolean", + "insertText": "hitEnd" + }, + { + "label": "lookingAt", + "kind": "method", + "documentation": "lookingAt(): boolean", + "insertText": "lookingAt" + }, + { + "label": "matches", + "kind": "method", + "documentation": "matches(): boolean", + "insertText": "matches" + }, + { + "label": "namedGroup", + "kind": "method", + "documentation": "namedGroup(java.lang.String a): java.lang.String", + "insertText": "namedGroup" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.util.regex.Pattern", + "insertText": "pattern" + }, + { + "label": "region", + "kind": "method", + "documentation": "region(int a, int b): java.util.regex.Matcher", + "insertText": "region" + }, + { + "label": "regionEnd", + "kind": "method", + "documentation": "regionEnd(): int", + "insertText": "regionEnd" + }, + { + "label": "regionStart", + "kind": "method", + "documentation": "regionStart(): int", + "insertText": "regionStart" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.lang.String a): java.lang.String", + "insertText": "replaceAll" + }, + { + "label": "replaceFirst", + "kind": "method", + "documentation": "replaceFirst(java.lang.String a): java.lang.String", + "insertText": "replaceFirst" + }, + { + "label": "requireEnd", + "kind": "method", + "documentation": "requireEnd(): boolean", + "insertText": "requireEnd" + }, + { + "label": "reset", + "kind": "method", + "documentation": "reset(): java.util.regex.Matcher", + "insertText": "reset" + }, + { + "label": "start", + "kind": "method", + "documentation": "start(int a): int", + "insertText": "start" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "useAnchoringBounds", + "kind": "method", + "documentation": "useAnchoringBounds(boolean a): java.util.regex.Matcher", + "insertText": "useAnchoringBounds" + }, + { + "label": "usePattern", + "kind": "method", + "documentation": "usePattern(java.util.regex.Pattern a): java.util.regex.Matcher", + "insertText": "usePattern" + }, + { + "label": "useTransparentBounds", + "kind": "method", + "documentation": "useTransparentBounds(boolean a): java.util.regex.Matcher", + "insertText": "useTransparentBounds" + } + ] + }, + { + "label": "Pattern", + "kind": "class", + "documentation": "Class: Pattern", + "insertText": "Pattern", + "properties": [ + { + "label": "quote", + "kind": "method", + "documentation": "quote(java.lang.String a): java.lang.String", + "insertText": "quote" + }, + { + "label": "asPredicate", + "kind": "method", + "documentation": "asPredicate(): java.util.function.Predicate", + "insertText": "asPredicate" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "flags", + "kind": "method", + "documentation": "flags(): int", + "insertText": "flags" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "matcher", + "kind": "method", + "documentation": "matcher(java.lang.CharSequence a): java.util.regex.Matcher", + "insertText": "matcher" + }, + { + "label": "pattern", + "kind": "method", + "documentation": "pattern(): java.lang.String", + "insertText": "pattern" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.lang.CharSequence a, int b | java.lang.CharSequence a): [Ljava.lang.String;", + "insertText": "split" + }, + { + "label": "splitAsStream", + "kind": "method", + "documentation": "splitAsStream(java.lang.CharSequence a): java.util.stream.Stream", + "insertText": "splitAsStream" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "BaseStream", + "kind": "class", + "documentation": "Class: BaseStream", + "insertText": "BaseStream", + "properties": [ + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Collector", + "kind": "class", + "documentation": "Class: Collector", + "insertText": "Collector", + "properties": [ + { + "label": "of", + "kind": "method", + "documentation": "of(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, java.util.function.Function d, [Ljava.util.stream.Collector$Characteristics; e | java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BinaryOperator c, [Ljava.util.stream.Collector$Characteristics; d): java.util.stream.Collector", + "insertText": "of" + }, + { + "label": "accumulator", + "kind": "method", + "documentation": "accumulator(): java.util.function.BiConsumer", + "insertText": "accumulator" + }, + { + "label": "characteristics", + "kind": "method", + "documentation": "characteristics(): java.util.Set", + "insertText": "characteristics" + }, + { + "label": "combiner", + "kind": "method", + "documentation": "combiner(): java.util.function.BinaryOperator", + "insertText": "combiner" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "finisher", + "kind": "method", + "documentation": "finisher(): java.util.function.Function", + "insertText": "finisher" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "supplier", + "kind": "method", + "documentation": "supplier(): java.util.function.Supplier", + "insertText": "supplier" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collector.Characteristics", + "kind": "class", + "documentation": "Class: Collector.Characteristics", + "insertText": "Collector.Characteristics", + "properties": [ + { + "label": "CONCURRENT", + "kind": "property", + "documentation": "CONCURRENT: java.util.stream.Collector$Characteristics", + "insertText": "CONCURRENT" + }, + { + "label": "IDENTITY_FINISH", + "kind": "property", + "documentation": "IDENTITY_FINISH: java.util.stream.Collector$Characteristics", + "insertText": "IDENTITY_FINISH" + }, + { + "label": "UNORDERED", + "kind": "property", + "documentation": "UNORDERED: java.util.stream.Collector$Characteristics", + "insertText": "UNORDERED" + }, + { + "label": "valueOf", + "kind": "method", + "documentation": "valueOf(java.lang.String a): java.util.stream.Collector$Characteristics", + "insertText": "valueOf" + }, + { + "label": "values", + "kind": "method", + "documentation": "values(): [Ljava.util.stream.Collector$Characteristics;", + "insertText": "values" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.lang.Enum a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "name", + "kind": "method", + "documentation": "name(): java.lang.String", + "insertText": "name" + }, + { + "label": "ordinal", + "kind": "method", + "documentation": "ordinal(): int", + "insertText": "ordinal" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Collectors", + "kind": "class", + "documentation": "Class: Collectors", + "insertText": "Collectors", + "properties": [ + { + "label": "averagingDouble", + "kind": "method", + "documentation": "averagingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "averagingDouble" + }, + { + "label": "averagingInt", + "kind": "method", + "documentation": "averagingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "averagingInt" + }, + { + "label": "averagingLong", + "kind": "method", + "documentation": "averagingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "averagingLong" + }, + { + "label": "collectingAndThen", + "kind": "method", + "documentation": "collectingAndThen(java.util.stream.Collector a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "collectingAndThen" + }, + { + "label": "counting", + "kind": "method", + "documentation": "counting(): java.util.stream.Collector", + "insertText": "counting" + }, + { + "label": "groupingBy", + "kind": "method", + "documentation": "groupingBy(java.util.function.Function a, java.util.function.Supplier b, java.util.stream.Collector c | java.util.function.Function a, java.util.stream.Collector b | java.util.function.Function a): java.util.stream.Collector", + "insertText": "groupingBy" + }, + { + "label": "joining", + "kind": "method", + "documentation": "joining(java.lang.CharSequence a, java.lang.CharSequence b, java.lang.CharSequence c | java.lang.CharSequence a): java.util.stream.Collector", + "insertText": "joining" + }, + { + "label": "mapping", + "kind": "method", + "documentation": "mapping(java.util.function.Function a, java.util.stream.Collector b): java.util.stream.Collector", + "insertText": "mapping" + }, + { + "label": "maxBy", + "kind": "method", + "documentation": "maxBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "maxBy" + }, + { + "label": "minBy", + "kind": "method", + "documentation": "minBy(java.util.Comparator a): java.util.stream.Collector", + "insertText": "minBy" + }, + { + "label": "partitioningBy", + "kind": "method", + "documentation": "partitioningBy(java.util.function.Predicate a, java.util.stream.Collector b | java.util.function.Predicate a): java.util.stream.Collector", + "insertText": "partitioningBy" + }, + { + "label": "reducing", + "kind": "method", + "documentation": "reducing(org.elasticsearch.painless.lookup.def a, java.util.function.Function b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): java.util.stream.Collector", + "insertText": "reducing" + }, + { + "label": "summarizingDouble", + "kind": "method", + "documentation": "summarizingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summarizingDouble" + }, + { + "label": "summarizingInt", + "kind": "method", + "documentation": "summarizingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summarizingInt" + }, + { + "label": "summarizingLong", + "kind": "method", + "documentation": "summarizingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summarizingLong" + }, + { + "label": "summingDouble", + "kind": "method", + "documentation": "summingDouble(java.util.function.ToDoubleFunction a): java.util.stream.Collector", + "insertText": "summingDouble" + }, + { + "label": "summingInt", + "kind": "method", + "documentation": "summingInt(java.util.function.ToIntFunction a): java.util.stream.Collector", + "insertText": "summingInt" + }, + { + "label": "summingLong", + "kind": "method", + "documentation": "summingLong(java.util.function.ToLongFunction a): java.util.stream.Collector", + "insertText": "summingLong" + }, + { + "label": "toCollection", + "kind": "method", + "documentation": "toCollection(java.util.function.Supplier a): java.util.stream.Collector", + "insertText": "toCollection" + }, + { + "label": "toList", + "kind": "method", + "documentation": "toList(): java.util.stream.Collector", + "insertText": "toList" + }, + { + "label": "toMap", + "kind": "method", + "documentation": "toMap(java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c, java.util.function.Supplier d | java.util.function.Function a, java.util.function.Function b, java.util.function.BinaryOperator c | java.util.function.Function a, java.util.function.Function b): java.util.stream.Collector", + "insertText": "toMap" + }, + { + "label": "toSet", + "kind": "method", + "documentation": "toSet(): java.util.stream.Collector", + "insertText": "toSet" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "DoubleStream", + "kind": "class", + "documentation": "Class: DoubleStream", + "insertText": "DoubleStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.DoubleStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.DoubleStream a, java.util.stream.DoubleStream b): java.util.stream.DoubleStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.DoubleStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([D a): java.util.stream.DoubleStream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjDoubleConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.DoubleStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.DoublePredicate a): java.util.stream.DoubleStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalDouble", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalDouble", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.DoubleFunction a): java.util.stream.DoubleStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.DoubleConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.DoubleConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfDouble", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.DoubleStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.DoubleUnaryOperator a): java.util.stream.DoubleStream", + "insertText": "map" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.DoubleToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.DoubleToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.DoubleFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalDouble", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalDouble", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.DoublePredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.DoubleConsumer a): java.util.stream.DoubleStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(double a, java.util.function.DoubleBinaryOperator b | java.util.function.DoubleBinaryOperator a): double | java.util.OptionalDouble", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.DoubleStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.DoubleStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.DoubleStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfDouble", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): double", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.DoubleSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [D", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "DoubleStream.Builder", + "kind": "class", + "documentation": "Class: DoubleStream.Builder", + "insertText": "DoubleStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(double a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(double a): java.util.stream.DoubleStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.DoubleConsumer a): java.util.function.DoubleConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.DoubleStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntStream", + "kind": "class", + "documentation": "Class: IntStream", + "insertText": "IntStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.IntStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.IntStream a, java.util.stream.IntStream b): java.util.stream.IntStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.IntStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([I a): java.util.stream.IntStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(int a, int b): java.util.stream.IntStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(int a, int b): java.util.stream.IntStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.IntPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.IntPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "asLongStream", + "kind": "method", + "documentation": "asLongStream(): java.util.stream.LongStream", + "insertText": "asLongStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjIntConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.IntStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.IntPredicate a): java.util.stream.IntStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalInt", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalInt", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.IntFunction a): java.util.stream.IntStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.IntConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.IntConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfInt", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.IntStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.IntUnaryOperator a): java.util.stream.IntStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.IntToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.IntToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.IntFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalInt", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalInt", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.IntPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.IntConsumer a): java.util.stream.IntStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(int a, java.util.function.IntBinaryOperator b | java.util.function.IntBinaryOperator a): int | java.util.OptionalInt", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.IntStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.IntStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.IntStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfInt", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): int", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.IntSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [I", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "IntStream.Builder", + "kind": "class", + "documentation": "Class: IntStream.Builder", + "insertText": "IntStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(int a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(int a): java.util.stream.IntStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.IntConsumer a): java.util.function.IntConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.IntStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "LongStream", + "kind": "class", + "documentation": "Class: LongStream", + "insertText": "LongStream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.LongStream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.LongStream a, java.util.stream.LongStream b): java.util.stream.LongStream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.LongStream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([J a): java.util.stream.LongStream", + "insertText": "of" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(long a, long b): java.util.stream.LongStream", + "insertText": "range" + }, + { + "label": "rangeClosed", + "kind": "method", + "documentation": "rangeClosed(long a, long b): java.util.stream.LongStream", + "insertText": "rangeClosed" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.LongPredicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.LongPredicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "asDoubleStream", + "kind": "method", + "documentation": "asDoubleStream(): java.util.stream.DoubleStream", + "insertText": "asDoubleStream" + }, + { + "label": "average", + "kind": "method", + "documentation": "average(): java.util.OptionalDouble", + "insertText": "average" + }, + { + "label": "boxed", + "kind": "method", + "documentation": "boxed(): java.util.stream.Stream", + "insertText": "boxed" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.ObjLongConsumer b, java.util.function.BiConsumer c): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.LongStream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.LongPredicate a): java.util.stream.LongStream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.OptionalLong", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.OptionalLong", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.LongFunction a): java.util.stream.LongStream", + "insertText": "flatMap" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.LongConsumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.LongConsumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.PrimitiveIterator$OfLong", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.LongStream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.LongUnaryOperator a): java.util.stream.LongStream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.LongToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.LongToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToObj", + "kind": "method", + "documentation": "mapToObj(java.util.function.LongFunction a): java.util.stream.Stream", + "insertText": "mapToObj" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(): java.util.OptionalLong", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(): java.util.OptionalLong", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.LongPredicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.LongConsumer a): java.util.stream.LongStream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(long a, java.util.function.LongBinaryOperator b | java.util.function.LongBinaryOperator a): long | java.util.OptionalLong", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.LongStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.LongStream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(): java.util.stream.LongStream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator$OfLong", + "insertText": "spliterator" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(): long", + "insertText": "sum" + }, + { + "label": "summaryStatistics", + "kind": "method", + "documentation": "summaryStatistics(): java.util.LongSummaryStatistics", + "insertText": "summaryStatistics" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(): [J", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "LongStream.Builder", + "kind": "class", + "documentation": "Class: LongStream.Builder", + "insertText": "LongStream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(long a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(long a): java.util.stream.LongStream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.LongConsumer a): java.util.function.LongConsumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.LongStream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Stream", + "kind": "class", + "documentation": "Class: Stream", + "insertText": "Stream", + "properties": [ + { + "label": "builder", + "kind": "method", + "documentation": "builder(): java.util.stream.Stream$Builder", + "insertText": "builder" + }, + { + "label": "concat", + "kind": "method", + "documentation": "concat(java.util.stream.Stream a, java.util.stream.Stream b): java.util.stream.Stream", + "insertText": "concat" + }, + { + "label": "empty", + "kind": "method", + "documentation": "empty(): java.util.stream.Stream", + "insertText": "empty" + }, + { + "label": "of", + "kind": "method", + "documentation": "of([Lorg.elasticsearch.painless.lookup.def; a): java.util.stream.Stream", + "insertText": "of" + }, + { + "label": "allMatch", + "kind": "method", + "documentation": "allMatch(java.util.function.Predicate a): boolean", + "insertText": "allMatch" + }, + { + "label": "anyMatch", + "kind": "method", + "documentation": "anyMatch(java.util.function.Predicate a): boolean", + "insertText": "anyMatch" + }, + { + "label": "close", + "kind": "method", + "documentation": "close(): void", + "insertText": "close" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.function.Supplier a, java.util.function.BiConsumer b, java.util.function.BiConsumer c | java.util.stream.Collector a): org.elasticsearch.painless.lookup.def", + "insertText": "collect" + }, + { + "label": "count", + "kind": "method", + "documentation": "count(): long", + "insertText": "count" + }, + { + "label": "distinct", + "kind": "method", + "documentation": "distinct(): java.util.stream.Stream", + "insertText": "distinct" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "filter", + "kind": "method", + "documentation": "filter(java.util.function.Predicate a): java.util.stream.Stream", + "insertText": "filter" + }, + { + "label": "findAny", + "kind": "method", + "documentation": "findAny(): java.util.Optional", + "insertText": "findAny" + }, + { + "label": "findFirst", + "kind": "method", + "documentation": "findFirst(): java.util.Optional", + "insertText": "findFirst" + }, + { + "label": "flatMap", + "kind": "method", + "documentation": "flatMap(java.util.function.Function a): java.util.stream.Stream", + "insertText": "flatMap" + }, + { + "label": "flatMapToDouble", + "kind": "method", + "documentation": "flatMapToDouble(java.util.function.Function a): java.util.stream.DoubleStream", + "insertText": "flatMapToDouble" + }, + { + "label": "flatMapToInt", + "kind": "method", + "documentation": "flatMapToInt(java.util.function.Function a): java.util.stream.IntStream", + "insertText": "flatMapToInt" + }, + { + "label": "flatMapToLong", + "kind": "method", + "documentation": "flatMapToLong(java.util.function.Function a): java.util.stream.LongStream", + "insertText": "flatMapToLong" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "forEachOrdered", + "kind": "method", + "documentation": "forEachOrdered(java.util.function.Consumer a): void", + "insertText": "forEachOrdered" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isParallel", + "kind": "method", + "documentation": "isParallel(): boolean", + "insertText": "isParallel" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "limit", + "kind": "method", + "documentation": "limit(long a): java.util.stream.Stream", + "insertText": "limit" + }, + { + "label": "map", + "kind": "method", + "documentation": "map(java.util.function.Function a): java.util.stream.Stream", + "insertText": "map" + }, + { + "label": "mapToDouble", + "kind": "method", + "documentation": "mapToDouble(java.util.function.ToDoubleFunction a): java.util.stream.DoubleStream", + "insertText": "mapToDouble" + }, + { + "label": "mapToInt", + "kind": "method", + "documentation": "mapToInt(java.util.function.ToIntFunction a): java.util.stream.IntStream", + "insertText": "mapToInt" + }, + { + "label": "mapToLong", + "kind": "method", + "documentation": "mapToLong(java.util.function.ToLongFunction a): java.util.stream.LongStream", + "insertText": "mapToLong" + }, + { + "label": "max", + "kind": "method", + "documentation": "max(java.util.Comparator a): java.util.Optional", + "insertText": "max" + }, + { + "label": "min", + "kind": "method", + "documentation": "min(java.util.Comparator a): java.util.Optional", + "insertText": "min" + }, + { + "label": "noneMatch", + "kind": "method", + "documentation": "noneMatch(java.util.function.Predicate a): boolean", + "insertText": "noneMatch" + }, + { + "label": "peek", + "kind": "method", + "documentation": "peek(java.util.function.Consumer a): java.util.stream.Stream", + "insertText": "peek" + }, + { + "label": "reduce", + "kind": "method", + "documentation": "reduce(org.elasticsearch.painless.lookup.def a, java.util.function.BiFunction b, java.util.function.BinaryOperator c | org.elasticsearch.painless.lookup.def a, java.util.function.BinaryOperator b | java.util.function.BinaryOperator a): org.elasticsearch.painless.lookup.def | java.util.Optional", + "insertText": "reduce" + }, + { + "label": "sequential", + "kind": "method", + "documentation": "sequential(): java.util.stream.BaseStream", + "insertText": "sequential" + }, + { + "label": "skip", + "kind": "method", + "documentation": "skip(long a): java.util.stream.Stream", + "insertText": "skip" + }, + { + "label": "sorted", + "kind": "method", + "documentation": "sorted(java.util.Comparator a): java.util.stream.Stream", + "insertText": "sorted" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray(java.util.function.IntFunction a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "unordered", + "kind": "method", + "documentation": "unordered(): java.util.stream.BaseStream", + "insertText": "unordered" + } + ] + }, + { + "label": "Stream.Builder", + "kind": "class", + "documentation": "Class: Stream.Builder", + "insertText": "Stream.Builder", + "properties": [ + { + "label": "accept", + "kind": "method", + "documentation": "accept(org.elasticsearch.painless.lookup.def a): void", + "insertText": "accept" + }, + { + "label": "add", + "kind": "method", + "documentation": "add(org.elasticsearch.painless.lookup.def a): java.util.stream.Stream$Builder", + "insertText": "add" + }, + { + "label": "andThen", + "kind": "method", + "documentation": "andThen(java.util.function.Consumer a): java.util.function.Consumer", + "insertText": "andThen" + }, + { + "label": "build", + "kind": "method", + "documentation": "build(): java.util.stream.Stream", + "insertText": "build" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "long", + "kind": "type", + "documentation": "Primitive: long", + "insertText": "long" + }, + { + "label": "BytesRef", + "kind": "class", + "documentation": "Class: BytesRef", + "insertText": "BytesRef", + "properties": [ + { + "label": "bytesEquals", + "kind": "method", + "documentation": "bytesEquals(org.apache.lucene.util.BytesRef a): boolean", + "insertText": "bytesEquals" + }, + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(org.elasticsearch.painless.lookup.def a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + }, + { + "label": "utf8ToString", + "kind": "method", + "documentation": "utf8ToString(): java.lang.String", + "insertText": "utf8ToString" + }, + { + "label": "bytes", + "kind": "property", + "documentation": "bytes: [B", + "insertText": "bytes" + }, + { + "label": "length", + "kind": "property", + "documentation": "length: int", + "insertText": "length" + }, + { + "label": "offset", + "kind": "property", + "documentation": "offset: int", + "insertText": "offset" + } + ] + }, + { + "label": "GeoPoint", + "kind": "class", + "documentation": "Class: GeoPoint", + "insertText": "GeoPoint", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Booleans", + "kind": "class", + "documentation": "Class: ScriptDocValues.Booleans", + "insertText": "ScriptDocValues.Booleans", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Boolean", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): boolean", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.BytesRefs", + "kind": "class", + "documentation": "Class: ScriptDocValues.BytesRefs", + "insertText": "ScriptDocValues.BytesRefs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.apache.lucene.util.BytesRef", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.apache.lucene.util.BytesRef", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Dates", + "kind": "class", + "documentation": "Class: ScriptDocValues.Dates", + "insertText": "ScriptDocValues.Dates", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.script.JodaCompatibleZonedDateTime", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Doubles", + "kind": "class", + "documentation": "Class: ScriptDocValues.Doubles", + "insertText": "ScriptDocValues.Doubles", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Double", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): double", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.GeoPoints", + "kind": "class", + "documentation": "Class: ScriptDocValues.GeoPoints", + "insertText": "ScriptDocValues.GeoPoints", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "arcDistance", + "kind": "method", + "documentation": "arcDistance(double a, double b): double", + "insertText": "arcDistance" + }, + { + "label": "arcDistanceWithDefault", + "kind": "method", + "documentation": "arcDistanceWithDefault(double a, double b, double c): double", + "insertText": "arcDistanceWithDefault" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "geohashDistance", + "kind": "method", + "documentation": "geohashDistance(java.lang.String a): double", + "insertText": "geohashDistance" + }, + { + "label": "geohashDistanceWithDefault", + "kind": "method", + "documentation": "geohashDistanceWithDefault(java.lang.String a, double b): double", + "insertText": "geohashDistanceWithDefault" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): org.elasticsearch.common.geo.GeoPoint", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLat", + "kind": "method", + "documentation": "getLat(): double", + "insertText": "getLat" + }, + { + "label": "getLats", + "kind": "method", + "documentation": "getLats(): [D", + "insertText": "getLats" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getLon", + "kind": "method", + "documentation": "getLon(): double", + "insertText": "getLon" + }, + { + "label": "getLons", + "kind": "method", + "documentation": "getLons(): [D", + "insertText": "getLons" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.common.geo.GeoPoint", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "planeDistance", + "kind": "method", + "documentation": "planeDistance(double a, double b): double", + "insertText": "planeDistance" + }, + { + "label": "planeDistanceWithDefault", + "kind": "method", + "documentation": "planeDistanceWithDefault(double a, double b, double c): double", + "insertText": "planeDistanceWithDefault" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Longs", + "kind": "class", + "documentation": "Class: ScriptDocValues.Longs", + "insertText": "ScriptDocValues.Longs", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.Long", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): long", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptDocValues.Strings", + "kind": "class", + "documentation": "Class: ScriptDocValues.Strings", + "insertText": "ScriptDocValues.Strings", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "kind": "class", + "documentation": "Class: IpFieldMapper.IpFieldType$IpScriptDocValues", + "insertText": "IpFieldMapper.IpFieldType$IpScriptDocValues", + "properties": [ + { + "label": "add", + "kind": "method", + "documentation": "add(int a, org.elasticsearch.painless.lookup.def b | org.elasticsearch.painless.lookup.def a): void | boolean", + "insertText": "add" + }, + { + "label": "addAll", + "kind": "method", + "documentation": "addAll(int a, java.util.Collection b | java.util.Collection a): boolean", + "insertText": "addAll" + }, + { + "label": "any", + "kind": "method", + "documentation": "any(java.util.function.Predicate a): boolean", + "insertText": "any" + }, + { + "label": "asCollection", + "kind": "method", + "documentation": "asCollection(): java.util.Collection", + "insertText": "asCollection" + }, + { + "label": "asList", + "kind": "method", + "documentation": "asList(): java.util.List", + "insertText": "asList" + }, + { + "label": "clear", + "kind": "method", + "documentation": "clear(): void", + "insertText": "clear" + }, + { + "label": "collect", + "kind": "method", + "documentation": "collect(java.util.Collection a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def | java.util.List", + "insertText": "collect" + }, + { + "label": "contains", + "kind": "method", + "documentation": "contains(org.elasticsearch.painless.lookup.def a): boolean", + "insertText": "contains" + }, + { + "label": "containsAll", + "kind": "method", + "documentation": "containsAll(java.util.Collection a): boolean", + "insertText": "containsAll" + }, + { + "label": "each", + "kind": "method", + "documentation": "each(java.util.function.Consumer a): org.elasticsearch.painless.lookup.def", + "insertText": "each" + }, + { + "label": "eachWithIndex", + "kind": "method", + "documentation": "eachWithIndex(java.util.function.ObjIntConsumer a): org.elasticsearch.painless.lookup.def", + "insertText": "eachWithIndex" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "every", + "kind": "method", + "documentation": "every(java.util.function.Predicate a): boolean", + "insertText": "every" + }, + { + "label": "find", + "kind": "method", + "documentation": "find(java.util.function.Predicate a): org.elasticsearch.painless.lookup.def", + "insertText": "find" + }, + { + "label": "findAll", + "kind": "method", + "documentation": "findAll(java.util.function.Predicate a): java.util.List", + "insertText": "findAll" + }, + { + "label": "findResult", + "kind": "method", + "documentation": "findResult(org.elasticsearch.painless.lookup.def a, java.util.function.Function b | java.util.function.Function a): org.elasticsearch.painless.lookup.def", + "insertText": "findResult" + }, + { + "label": "findResults", + "kind": "method", + "documentation": "findResults(java.util.function.Function a): java.util.List", + "insertText": "findResults" + }, + { + "label": "forEach", + "kind": "method", + "documentation": "forEach(java.util.function.Consumer a): void", + "insertText": "forEach" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(int a): java.lang.String", + "insertText": "get" + }, + { + "label": "getByPath", + "kind": "method", + "documentation": "getByPath(java.lang.String a, java.lang.Object b | java.lang.String a): java.lang.Object", + "insertText": "getByPath" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): java.lang.String", + "insertText": "getValue" + }, + { + "label": "groupBy", + "kind": "method", + "documentation": "groupBy(java.util.function.Function a): java.util.Map", + "insertText": "groupBy" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "indexOf", + "kind": "method", + "documentation": "indexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "indexOf" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "iterator", + "kind": "method", + "documentation": "iterator(): java.util.Iterator", + "insertText": "iterator" + }, + { + "label": "join", + "kind": "method", + "documentation": "join(java.lang.String a): java.lang.String", + "insertText": "join" + }, + { + "label": "lastIndexOf", + "kind": "method", + "documentation": "lastIndexOf(org.elasticsearch.painless.lookup.def a): int", + "insertText": "lastIndexOf" + }, + { + "label": "listIterator", + "kind": "method", + "documentation": "listIterator(int a): java.util.ListIterator", + "insertText": "listIterator" + }, + { + "label": "remove", + "kind": "method", + "documentation": "remove(int a): org.elasticsearch.painless.lookup.def", + "insertText": "remove" + }, + { + "label": "removeAll", + "kind": "method", + "documentation": "removeAll(java.util.Collection a): boolean", + "insertText": "removeAll" + }, + { + "label": "removeIf", + "kind": "method", + "documentation": "removeIf(java.util.function.Predicate a): boolean", + "insertText": "removeIf" + }, + { + "label": "replaceAll", + "kind": "method", + "documentation": "replaceAll(java.util.function.UnaryOperator a): void", + "insertText": "replaceAll" + }, + { + "label": "retainAll", + "kind": "method", + "documentation": "retainAll(java.util.Collection a): boolean", + "insertText": "retainAll" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(int a, org.elasticsearch.painless.lookup.def b): org.elasticsearch.painless.lookup.def", + "insertText": "set" + }, + { + "label": "size", + "kind": "method", + "documentation": "size(): int", + "insertText": "size" + }, + { + "label": "sort", + "kind": "method", + "documentation": "sort(java.util.Comparator a): void", + "insertText": "sort" + }, + { + "label": "split", + "kind": "method", + "documentation": "split(java.util.function.Predicate a): java.util.List", + "insertText": "split" + }, + { + "label": "spliterator", + "kind": "method", + "documentation": "spliterator(): java.util.Spliterator", + "insertText": "spliterator" + }, + { + "label": "stream", + "kind": "method", + "documentation": "stream(): java.util.stream.Stream", + "insertText": "stream" + }, + { + "label": "subList", + "kind": "method", + "documentation": "subList(int a, int b): java.util.List", + "insertText": "subList" + }, + { + "label": "sum", + "kind": "method", + "documentation": "sum(java.util.function.ToDoubleFunction a): double", + "insertText": "sum" + }, + { + "label": "toArray", + "kind": "method", + "documentation": "toArray([Lorg.elasticsearch.painless.lookup.def; a): [Lorg.elasticsearch.painless.lookup.def;", + "insertText": "toArray" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "IntervalFilterScript.Interval", + "kind": "class", + "documentation": "Class: IntervalFilterScript.Interval", + "insertText": "IntervalFilterScript.Interval", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getEnd", + "kind": "method", + "documentation": "getEnd(): int", + "insertText": "getEnd" + }, + { + "label": "getGaps", + "kind": "method", + "documentation": "getGaps(): int", + "insertText": "getGaps" + }, + { + "label": "getStart", + "kind": "method", + "documentation": "getStart(): int", + "insertText": "getStart" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Doc", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Doc", + "insertText": "ScriptedSimilarity.Doc", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getFreq", + "kind": "method", + "documentation": "getFreq(): float", + "insertText": "getFreq" + }, + { + "label": "getLength", + "kind": "method", + "documentation": "getLength(): int", + "insertText": "getLength" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Field", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Field", + "insertText": "ScriptedSimilarity.Field", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocCount", + "kind": "method", + "documentation": "getDocCount(): long", + "insertText": "getDocCount" + }, + { + "label": "getSumDocFreq", + "kind": "method", + "documentation": "getSumDocFreq(): long", + "insertText": "getSumDocFreq" + }, + { + "label": "getSumTotalTermFreq", + "kind": "method", + "documentation": "getSumTotalTermFreq(): long", + "insertText": "getSumTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Query", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Query", + "insertText": "ScriptedSimilarity.Query", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getBoost", + "kind": "method", + "documentation": "getBoost(): float", + "insertText": "getBoost" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "ScriptedSimilarity.Term", + "kind": "class", + "documentation": "Class: ScriptedSimilarity.Term", + "insertText": "ScriptedSimilarity.Term", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getDocFreq", + "kind": "method", + "documentation": "getDocFreq(): long", + "insertText": "getDocFreq" + }, + { + "label": "getTotalTermFreq", + "kind": "method", + "documentation": "getTotalTermFreq(): long", + "insertText": "getTotalTermFreq" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "Debug", + "kind": "class", + "documentation": "Class: Debug", + "insertText": "Debug", + "properties": [ + { + "label": "explain", + "kind": "method", + "documentation": "explain(java.lang.Object a): void", + "insertText": "explain" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "JodaCompatibleZonedDateTime", + "kind": "class", + "documentation": "Class: JodaCompatibleZonedDateTime", + "insertText": "JodaCompatibleZonedDateTime", + "properties": [ + { + "label": "compareTo", + "kind": "method", + "documentation": "compareTo(java.time.chrono.ChronoZonedDateTime a): int", + "insertText": "compareTo" + }, + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "format", + "kind": "method", + "documentation": "format(java.time.format.DateTimeFormatter a): java.lang.String", + "insertText": "format" + }, + { + "label": "get", + "kind": "method", + "documentation": "get(java.time.temporal.TemporalField a): int", + "insertText": "get" + }, + { + "label": "getCenturyOfEra", + "kind": "method", + "documentation": "getCenturyOfEra(): int", + "insertText": "getCenturyOfEra" + }, + { + "label": "getChronology", + "kind": "method", + "documentation": "getChronology(): java.time.chrono.Chronology", + "insertText": "getChronology" + }, + { + "label": "getDayOfMonth", + "kind": "method", + "documentation": "getDayOfMonth(): int", + "insertText": "getDayOfMonth" + }, + { + "label": "getDayOfWeek", + "kind": "method", + "documentation": "getDayOfWeek(): int", + "insertText": "getDayOfWeek" + }, + { + "label": "getDayOfWeekEnum", + "kind": "method", + "documentation": "getDayOfWeekEnum(): java.time.DayOfWeek", + "insertText": "getDayOfWeekEnum" + }, + { + "label": "getDayOfYear", + "kind": "method", + "documentation": "getDayOfYear(): int", + "insertText": "getDayOfYear" + }, + { + "label": "getEra", + "kind": "method", + "documentation": "getEra(): int", + "insertText": "getEra" + }, + { + "label": "getHour", + "kind": "method", + "documentation": "getHour(): int", + "insertText": "getHour" + }, + { + "label": "getHourOfDay", + "kind": "method", + "documentation": "getHourOfDay(): int", + "insertText": "getHourOfDay" + }, + { + "label": "getLong", + "kind": "method", + "documentation": "getLong(java.time.temporal.TemporalField a): long", + "insertText": "getLong" + }, + { + "label": "getMillis", + "kind": "method", + "documentation": "getMillis(): long", + "insertText": "getMillis" + }, + { + "label": "getMillisOfDay", + "kind": "method", + "documentation": "getMillisOfDay(): int", + "insertText": "getMillisOfDay" + }, + { + "label": "getMillisOfSecond", + "kind": "method", + "documentation": "getMillisOfSecond(): int", + "insertText": "getMillisOfSecond" + }, + { + "label": "getMinute", + "kind": "method", + "documentation": "getMinute(): int", + "insertText": "getMinute" + }, + { + "label": "getMinuteOfDay", + "kind": "method", + "documentation": "getMinuteOfDay(): int", + "insertText": "getMinuteOfDay" + }, + { + "label": "getMinuteOfHour", + "kind": "method", + "documentation": "getMinuteOfHour(): int", + "insertText": "getMinuteOfHour" + }, + { + "label": "getMonth", + "kind": "method", + "documentation": "getMonth(): java.time.Month", + "insertText": "getMonth" + }, + { + "label": "getMonthOfYear", + "kind": "method", + "documentation": "getMonthOfYear(): int", + "insertText": "getMonthOfYear" + }, + { + "label": "getMonthValue", + "kind": "method", + "documentation": "getMonthValue(): int", + "insertText": "getMonthValue" + }, + { + "label": "getNano", + "kind": "method", + "documentation": "getNano(): int", + "insertText": "getNano" + }, + { + "label": "getOffset", + "kind": "method", + "documentation": "getOffset(): java.time.ZoneOffset", + "insertText": "getOffset" + }, + { + "label": "getSecond", + "kind": "method", + "documentation": "getSecond(): int", + "insertText": "getSecond" + }, + { + "label": "getSecondOfDay", + "kind": "method", + "documentation": "getSecondOfDay(): int", + "insertText": "getSecondOfDay" + }, + { + "label": "getSecondOfMinute", + "kind": "method", + "documentation": "getSecondOfMinute(): int", + "insertText": "getSecondOfMinute" + }, + { + "label": "getWeekOfWeekyear", + "kind": "method", + "documentation": "getWeekOfWeekyear(): int", + "insertText": "getWeekOfWeekyear" + }, + { + "label": "getWeekyear", + "kind": "method", + "documentation": "getWeekyear(): int", + "insertText": "getWeekyear" + }, + { + "label": "getYear", + "kind": "method", + "documentation": "getYear(): int", + "insertText": "getYear" + }, + { + "label": "getYearOfCentury", + "kind": "method", + "documentation": "getYearOfCentury(): int", + "insertText": "getYearOfCentury" + }, + { + "label": "getYearOfEra", + "kind": "method", + "documentation": "getYearOfEra(): int", + "insertText": "getYearOfEra" + }, + { + "label": "getZone", + "kind": "method", + "documentation": "getZone(): java.time.ZoneId", + "insertText": "getZone" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isAfter", + "kind": "method", + "documentation": "isAfter(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isAfter" + }, + { + "label": "isBefore", + "kind": "method", + "documentation": "isBefore(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isBefore" + }, + { + "label": "isEqual", + "kind": "method", + "documentation": "isEqual(java.time.chrono.ChronoZonedDateTime a): boolean", + "insertText": "isEqual" + }, + { + "label": "isSupported", + "kind": "method", + "documentation": "isSupported(java.time.temporal.TemporalField a): boolean", + "insertText": "isSupported" + }, + { + "label": "minus", + "kind": "method", + "documentation": "minus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "minus" + }, + { + "label": "minusDays", + "kind": "method", + "documentation": "minusDays(long a): java.time.ZonedDateTime", + "insertText": "minusDays" + }, + { + "label": "minusHours", + "kind": "method", + "documentation": "minusHours(long a): java.time.ZonedDateTime", + "insertText": "minusHours" + }, + { + "label": "minusMinutes", + "kind": "method", + "documentation": "minusMinutes(long a): java.time.ZonedDateTime", + "insertText": "minusMinutes" + }, + { + "label": "minusMonths", + "kind": "method", + "documentation": "minusMonths(long a): java.time.ZonedDateTime", + "insertText": "minusMonths" + }, + { + "label": "minusNanos", + "kind": "method", + "documentation": "minusNanos(long a): java.time.ZonedDateTime", + "insertText": "minusNanos" + }, + { + "label": "minusSeconds", + "kind": "method", + "documentation": "minusSeconds(long a): java.time.ZonedDateTime", + "insertText": "minusSeconds" + }, + { + "label": "minusWeeks", + "kind": "method", + "documentation": "minusWeeks(long a): java.time.ZonedDateTime", + "insertText": "minusWeeks" + }, + { + "label": "minusYears", + "kind": "method", + "documentation": "minusYears(long a): java.time.ZonedDateTime", + "insertText": "minusYears" + }, + { + "label": "plus", + "kind": "method", + "documentation": "plus(long a, java.time.temporal.TemporalUnit b | java.time.temporal.TemporalAmount a): java.time.ZonedDateTime", + "insertText": "plus" + }, + { + "label": "plusDays", + "kind": "method", + "documentation": "plusDays(long a): java.time.ZonedDateTime", + "insertText": "plusDays" + }, + { + "label": "plusHours", + "kind": "method", + "documentation": "plusHours(long a): java.time.ZonedDateTime", + "insertText": "plusHours" + }, + { + "label": "plusMinutes", + "kind": "method", + "documentation": "plusMinutes(long a): java.time.ZonedDateTime", + "insertText": "plusMinutes" + }, + { + "label": "plusMonths", + "kind": "method", + "documentation": "plusMonths(long a): java.time.ZonedDateTime", + "insertText": "plusMonths" + }, + { + "label": "plusNanos", + "kind": "method", + "documentation": "plusNanos(long a): java.time.ZonedDateTime", + "insertText": "plusNanos" + }, + { + "label": "plusSeconds", + "kind": "method", + "documentation": "plusSeconds(long a): java.time.ZonedDateTime", + "insertText": "plusSeconds" + }, + { + "label": "plusWeeks", + "kind": "method", + "documentation": "plusWeeks(long a): java.time.ZonedDateTime", + "insertText": "plusWeeks" + }, + { + "label": "plusYears", + "kind": "method", + "documentation": "plusYears(long a): java.time.ZonedDateTime", + "insertText": "plusYears" + }, + { + "label": "query", + "kind": "method", + "documentation": "query(java.time.temporal.TemporalQuery a): org.elasticsearch.painless.lookup.def", + "insertText": "query" + }, + { + "label": "range", + "kind": "method", + "documentation": "range(java.time.temporal.TemporalField a): java.time.temporal.ValueRange", + "insertText": "range" + }, + { + "label": "toEpochMilli", + "kind": "method", + "documentation": "toEpochMilli(): long", + "insertText": "toEpochMilli" + }, + { + "label": "toEpochSecond", + "kind": "method", + "documentation": "toEpochSecond(): long", + "insertText": "toEpochSecond" + }, + { + "label": "toInstant", + "kind": "method", + "documentation": "toInstant(): java.time.Instant", + "insertText": "toInstant" + }, + { + "label": "toLocalDate", + "kind": "method", + "documentation": "toLocalDate(): java.time.LocalDate", + "insertText": "toLocalDate" + }, + { + "label": "toLocalDateTime", + "kind": "method", + "documentation": "toLocalDateTime(): java.time.LocalDateTime", + "insertText": "toLocalDateTime" + }, + { + "label": "toLocalTime", + "kind": "method", + "documentation": "toLocalTime(): java.time.LocalTime", + "insertText": "toLocalTime" + }, + { + "label": "toOffsetDateTime", + "kind": "method", + "documentation": "toOffsetDateTime(): java.time.OffsetDateTime", + "insertText": "toOffsetDateTime" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(java.lang.String a, java.util.Locale b | java.lang.String a): java.lang.String", + "insertText": "toString" + }, + { + "label": "truncatedTo", + "kind": "method", + "documentation": "truncatedTo(java.time.temporal.TemporalUnit a): java.time.ZonedDateTime", + "insertText": "truncatedTo" + }, + { + "label": "until", + "kind": "method", + "documentation": "until(java.time.temporal.Temporal a, java.time.temporal.TemporalUnit b): long", + "insertText": "until" + }, + { + "label": "with", + "kind": "method", + "documentation": "with(java.time.temporal.TemporalField a, long b | java.time.temporal.TemporalAdjuster a): java.time.ZonedDateTime", + "insertText": "with" + }, + { + "label": "withDayOfMonth", + "kind": "method", + "documentation": "withDayOfMonth(int a): java.time.ZonedDateTime", + "insertText": "withDayOfMonth" + }, + { + "label": "withDayOfYear", + "kind": "method", + "documentation": "withDayOfYear(int a): java.time.ZonedDateTime", + "insertText": "withDayOfYear" + }, + { + "label": "withEarlierOffsetAtOverlap", + "kind": "method", + "documentation": "withEarlierOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withEarlierOffsetAtOverlap" + }, + { + "label": "withFixedOffsetZone", + "kind": "method", + "documentation": "withFixedOffsetZone(): java.time.ZonedDateTime", + "insertText": "withFixedOffsetZone" + }, + { + "label": "withHour", + "kind": "method", + "documentation": "withHour(int a): java.time.ZonedDateTime", + "insertText": "withHour" + }, + { + "label": "withLaterOffsetAtOverlap", + "kind": "method", + "documentation": "withLaterOffsetAtOverlap(): java.time.ZonedDateTime", + "insertText": "withLaterOffsetAtOverlap" + }, + { + "label": "withMinute", + "kind": "method", + "documentation": "withMinute(int a): java.time.ZonedDateTime", + "insertText": "withMinute" + }, + { + "label": "withMonth", + "kind": "method", + "documentation": "withMonth(int a): java.time.ZonedDateTime", + "insertText": "withMonth" + }, + { + "label": "withNano", + "kind": "method", + "documentation": "withNano(int a): java.time.ZonedDateTime", + "insertText": "withNano" + }, + { + "label": "withSecond", + "kind": "method", + "documentation": "withSecond(int a): java.time.ZonedDateTime", + "insertText": "withSecond" + }, + { + "label": "withYear", + "kind": "method", + "documentation": "withYear(int a): java.time.ZonedDateTime", + "insertText": "withYear" + }, + { + "label": "withZoneSameInstant", + "kind": "method", + "documentation": "withZoneSameInstant(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameInstant" + }, + { + "label": "withZoneSameLocal", + "kind": "method", + "documentation": "withZoneSameLocal(java.time.ZoneId a): java.time.ZonedDateTime", + "insertText": "withZoneSameLocal" + } + ] + }, + { + "label": "ScoreScript.ExplanationHolder", + "kind": "class", + "documentation": "Class: ScoreScript.ExplanationHolder", + "insertText": "ScoreScript.ExplanationHolder", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "set", + "kind": "method", + "documentation": "set(java.lang.String a): void", + "insertText": "set" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "FieldLookup", + "kind": "class", + "documentation": "Class: FieldLookup", + "insertText": "FieldLookup", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "getValue", + "kind": "method", + "documentation": "getValue(): org.elasticsearch.painless.lookup.def", + "insertText": "getValue" + }, + { + "label": "getValues", + "kind": "method", + "documentation": "getValues(): java.util.List", + "insertText": "getValues" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "isEmpty", + "kind": "method", + "documentation": "isEmpty(): boolean", + "insertText": "isEmpty" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript.Factory", + "kind": "class", + "documentation": "Class: org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript.Factory", + "insertText": "org.elasticsearch.xpack.runtimefields.mapper.StringFieldScript.Factory", + "properties": [ + { + "label": "equals", + "kind": "method", + "documentation": "equals(java.lang.Object a): boolean", + "insertText": "equals" + }, + { + "label": "hashCode", + "kind": "method", + "documentation": "hashCode(): int", + "insertText": "hashCode" + }, + { + "label": "toString", + "kind": "method", + "documentation": "toString(): java.lang.String", + "insertText": "toString" + } + ] + }, + { + "label": "short", + "kind": "type", + "documentation": "Primitive: short", + "insertText": "short" + }, + { + "label": "void", + "kind": "type", + "documentation": "Primitive: void", + "insertText": "void" + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/painless/completion_adapter.ts b/packages/kbn-monaco/src/painless/completion_adapter.ts new file mode 100644 index 00000000000000..1eb91c6c386b99 --- /dev/null +++ b/packages/kbn-monaco/src/painless/completion_adapter.ts @@ -0,0 +1,110 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { monaco } from '../monaco_imports'; +import { EditorStateService } from './lib'; +import { PainlessCompletionResult, PainlessCompletionKind } from './types'; +import { PainlessWorker } from './worker'; + +const getCompletionKind = (kind: PainlessCompletionKind): monaco.languages.CompletionItemKind => { + const monacoItemKind = monaco.languages.CompletionItemKind; + + switch (kind) { + case 'type': + return monacoItemKind.Interface; + case 'class': + return monacoItemKind.Class; + case 'method': + return monacoItemKind.Method; + case 'constructor': + return monacoItemKind.Constructor; + case 'property': + return monacoItemKind.Property; + case 'keyword': + return monacoItemKind.Keyword; + case 'field': + return monacoItemKind.Field; + default: + return monacoItemKind.Text; + } +}; + +export class PainlessCompletionAdapter implements monaco.languages.CompletionItemProvider { + constructor( + private worker: { + (...uris: monaco.Uri[]): Promise; + (arg0: monaco.Uri): Promise; + }, + private editorStateService: EditorStateService + ) {} + + public get triggerCharacters(): string[] { + return ['.', `'`]; + } + + async provideCompletionItems( + model: monaco.editor.IReadOnlyModel, + position: monaco.Position + ): Promise { + // Active line characters + const currentLineChars = model.getValueInRange({ + startLineNumber: position.lineNumber, + startColumn: 0, + endLineNumber: position.lineNumber, + endColumn: position.column, + }); + + const worker = await this.worker(model.uri); + + const { context, fields } = this.editorStateService.getState(); + const autocompleteInfo: PainlessCompletionResult = await worker.provideAutocompleteSuggestions( + currentLineChars, + context, + fields + ); + + const wordInfo = model.getWordUntilPosition(position); + const wordRange = { + startLineNumber: position.lineNumber, + endLineNumber: position.lineNumber, + startColumn: wordInfo.startColumn, + endColumn: wordInfo.endColumn, + }; + + const suggestions = autocompleteInfo.suggestions.map( + ({ label, insertText, documentation, kind, insertTextAsSnippet }) => { + return { + label, + insertText, + documentation, + range: wordRange, + kind: getCompletionKind(kind), + insertTextRules: insertTextAsSnippet + ? monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet + : undefined, + }; + } + ); + + return { + incomplete: autocompleteInfo.isIncomplete, + suggestions, + }; + } +} diff --git a/packages/kbn-monaco/src/painless/diagnostics_adapter.ts b/packages/kbn-monaco/src/painless/diagnostics_adapter.ts new file mode 100644 index 00000000000000..95c4ec19cea1fd --- /dev/null +++ b/packages/kbn-monaco/src/painless/diagnostics_adapter.ts @@ -0,0 +1,56 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { monaco } from '../monaco_imports'; +import { ID } from './constants'; +import { WorkerAccessor } from './language'; +import { PainlessError } from './worker'; + +const toDiagnostics = (error: PainlessError): monaco.editor.IMarkerData => { + return { + ...error, + severity: monaco.MarkerSeverity.Error, + }; +}; + +export class DiagnosticsAdapter { + constructor(private worker: WorkerAccessor) { + const onModelAdd = (model: monaco.editor.IModel): void => { + let handle: any; + model.onDidChangeContent(() => { + // Every time a new change is made, wait 500ms before validating + clearTimeout(handle); + handle = setTimeout(() => this.validate(model.uri), 500); + }); + + this.validate(model.uri); + }; + monaco.editor.onDidCreateModel(onModelAdd); + monaco.editor.getModels().forEach(onModelAdd); + } + + private async validate(resource: monaco.Uri): Promise { + const worker = await this.worker(resource); + const errorMarkers = await worker.getSyntaxErrors(); + + const model = monaco.editor.getModel(resource); + + // Set the error markers and underline them with "Error" severity + monaco.editor.setModelMarkers(model!, ID, errorMarkers.map(toDiagnostics)); + } +} diff --git a/packages/kbn-monaco/src/painless/index.ts b/packages/kbn-monaco/src/painless/index.ts index 2ff1f4a19f9bd4..10c82d2ae66954 100644 --- a/packages/kbn-monaco/src/painless/index.ts +++ b/packages/kbn-monaco/src/painless/index.ts @@ -18,6 +18,9 @@ */ import { ID } from './constants'; -import { lexerRules } from './lexer_rules'; +import { lexerRules, languageConfiguration } from './lexer_rules'; +import { getSuggestionProvider } from './language'; -export const PainlessLang = { ID, lexerRules }; +export const PainlessLang = { ID, getSuggestionProvider, lexerRules, languageConfiguration }; + +export { PainlessContext, PainlessAutocompleteField } from './types'; diff --git a/packages/kbn-monaco/src/painless/language.ts b/packages/kbn-monaco/src/painless/language.ts new file mode 100644 index 00000000000000..01212f80b00dc1 --- /dev/null +++ b/packages/kbn-monaco/src/painless/language.ts @@ -0,0 +1,51 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { monaco } from '../monaco_imports'; + +import { WorkerProxyService, EditorStateService } from './lib'; +import { ID } from './constants'; +import { PainlessContext, PainlessAutocompleteField } from './types'; +import { PainlessWorker } from './worker'; +import { PainlessCompletionAdapter } from './completion_adapter'; +import { DiagnosticsAdapter } from './diagnostics_adapter'; + +const workerProxyService = new WorkerProxyService(); +const editorStateService = new EditorStateService(); + +export type WorkerAccessor = (...uris: monaco.Uri[]) => Promise; + +const worker: WorkerAccessor = (...uris: monaco.Uri[]): Promise => { + return workerProxyService.getWorker(uris); +}; + +export const getSuggestionProvider = ( + context: PainlessContext, + fields?: PainlessAutocompleteField[] +) => { + editorStateService.setup(context, fields); + + return new PainlessCompletionAdapter(worker, editorStateService); +}; + +monaco.languages.onLanguage(ID, async () => { + workerProxyService.setup(); + + new DiagnosticsAdapter(worker); +}); diff --git a/packages/kbn-monaco/src/painless/lexer_rules/index.ts b/packages/kbn-monaco/src/painless/lexer_rules/index.ts index 7cf9064c6aa51c..718231b4fe0cdb 100644 --- a/packages/kbn-monaco/src/painless/lexer_rules/index.ts +++ b/packages/kbn-monaco/src/painless/lexer_rules/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { lexerRules } from './painless'; +export { lexerRules, languageConfiguration } from './painless'; diff --git a/packages/kbn-monaco/src/painless/lexer_rules/painless.ts b/packages/kbn-monaco/src/painless/lexer_rules/painless.ts index 2f4383911c9adb..580c6f9499569e 100644 --- a/packages/kbn-monaco/src/painless/lexer_rules/painless.ts +++ b/packages/kbn-monaco/src/painless/lexer_rules/painless.ts @@ -180,3 +180,17 @@ export const lexerRules = { ], }, } as Language; + +export const languageConfiguration: monaco.languages.LanguageConfiguration = { + brackets: [ + ['{', '}'], + ['[', ']'], + ['(', ')'], + ], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], +}; diff --git a/packages/kbn-monaco/src/painless/lib/editor_state.ts b/packages/kbn-monaco/src/painless/lib/editor_state.ts new file mode 100644 index 00000000000000..3003f266dca620 --- /dev/null +++ b/packages/kbn-monaco/src/painless/lib/editor_state.ts @@ -0,0 +1,45 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PainlessContext, PainlessAutocompleteField } from '../types'; + +export interface EditorState { + context: PainlessContext; + fields?: PainlessAutocompleteField[]; +} + +export class EditorStateService { + context: PainlessContext = 'painless_test'; + fields: PainlessAutocompleteField[] = []; + + public getState(): EditorState { + return { + context: this.context, + fields: this.fields, + }; + } + + public setup(context: PainlessContext, fields?: PainlessAutocompleteField[]) { + this.context = context; + + if (fields) { + this.fields = fields; + } + } +} diff --git a/packages/kbn-monaco/src/painless/lib/index.ts b/packages/kbn-monaco/src/painless/lib/index.ts new file mode 100644 index 00000000000000..e6d118cb92ce7b --- /dev/null +++ b/packages/kbn-monaco/src/painless/lib/index.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { EditorStateService, EditorState } from './editor_state'; +export { WorkerProxyService } from './worker_proxy'; diff --git a/packages/kbn-monaco/src/painless/lib/worker_proxy.ts b/packages/kbn-monaco/src/painless/lib/worker_proxy.ts new file mode 100644 index 00000000000000..0db9789a4f423d --- /dev/null +++ b/packages/kbn-monaco/src/painless/lib/worker_proxy.ts @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { monaco } from '../../monaco_imports'; +import { PainlessWorker } from '../worker'; +import { ID } from '../constants'; + +export class WorkerProxyService { + private worker: monaco.editor.MonacoWebWorker | undefined; + + public async getWorker(resources: monaco.Uri[]) { + if (!this.worker) { + throw new Error('Worker Proxy Service has not been setup!'); + } + + await this.worker.withSyncedResources(resources); + const proxy = await this.worker.getProxy(); + return proxy; + } + + public setup() { + this.worker = monaco.editor.createWebWorker({ label: ID, moduleId: '' }); + } + + public stop() { + if (this.worker) this.worker.dispose(); + } +} diff --git a/packages/kbn-monaco/src/painless/types.ts b/packages/kbn-monaco/src/painless/types.ts new file mode 100644 index 00000000000000..a56ca4f9b695a8 --- /dev/null +++ b/packages/kbn-monaco/src/painless/types.ts @@ -0,0 +1,57 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export type PainlessCompletionKind = + | 'type' + | 'class' + | 'method' + | 'constructor' + | 'property' + | 'field' + | 'keyword'; + +export type PainlessContext = + | 'painless_test' + | 'filter' + | 'score' + | 'boolean_script_field_script_field' + | 'date_script_field' + | 'double_script_field_script_field' + | 'ip_script_field_script_field' + | 'long_script_field_script_field' + | 'processor_conditional' + | 'string_script_field_script_field'; + +export interface PainlessCompletionItem { + label: string; + kind: PainlessCompletionKind; + documentation: string; + insertText: string; + insertTextAsSnippet?: boolean; +} + +export interface PainlessCompletionResult { + isIncomplete: boolean; + suggestions: PainlessCompletionItem[]; +} + +export interface PainlessAutocompleteField { + name: string; + type: string; +} diff --git a/packages/kbn-monaco/src/painless/worker/index.ts b/packages/kbn-monaco/src/painless/worker/index.ts new file mode 100644 index 00000000000000..3250a41759e098 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/index.ts @@ -0,0 +1,22 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { PainlessWorker } from './painless_worker'; + +export { PainlessError } from './lib'; diff --git a/packages/kbn-monaco/src/painless/worker/lib/autocomplete.test.ts b/packages/kbn-monaco/src/painless/worker/lib/autocomplete.test.ts new file mode 100644 index 00000000000000..4a975596affba0 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/autocomplete.test.ts @@ -0,0 +1,235 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PainlessCompletionItem } from '../../types'; + +import { + getStaticSuggestions, + getFieldSuggestions, + getClassMemberSuggestions, + getPrimitives, + getConstructorSuggestions, + getKeywords, + Suggestion, +} from './autocomplete'; + +const keywords: PainlessCompletionItem[] = getKeywords(); + +const testSuggestions: Suggestion[] = [ + { + properties: undefined, + constructorDefinition: undefined, + documentation: 'Primitive: boolean', + insertText: 'boolean', + kind: 'type', + label: 'boolean', + }, + { + properties: undefined, + constructorDefinition: undefined, + documentation: 'Primitive: int', + insertText: 'int', + kind: 'type', + label: 'int', + }, + { + properties: [ + { + documentation: 'PI: double', + insertText: 'PI', + kind: 'property', + label: 'PI', + }, + { + documentation: 'pow(double a, double b): double', + insertText: 'pow', + kind: 'method', + label: 'pow', + }, + ], + constructorDefinition: undefined, + documentation: 'Class: Math', + insertText: 'Math', + kind: 'class', + label: 'Math', + }, + { + constructorDefinition: { + documentation: 'Constructor: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'constructor', + label: 'ArithmeticException', + }, + documentation: 'Class: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'class', + label: 'ArithmeticException', + properties: [ + { + documentation: 'equals(java.lang.Object a): boolean', + insertText: 'equals', + kind: 'method', + label: 'equals', + }, + ], + }, +]; + +describe('Autocomplete lib', () => { + describe('Static suggestions', () => { + test('returns static suggestions', () => { + expect(getStaticSuggestions({ suggestions: testSuggestions })).toEqual({ + isIncomplete: false, + suggestions: [ + { + documentation: 'Primitive: boolean', + insertText: 'boolean', + kind: 'type', + label: 'boolean', + }, + { + documentation: 'Primitive: int', + insertText: 'int', + kind: 'type', + label: 'int', + }, + { + documentation: 'Class: Math', + insertText: 'Math', + kind: 'class', + label: 'Math', + }, + { + documentation: 'Class: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'class', + label: 'ArithmeticException', + }, + ...keywords, + ], + }); + }); + + test('returns doc keyword when fields exist', () => { + const autocompletion = getStaticSuggestions({ + suggestions: testSuggestions, + hasFields: true, + }); + const docSuggestion = autocompletion.suggestions.find( + (suggestion) => suggestion.label === 'doc' + ); + expect(Boolean(docSuggestion)).toBe(true); + }); + + test('returns emit keyword for runtime fields', () => { + const autocompletion = getStaticSuggestions({ + suggestions: testSuggestions, + isRuntimeContext: true, + }); + const emitSuggestion = autocompletion.suggestions.find( + (suggestion) => suggestion.label === 'emit' + ); + expect(Boolean(emitSuggestion)).toBe(true); + }); + }); + + describe('getPrimitives()', () => { + test('returns primitive values', () => { + expect(getPrimitives(testSuggestions)).toEqual(['boolean', 'int']); + }); + }); + + describe('getClassMemberSuggestions()', () => { + test('returns class member suggestions', () => { + expect(getClassMemberSuggestions(testSuggestions, 'Math')).toEqual({ + isIncomplete: false, + suggestions: [ + { + documentation: 'PI: double', + insertText: 'PI', + kind: 'property', + label: 'PI', + }, + { + documentation: 'pow(double a, double b): double', + insertText: 'pow', + kind: 'method', + label: 'pow', + }, + ], + }); + }); + + test('returns an empty suggestions array if class does not exist', () => { + expect(getClassMemberSuggestions(testSuggestions, 'foobar')).toEqual({ + isIncomplete: false, + suggestions: [], + }); + }); + }); + + describe('getFieldSuggestions()', () => { + test('returns field suggestions', () => { + const fields = [ + { + name: 'field1', + type: 'float', + }, + { + name: 'field2', + type: 'boolean', + }, + ]; + + expect(getFieldSuggestions(fields)).toEqual({ + isIncomplete: false, + suggestions: [ + { + documentation: `Retrieve the value for field 'field1'`, + insertText: `field1'`, + kind: 'field', + label: 'field1', + }, + { + documentation: `Retrieve the value for field 'field2'`, + insertText: `field2'`, + kind: 'field', + label: 'field2', + }, + ], + }); + }); + }); + + describe('getConstructorSuggestions()', () => { + test('returns constructor suggestions', () => { + expect(getConstructorSuggestions(testSuggestions)).toEqual({ + isIncomplete: false, + suggestions: [ + { + documentation: 'Constructor: ArithmeticException', + insertText: 'ArithmeticException', + kind: 'constructor', + label: 'ArithmeticException', + }, + ], + }); + }); + }); +}); diff --git a/packages/kbn-monaco/src/painless/worker/lib/autocomplete.ts b/packages/kbn-monaco/src/painless/worker/lib/autocomplete.ts new file mode 100644 index 00000000000000..9bdaa298fb1c93 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/autocomplete.ts @@ -0,0 +1,254 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; + +import { + PainlessCompletionResult, + PainlessCompletionItem, + PainlessContext, + PainlessAutocompleteField, +} from '../../types'; + +import { + painlessTestContext, + scoreContext, + filterContext, + booleanScriptFieldScriptFieldContext, + dateScriptFieldContext, + doubleScriptFieldScriptFieldContext, + ipScriptFieldScriptFieldContext, + longScriptFieldScriptFieldContext, + processorConditionalContext, + stringScriptFieldScriptFieldContext, +} from '../../autocomplete_definitions'; + +import { lexerRules } from '../../lexer_rules'; + +import { + isDeclaringField, + isConstructorInstance, + isAccessingProperty, + showStaticSuggestions, +} from './autocomplete_utils'; + +export interface Suggestion extends PainlessCompletionItem { + properties?: PainlessCompletionItem[]; + constructorDefinition?: PainlessCompletionItem; +} + +export const getKeywords = (): PainlessCompletionItem[] => { + const lexerKeywords: PainlessCompletionItem[] = lexerRules.keywords.map((keyword) => { + return { + label: keyword, + kind: 'keyword', + documentation: `Keyword: ${keyword}`, + insertText: keyword, + }; + }); + + const allKeywords: PainlessCompletionItem[] = [ + ...lexerKeywords, + { + label: 'params', + kind: 'keyword', + documentation: i18n.translate( + 'monaco.painlessLanguage.autocomplete.paramsKeywordDescription', + { + defaultMessage: 'Access variables passed into the script.', + } + ), + insertText: 'params', + }, + ]; + + return allKeywords; +}; + +const runtimeContexts: PainlessContext[] = [ + 'boolean_script_field_script_field', + 'date_script_field', + 'double_script_field_script_field', + 'ip_script_field_script_field', + 'long_script_field_script_field', + 'string_script_field_script_field', +]; + +const mapContextToData: { [key: string]: { suggestions: any[] } } = { + painless_test: painlessTestContext, + score: scoreContext, + filter: filterContext, + boolean_script_field_script_field: booleanScriptFieldScriptFieldContext, + date_script_field: dateScriptFieldContext, + double_script_field_script_field: doubleScriptFieldScriptFieldContext, + ip_script_field_script_field: ipScriptFieldScriptFieldContext, + long_script_field_script_field: longScriptFieldScriptFieldContext, + processor_conditional: processorConditionalContext, + string_script_field_script_field: stringScriptFieldScriptFieldContext, +}; + +export const getStaticSuggestions = ({ + suggestions, + hasFields, + isRuntimeContext, +}: { + suggestions: Suggestion[]; + hasFields?: boolean; + isRuntimeContext?: boolean; +}): PainlessCompletionResult => { + const classSuggestions: PainlessCompletionItem[] = suggestions.map((suggestion) => { + const { properties, constructorDefinition, ...rootSuggestion } = suggestion; + return rootSuggestion; + }); + + const keywords = getKeywords(); + + let keywordSuggestions: PainlessCompletionItem[] = hasFields + ? [ + ...keywords, + { + label: 'doc', + kind: 'keyword', + documentation: i18n.translate( + 'monaco.painlessLanguage.autocomplete.docKeywordDescription', + { + defaultMessage: `Access a field value from a script using the doc['field_name'] syntax`, + } + ), + insertText: "doc[${1:'my_field'}]", + insertTextAsSnippet: true, + }, + ] + : keywords; + + keywordSuggestions = isRuntimeContext + ? [ + ...keywordSuggestions, + { + label: 'emit', + kind: 'keyword', + documentation: i18n.translate( + 'monaco.painlessLanguage.autocomplete.emitKeywordDescription', + { + defaultMessage: 'Emit value without returning.', + } + ), + insertText: 'emit', + }, + ] + : keywordSuggestions; + + return { + isIncomplete: false, + suggestions: [...classSuggestions, ...keywordSuggestions], + }; +}; + +export const getPrimitives = (suggestions: Suggestion[]): string[] => { + return suggestions.filter((suggestion) => suggestion.kind === 'type').map((type) => type.label); +}; + +export const getClassMemberSuggestions = ( + suggestions: Suggestion[], + className: string +): PainlessCompletionResult => { + const painlessClass = suggestions.find((suggestion) => suggestion.label === className); + + return { + isIncomplete: false, + suggestions: painlessClass?.properties || [], + }; +}; + +export const getFieldSuggestions = ( + fields: PainlessAutocompleteField[] +): PainlessCompletionResult => { + const suggestions: PainlessCompletionItem[] = fields.map(({ name }) => { + return { + label: name, + kind: 'field', + documentation: i18n.translate('monaco.painlessLanguage.autocomplete.fieldValueDescription', { + defaultMessage: `Retrieve the value for field '{fieldName}'`, + values: { + fieldName: name, + }, + }), + // A trailing quotation mark is added to format the field for the user + insertText: `${name}'`, + }; + }); + + return { + isIncomplete: false, + suggestions, + }; +}; + +export const getConstructorSuggestions = (suggestions: Suggestion[]): PainlessCompletionResult => { + let constructorSuggestions: PainlessCompletionItem[] = []; + + const suggestionsWithConstructors = suggestions.filter( + (suggestion) => suggestion.constructorDefinition + ); + + if (suggestionsWithConstructors) { + constructorSuggestions = suggestionsWithConstructors.map( + (filteredSuggestion) => filteredSuggestion.constructorDefinition! + ); + } + + return { + isIncomplete: false, + suggestions: constructorSuggestions, + }; +}; + +export const getAutocompleteSuggestions = ( + painlessContext: PainlessContext, + words: string[], + fields?: PainlessAutocompleteField[] +): PainlessCompletionResult => { + const suggestions = mapContextToData[painlessContext].suggestions; + // What the user is currently typing + const activeTyping = words[words.length - 1]; + const primitives = getPrimitives(suggestions); + // This logic may end up needing to be more robust as we integrate autocomplete into more editors + // For now, we're assuming there is a list of painless contexts that are only applicable in runtime fields + const isRuntimeContext = runtimeContexts.includes(painlessContext); + // "text" field types are not available in doc values and should be removed for autocompletion + const filteredFields = fields?.filter((field) => field.type !== 'text'); + const hasFields = Boolean(filteredFields?.length); + + let autocompleteSuggestions: PainlessCompletionResult = { + isIncomplete: false, + suggestions: [], + }; + + if (isConstructorInstance(words)) { + autocompleteSuggestions = getConstructorSuggestions(suggestions); + } else if (filteredFields && isDeclaringField(activeTyping)) { + autocompleteSuggestions = getFieldSuggestions(filteredFields); + } else if (isAccessingProperty(activeTyping)) { + const className = activeTyping.substring(0, activeTyping.length - 1).split('.')[0]; + autocompleteSuggestions = getClassMemberSuggestions(suggestions, className); + } else if (showStaticSuggestions(activeTyping, words, primitives)) { + autocompleteSuggestions = getStaticSuggestions({ suggestions, hasFields, isRuntimeContext }); + } + return autocompleteSuggestions; +}; diff --git a/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.test.ts b/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.test.ts new file mode 100644 index 00000000000000..802fd0073963a6 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.test.ts @@ -0,0 +1,97 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + isDeclaringField, + isConstructorInstance, + hasDeclaredType, + isAccessingProperty, + showStaticSuggestions, + isDefiningString, + isDefiningBoolean, +} from './autocomplete_utils'; + +const primitives = ['boolean', 'int', 'char', 'float', 'double']; + +describe('Utils', () => { + describe('isDeclaringField()', () => { + test('returns true or false depending if a string contains the expected document syntax', () => { + expect(isDeclaringField(`doc['`)).toEqual(true); + expect(isDeclaringField(`i { + test('returns true or false depending if an array contains the "new" keyword at a specific index', () => { + expect(isConstructorInstance(['int', 'myConstructor', '=', 'new', 'A'])).toEqual(true); + expect(isConstructorInstance(['new', 'A'])).toEqual(true); + expect(isConstructorInstance(['int', 'new', '=', 'a'])).toEqual(false); + }); + }); + + describe('hasDeclaredType()', () => { + test('returns true or false depending if an array contains a primitive type at a specific index', () => { + expect(hasDeclaredType(['boolean', 'a'], primitives)).toEqual(true); + expect(hasDeclaredType(['foobar', 'a'], primitives)).toEqual(false); + }); + }); + + describe('isAccessingProperty()', () => { + test('returns true or false depending if a string contains a "."', () => { + expect(isAccessingProperty('Math.')).toEqual(true); + expect(isAccessingProperty('Math.E')).toEqual(true); + expect(isAccessingProperty('Math.E.foobar')).toEqual(false); + expect(isAccessingProperty('foobar')).toEqual(false); + expect(isAccessingProperty('Math.floor(')).toEqual(false); + }); + }); + + describe('isDefiningBoolean()', () => { + test('returns true or false depending if an array contains a boolean type and "=" token at a specific index', () => { + expect(isDefiningBoolean(['boolean', 'myBoolean', '=', 't'])).toEqual(true); + expect(isDefiningBoolean(['double', 'myBoolean', '=', 't'])).toEqual(false); + expect(isDefiningBoolean(['boolean', '='])).toEqual(false); + }); + }); + + describe('isDefiningString()', () => { + test('returns true or false depending if active typing contains a single or double quotation mark', () => { + expect(isDefiningString(`'mystring'`)).toEqual(true); + expect(isDefiningString(`"mystring"`)).toEqual(true); + expect(isDefiningString(`'`)).toEqual(true); + expect(isDefiningString(`"`)).toEqual(true); + expect(isDefiningString('mystring')).toEqual(false); + }); + }); + + describe('showStaticSuggestions()', () => { + test('returns true or false depending if a type is declared or the string contains a "."', () => { + expect(showStaticSuggestions('a', ['a'], primitives)).toEqual(true); + expect(showStaticSuggestions('foobar a', ['foobar', 'a'], primitives)).toEqual(true); + expect(showStaticSuggestions(`${primitives[0]} a`, [primitives[0], 'a'], primitives)).toEqual( + false + ); + expect(showStaticSuggestions('field1.field2.a', ['field1.field2.a'], primitives)).toEqual( + false + ); + }); + }); +}); diff --git a/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.ts b/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.ts new file mode 100644 index 00000000000000..97a05daf378426 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/autocomplete_utils.ts @@ -0,0 +1,111 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * If the active typing contains dot notation, we assume we need to access the object's properties + * Currently only supporting one-level deep nesting + */ +export const isAccessingProperty = (activeTyping: string): boolean => { + const activeTypingParts = activeTyping.split('.'); + + if (activeTypingParts.length !== 2) { + return false; + } + + const maybeProperty = activeTypingParts[1]; + + return maybeProperty.includes('(') === false; +}; + +/** + * If the preceding word is a primitive type, e.g., "boolean", + * we assume the user is declaring a variable and will skip autocomplete + * + * Note: this isn't entirely exhaustive. For example, "def myVar =" is not included in context + * It's also acceptable to use a class as a type, e.g., "String myVar =" + */ +export const hasDeclaredType = (activeLineWords: string[], primitives: string[]): boolean => { + return activeLineWords.length === 2 && primitives.includes(activeLineWords[0]); +}; + +/** + * If the active line words contains the "boolean" type and "=" token, + * we assume the user is defining a boolean value and skip autocomplete + */ +export const isDefiningBoolean = (activeLineWords: string[]): boolean => { + if (activeLineWords.length === 4) { + const maybePrimitiveType = activeLineWords[0]; + const maybeEqualToken = activeLineWords[2]; + return maybePrimitiveType === 'boolean' && maybeEqualToken === '='; + } + return false; +}; + +/** + * If the active typing contains a start or end quotation mark, + * we assume the user is defining a string and skip autocomplete + */ +export const isDefiningString = (activeTyping: string): boolean => { + const quoteTokens = [`'`, `"`]; + const activeTypingParts = activeTyping.split(''); + const startCharacter = activeTypingParts[0]; + const endCharacter = activeTypingParts[activeTypingParts.length - 1]; + return quoteTokens.includes(startCharacter) || quoteTokens.includes(endCharacter); +}; + +/** + * Check if the preceding word contains the "new" keyword + */ +export const isConstructorInstance = (activeLineWords: string[]): boolean => { + return activeLineWords[activeLineWords.length - 2] === 'new'; +}; + +/** + * Check if the user appears to be accessing a document field + */ +export const isDeclaringField = (activeTyping: string): boolean => { + const triggerString = `doc['`; + const startIndex = activeTyping.indexOf(triggerString); + const endIndex = startIndex + (triggerString.length - 1); + + return startIndex !== -1 && activeTyping.length - 1 === endIndex; +}; + +/** + * Static suggestions serve as a catch-all most of the time + * However, there are a few situations where we do not want to show them and instead default to the built-in monaco (abc) autocomplete + * 1. If the preceding word is a primitive type, e.g., "boolean", we assume the user is declaring a variable name + * 2. If the string contains a "dot" character, we assume the user is attempting to access a property that we do not have information for + * 3. If the user is defining a variable with a boolean type, e.g., "boolean myBoolean =" + * 4. If the user is defining a string + */ +export const showStaticSuggestions = ( + activeTyping: string, + activeLineWords: string[], + primitives: string[] +): boolean => { + const activeTypingParts = activeTyping.split('.'); + + return ( + hasDeclaredType(activeLineWords, primitives) === false && + isDefiningBoolean(activeLineWords) === false && + isDefiningString(activeTyping) === false && + activeTypingParts.length === 1 + ); +}; diff --git a/packages/kbn-monaco/src/painless/worker/lib/error_listener.ts b/packages/kbn-monaco/src/painless/worker/lib/error_listener.ts new file mode 100644 index 00000000000000..96a19b4547ee0f --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/error_listener.ts @@ -0,0 +1,59 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ANTLRErrorListener, RecognitionException, Recognizer } from 'antlr4ts'; + +export interface PainlessError { + startLineNumber: number; + startColumn: number; + endLineNumber: number; + endColumn: number; + message: string; +} + +export class PainlessErrorListener implements ANTLRErrorListener { + private errors: PainlessError[] = []; + + syntaxError( + recognizer: Recognizer, + offendingSymbol: any, + line: number, + column: number, + message: string, + e: RecognitionException | undefined + ): void { + let endColumn = column + 1; + + if (offendingSymbol?._text) { + endColumn = column + offendingSymbol._text.length; + } + + this.errors.push({ + startLineNumber: line, + endLineNumber: line, + startColumn: column, + endColumn, + message, + }); + } + + getErrors(): PainlessError[] { + return this.errors; + } +} diff --git a/packages/kbn-monaco/src/painless/worker/lib/index.ts b/packages/kbn-monaco/src/painless/worker/lib/index.ts new file mode 100644 index 00000000000000..1a89cbecb67b5d --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/index.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { getAutocompleteSuggestions } from './autocomplete'; + +export { PainlessError } from './error_listener'; + +export { parseAndGetSyntaxErrors } from './parser'; diff --git a/packages/kbn-monaco/src/painless/worker/lib/lexer.ts b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts new file mode 100644 index 00000000000000..343e3b3b068647 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/lexer.ts @@ -0,0 +1,56 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CharStream } from 'antlr4ts'; +import { painless_lexer as PainlessLexer } from '../../antlr/painless_lexer'; + +/* + * This extends the PainlessLexer class in order to handle backslashes appropriately + * It is being invoked in painless_lexer.g4 + * Based on the Java implementation: https://github.com/elastic/elasticsearch/blob/feab123ba400b150f3dcd04dd27cf57474b70d5a/modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/EnhancedPainlessLexer.java#L73 + */ +export class PainlessLexerEnhanced extends PainlessLexer { + constructor(input: CharStream) { + super(input); + } + + isSlashRegex(): boolean { + const lastToken = super.nextToken(); + + if (lastToken == null) { + return true; + } + + // @ts-ignore + switch (lastToken._type) { + case PainlessLexer.RBRACE: + case PainlessLexer.RP: + case PainlessLexer.OCTAL: + case PainlessLexer.HEX: + case PainlessLexer.INTEGER: + case PainlessLexer.DECIMAL: + case PainlessLexer.ID: + case PainlessLexer.DOTINTEGER: + case PainlessLexer.DOTID: + return false; + default: + return true; + } + } +} diff --git a/packages/kbn-monaco/src/painless/worker/lib/parser.ts b/packages/kbn-monaco/src/painless/worker/lib/parser.ts new file mode 100644 index 00000000000000..7cf5b730a81e68 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/lib/parser.ts @@ -0,0 +1,54 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CommonTokenStream, CharStreams } from 'antlr4ts'; +import { painless_parser as PainlessParser, SourceContext } from '../../antlr/painless_parser'; +import { PainlessError, PainlessErrorListener } from './error_listener'; +import { PainlessLexerEnhanced } from './lexer'; + +const parse = ( + code: string +): { + source: SourceContext; + errors: PainlessError[]; +} => { + const inputStream = CharStreams.fromString(code); + const lexer = new PainlessLexerEnhanced(inputStream); + const painlessLangErrorListener = new PainlessErrorListener(); + const tokenStream = new CommonTokenStream(lexer); + const parser = new PainlessParser(tokenStream); + + lexer.removeErrorListeners(); + parser.removeErrorListeners(); + + lexer.addErrorListener(painlessLangErrorListener); + parser.addErrorListener(painlessLangErrorListener); + + const errors: PainlessError[] = painlessLangErrorListener.getErrors(); + + return { + source: parser.source(), + errors, + }; +}; + +export const parseAndGetSyntaxErrors = (code: string): PainlessError[] => { + const { errors } = parse(code); + return errors; +}; diff --git a/packages/kbn-monaco/src/painless/worker/painless.worker.ts b/packages/kbn-monaco/src/painless/worker/painless.worker.ts new file mode 100644 index 00000000000000..b220cb86a84259 --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/painless.worker.ts @@ -0,0 +1,33 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// This module is intended to be run inside of a webworker +/* eslint-disable @kbn/eslint/module_migration */ + +import 'regenerator-runtime/runtime'; +// @ts-ignore +import * as worker from 'monaco-editor/esm/vs/editor/editor.worker'; +import { monaco } from '../../monaco_imports'; +import { PainlessWorker } from './painless_worker'; + +self.onmessage = () => { + worker.initialize((ctx: monaco.worker.IWorkerContext, createData: any) => { + return new PainlessWorker(ctx); + }); +}; diff --git a/packages/kbn-monaco/src/painless/worker/painless_worker.ts b/packages/kbn-monaco/src/painless/worker/painless_worker.ts new file mode 100644 index 00000000000000..ce4ba024a4caab --- /dev/null +++ b/packages/kbn-monaco/src/painless/worker/painless_worker.ts @@ -0,0 +1,57 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { monaco } from '../../monaco_imports'; +import { PainlessCompletionResult, PainlessContext, PainlessAutocompleteField } from '../types'; + +import { getAutocompleteSuggestions, parseAndGetSyntaxErrors } from './lib'; +export class PainlessWorker { + private _ctx: monaco.worker.IWorkerContext; + + constructor(ctx: monaco.worker.IWorkerContext) { + this._ctx = ctx; + } + + private getTextDocument(): string { + const model = this._ctx.getMirrorModels()[0]; + return model.getValue(); + } + + public async getSyntaxErrors() { + const code = this.getTextDocument(); + return parseAndGetSyntaxErrors(code); + } + + public provideAutocompleteSuggestions( + currentLineChars: string, + context: PainlessContext, + fields?: PainlessAutocompleteField[] + ): PainlessCompletionResult { + // Array of the active line words, e.g., [boolean, isTrue, =, true] + const words = currentLineChars.replace('\t', '').split(' '); + + const autocompleteSuggestions: PainlessCompletionResult = getAutocompleteSuggestions( + context, + words, + fields + ); + + return autocompleteSuggestions; + } +} diff --git a/packages/kbn-monaco/src/register_globals.ts b/packages/kbn-monaco/src/register_globals.ts index b9e94803b75422..db97b69c013af6 100644 --- a/packages/kbn-monaco/src/register_globals.ts +++ b/packages/kbn-monaco/src/register_globals.ts @@ -25,6 +25,8 @@ import { monaco } from './monaco_imports'; import xJsonWorkerSrc from '!!raw-loader!../target/public/xjson.editor.worker.js'; // @ts-ignore import defaultWorkerSrc from '!!raw-loader!../target/public/default.editor.worker.js'; +// @ts-ignore +import painlessWorkerSrc from '!!raw-loader!../target/public/painless.editor.worker.js'; /** * Register languages and lexer rules @@ -34,6 +36,7 @@ monaco.languages.setMonarchTokensProvider(XJsonLang.ID, XJsonLang.lexerRules); monaco.languages.setLanguageConfiguration(XJsonLang.ID, XJsonLang.languageConfiguration); monaco.languages.register({ id: PainlessLang.ID }); monaco.languages.setMonarchTokensProvider(PainlessLang.ID, PainlessLang.lexerRules); +monaco.languages.setLanguageConfiguration(PainlessLang.ID, PainlessLang.languageConfiguration); monaco.languages.register({ id: EsqlLang.ID }); monaco.languages.setMonarchTokensProvider(EsqlLang.ID, EsqlLang.lexerRules); @@ -42,6 +45,7 @@ monaco.languages.setMonarchTokensProvider(EsqlLang.ID, EsqlLang.lexerRules); */ const mapLanguageIdToWorker: { [key: string]: any } = { [XJsonLang.ID]: xJsonWorkerSrc, + [PainlessLang.ID]: painlessWorkerSrc, }; // @ts-ignore diff --git a/packages/kbn-monaco/webpack.config.js b/packages/kbn-monaco/webpack.config.js index 53f440689a233a..1a024069e8b317 100644 --- a/packages/kbn-monaco/webpack.config.js +++ b/packages/kbn-monaco/webpack.config.js @@ -55,4 +55,8 @@ const createLangWorkerConfig = (lang) => { }; }; -module.exports = [createLangWorkerConfig('xjson'), createLangWorkerConfig('default')]; +module.exports = [ + createLangWorkerConfig('xjson'), + createLangWorkerConfig('painless'), + createLangWorkerConfig('default'), +]; diff --git a/packages/kbn-optimizer/jest.config.js b/packages/kbn-optimizer/jest.config.js new file mode 100644 index 00000000000000..6e313aaad3c82f --- /dev/null +++ b/packages/kbn-optimizer/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-optimizer'], +}; diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index a97104fcf1a8d2..27d7f1af89275c 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -104,3 +104,4 @@ pageLoadAssetSize: watcher: 43598 runtimeFields: 41752 stackAlerts: 29684 + presentationUtil: 28545 diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index 46660f0dd958b8..16baaddcb84b25 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -233,6 +233,10 @@ it('uses cache on second run and exist cleanly', async () => { }); it('prepares assets for distribution', async () => { + if (process.env.CODE_COVERAGE) { + // test fails when testing coverage because source includes instrumentation, so skip it + return; + } const config = OptimizerConfig.create({ repoRoot: MOCK_REPO_DIR, pluginScanDirs: [Path.resolve(MOCK_REPO_DIR, 'plugins'), Path.resolve(MOCK_REPO_DIR, 'x-pack')], diff --git a/packages/kbn-plugin-generator/jest.config.js b/packages/kbn-plugin-generator/jest.config.js new file mode 100644 index 00000000000000..1d81a72128afdb --- /dev/null +++ b/packages/kbn-plugin-generator/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-plugin-generator'], +}; diff --git a/packages/kbn-pm/.babelrc b/packages/kbn-pm/.babelrc index 1ca768097a7ee8..9ea6ecafe7287f 100644 --- a/packages/kbn-pm/.babelrc +++ b/packages/kbn-pm/.babelrc @@ -9,6 +9,7 @@ ], "plugins": [ "@babel/proposal-class-properties", - "@babel/proposal-object-rest-spread" + "@babel/proposal-object-rest-spread", + "@babel/proposal-optional-chaining" ] } diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index c62b3f2afc14d6..eb9b7a4a35dc72 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -8814,7 +8814,7 @@ module.exports = (chalk, temporary) => { */ Object.defineProperty(exports, "__esModule", { value: true }); exports.parseLogLevel = exports.pickLevelFromFlags = void 0; -const LEVELS = ['silent', 'error', 'warning', 'info', 'debug', 'verbose']; +const LEVELS = ['silent', 'error', 'warning', 'success', 'info', 'debug', 'verbose']; function pickLevelFromFlags(flags, options = {}) { if (flags.verbose) return 'verbose'; diff --git a/packages/kbn-pm/jest.config.js b/packages/kbn-pm/jest.config.js new file mode 100644 index 00000000000000..ba0624f5f6ccda --- /dev/null +++ b/packages/kbn-pm/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-pm'], +}; diff --git a/packages/kbn-release-notes/jest.config.js b/packages/kbn-release-notes/jest.config.js new file mode 100644 index 00000000000000..44390a8c981620 --- /dev/null +++ b/packages/kbn-release-notes/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-release-notes'], +}; diff --git a/packages/kbn-spec-to-console/jest.config.js b/packages/kbn-spec-to-console/jest.config.js new file mode 100644 index 00000000000000..cef82f4d76f734 --- /dev/null +++ b/packages/kbn-spec-to-console/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-spec-to-console'], +}; diff --git a/packages/kbn-std/jest.config.js b/packages/kbn-std/jest.config.js new file mode 100644 index 00000000000000..0615e33e41af8d --- /dev/null +++ b/packages/kbn-std/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-std'], +}; diff --git a/packages/kbn-telemetry-tools/jest.config.js b/packages/kbn-telemetry-tools/jest.config.js new file mode 100644 index 00000000000000..b7b101beccf32a --- /dev/null +++ b/packages/kbn-telemetry-tools/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-telemetry-tools'], +}; diff --git a/packages/kbn-test/jest-preset.js b/packages/kbn-test/jest-preset.js index f899a5b44ab6c1..63457aa3cc37d4 100644 --- a/packages/kbn-test/jest-preset.js +++ b/packages/kbn-test/jest-preset.js @@ -48,7 +48,6 @@ module.exports = { '^(!!)?file-loader!': '/packages/kbn-test/target/jest/mocks/file_mock.js', '^fixtures/(.*)': '/src/fixtures/$1', '^src/core/(.*)': '/src/core/$1', - '^src/legacy/(.*)': '/src/legacy/$1', '^src/plugins/(.*)': '/src/plugins/$1', }, diff --git a/packages/kbn-test/jest.config.js b/packages/kbn-test/jest.config.js new file mode 100644 index 00000000000000..9400d402a1a33e --- /dev/null +++ b/packages/kbn-test/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-test'], +}; diff --git a/packages/kbn-test/src/functional_test_runner/fake_mocha_types.d.ts b/packages/kbn-test/src/functional_test_runner/fake_mocha_types.d.ts index 35b4b85e4d22a2..a1e5b2a363a9d9 100644 --- a/packages/kbn-test/src/functional_test_runner/fake_mocha_types.d.ts +++ b/packages/kbn-test/src/functional_test_runner/fake_mocha_types.d.ts @@ -23,7 +23,7 @@ * tries to mock out simple versions of the Mocha types */ -import EventEmitter from 'events'; +import { EventEmitter } from 'events'; export interface Suite { suites: Suite[]; diff --git a/packages/kbn-test/src/index.ts b/packages/kbn-test/src/index.ts index 3e4a62387d1bf4..54b064f5cd49e3 100644 --- a/packages/kbn-test/src/index.ts +++ b/packages/kbn-test/src/index.ts @@ -58,3 +58,7 @@ export { runFailedTestsReporterCli } from './failed_tests_reporter'; export { CI_PARALLEL_PROCESS_PREFIX } from './ci_parallel_process_prefix'; export * from './functional_test_runner'; + +export { getUrl } from './jest/utils/get_url'; + +export { runCheckJestConfigsCli } from './jest/run_check_jest_configs_cli'; diff --git a/packages/kbn-test/src/jest/run_check_jest_configs_cli.ts b/packages/kbn-test/src/jest/run_check_jest_configs_cli.ts new file mode 100644 index 00000000000000..385fb453697ef4 --- /dev/null +++ b/packages/kbn-test/src/jest/run_check_jest_configs_cli.ts @@ -0,0 +1,113 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { relative, resolve, sep } from 'path'; +import { writeFileSync } from 'fs'; + +import execa from 'execa'; +import globby from 'globby'; +import Mustache from 'mustache'; + +import { run } from '@kbn/dev-utils'; +import { REPO_ROOT } from '@kbn/utils'; + +// @ts-ignore +import { testMatch } from '../../jest-preset'; + +const template: string = `module.exports = { + preset: '@kbn/test', + rootDir: '{{{relToRoot}}}', + roots: ['/{{{modulePath}}}'], +}; +`; + +const roots: string[] = ['x-pack/plugins', 'packages', 'src/legacy', 'src/plugins', 'test', 'src']; + +export async function runCheckJestConfigsCli() { + run( + async ({ flags: { fix = false }, log }) => { + const { stdout: coveredFiles } = await execa( + 'yarn', + ['--silent', 'jest', '--listTests', '--json'], + { + cwd: REPO_ROOT, + } + ); + + const allFiles = new Set( + await globby(testMatch.concat(['!**/integration_tests/**']), { + gitignore: true, + }) + ); + + JSON.parse(coveredFiles).forEach((file: string) => { + const pathFromRoot = relative(REPO_ROOT, file); + allFiles.delete(pathFromRoot); + }); + + if (allFiles.size) { + log.error( + `The following files do not belong to a jest.config.js file, or that config is not included from the root jest.config.js\n${[ + ...allFiles, + ] + .map((file) => ` - ${file}`) + .join('\n')}` + ); + } else { + log.success('All test files are included by a Jest configuration'); + return; + } + + if (fix) { + allFiles.forEach((file) => { + const root = roots.find((r) => file.startsWith(r)); + + if (root) { + const name = relative(root, file).split(sep)[0]; + const modulePath = [root, name].join('/'); + + const content = Mustache.render(template, { + relToRoot: relative(modulePath, '.'), + modulePath, + }); + + writeFileSync(resolve(root, name, 'jest.config.js'), content); + } else { + log.warning(`Unable to determind where to place jest.config.js for ${file}`); + } + }); + } else { + log.info( + `Run 'node scripts/check_jest_configs --fix' to attempt to create the missing config files` + ); + } + + process.exit(1); + }, + { + description: 'Check that all test files are covered by a jest.config.js', + flags: { + boolean: ['fix'], + help: ` + --fix Attempt to create missing config files + `, + }, + } + ); +} diff --git a/packages/kbn-test/src/jest/utils/index.ts b/packages/kbn-test/src/jest/utils/index.ts index f85160652828b6..808f049cda6d8b 100644 --- a/packages/kbn-test/src/jest/utils/index.ts +++ b/packages/kbn-test/src/jest/utils/index.ts @@ -19,6 +19,8 @@ export * from './enzyme_helpers'; +export * from './get_url'; + export * from './find_test_subject'; export * from './jsdom_svg_mocks'; diff --git a/packages/kbn-ui-framework/jest.config.js b/packages/kbn-ui-framework/jest.config.js new file mode 100644 index 00000000000000..d9cb93d7c069d4 --- /dev/null +++ b/packages/kbn-ui-framework/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-ui-framework'], +}; diff --git a/packages/kbn-utils/jest.config.js b/packages/kbn-utils/jest.config.js new file mode 100644 index 00000000000000..39fb0a8ff1a8c3 --- /dev/null +++ b/packages/kbn-utils/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-utils'], +}; diff --git a/packages/kbn-utils/package.json b/packages/kbn-utils/package.json index a07be96f0d4d8b..0859faa7ed0add 100644 --- a/packages/kbn-utils/package.json +++ b/packages/kbn-utils/package.json @@ -5,7 +5,7 @@ "license": "Apache-2.0", "private": true, "scripts": { - "build": "../../node_modules/.bin/tsc", + "build": "rm -rf target && ../../node_modules/.bin/tsc", "kbn:bootstrap": "yarn build", "kbn:watch": "yarn build --watch" }, diff --git a/packages/kbn-utils/src/index.ts b/packages/kbn-utils/src/index.ts index 7a894d72d5624b..30362112140aa2 100644 --- a/packages/kbn-utils/src/index.ts +++ b/packages/kbn-utils/src/index.ts @@ -20,3 +20,4 @@ export * from './package_json'; export * from './path'; export * from './repo_root'; +export * from './streams'; diff --git a/src/core/server/utils/streams/concat_stream.test.ts b/packages/kbn-utils/src/streams/concat_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/concat_stream.test.ts rename to packages/kbn-utils/src/streams/concat_stream.test.ts diff --git a/src/core/server/utils/streams/concat_stream.ts b/packages/kbn-utils/src/streams/concat_stream.ts similarity index 100% rename from src/core/server/utils/streams/concat_stream.ts rename to packages/kbn-utils/src/streams/concat_stream.ts diff --git a/src/core/server/utils/streams/concat_stream_providers.test.ts b/packages/kbn-utils/src/streams/concat_stream_providers.test.ts similarity index 100% rename from src/core/server/utils/streams/concat_stream_providers.test.ts rename to packages/kbn-utils/src/streams/concat_stream_providers.test.ts diff --git a/src/core/server/utils/streams/concat_stream_providers.ts b/packages/kbn-utils/src/streams/concat_stream_providers.ts similarity index 100% rename from src/core/server/utils/streams/concat_stream_providers.ts rename to packages/kbn-utils/src/streams/concat_stream_providers.ts diff --git a/src/core/server/utils/streams/filter_stream.test.ts b/packages/kbn-utils/src/streams/filter_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/filter_stream.test.ts rename to packages/kbn-utils/src/streams/filter_stream.test.ts diff --git a/src/core/server/utils/streams/filter_stream.ts b/packages/kbn-utils/src/streams/filter_stream.ts similarity index 100% rename from src/core/server/utils/streams/filter_stream.ts rename to packages/kbn-utils/src/streams/filter_stream.ts diff --git a/packages/kbn-es-archiver/src/lib/streams/index.ts b/packages/kbn-utils/src/streams/index.ts similarity index 100% rename from packages/kbn-es-archiver/src/lib/streams/index.ts rename to packages/kbn-utils/src/streams/index.ts diff --git a/src/core/server/utils/streams/intersperse_stream.test.ts b/packages/kbn-utils/src/streams/intersperse_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/intersperse_stream.test.ts rename to packages/kbn-utils/src/streams/intersperse_stream.test.ts diff --git a/src/core/server/utils/streams/intersperse_stream.ts b/packages/kbn-utils/src/streams/intersperse_stream.ts similarity index 100% rename from src/core/server/utils/streams/intersperse_stream.ts rename to packages/kbn-utils/src/streams/intersperse_stream.ts diff --git a/src/core/server/utils/streams/list_stream.test.ts b/packages/kbn-utils/src/streams/list_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/list_stream.test.ts rename to packages/kbn-utils/src/streams/list_stream.test.ts diff --git a/src/core/server/utils/streams/list_stream.ts b/packages/kbn-utils/src/streams/list_stream.ts similarity index 100% rename from src/core/server/utils/streams/list_stream.ts rename to packages/kbn-utils/src/streams/list_stream.ts diff --git a/src/core/server/utils/streams/map_stream.test.ts b/packages/kbn-utils/src/streams/map_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/map_stream.test.ts rename to packages/kbn-utils/src/streams/map_stream.test.ts diff --git a/src/core/server/utils/streams/map_stream.ts b/packages/kbn-utils/src/streams/map_stream.ts similarity index 100% rename from src/core/server/utils/streams/map_stream.ts rename to packages/kbn-utils/src/streams/map_stream.ts diff --git a/src/core/server/utils/streams/promise_from_streams.test.ts b/packages/kbn-utils/src/streams/promise_from_streams.test.ts similarity index 100% rename from src/core/server/utils/streams/promise_from_streams.test.ts rename to packages/kbn-utils/src/streams/promise_from_streams.test.ts diff --git a/src/core/server/utils/streams/promise_from_streams.ts b/packages/kbn-utils/src/streams/promise_from_streams.ts similarity index 100% rename from src/core/server/utils/streams/promise_from_streams.ts rename to packages/kbn-utils/src/streams/promise_from_streams.ts diff --git a/src/core/server/utils/streams/reduce_stream.test.ts b/packages/kbn-utils/src/streams/reduce_stream.test.ts similarity index 97% rename from src/core/server/utils/streams/reduce_stream.test.ts rename to packages/kbn-utils/src/streams/reduce_stream.test.ts index e4a7dc1cef4912..7d823bb8fe1132 100644 --- a/src/core/server/utils/streams/reduce_stream.test.ts +++ b/packages/kbn-utils/src/streams/reduce_stream.test.ts @@ -70,7 +70,7 @@ describe('reduceStream', () => { const errorStub = jest.fn(); reduce$.on('data', dataStub); reduce$.on('error', errorStub); - const endEvent = promiseFromEvent('end', reduce$); + const closeEvent = promiseFromEvent('close', reduce$); reduce$.write(1); reduce$.write(2); @@ -79,7 +79,7 @@ describe('reduceStream', () => { reduce$.write(1000); reduce$.end(); - await endEvent; + await closeEvent; expect(reducer).toHaveBeenCalledTimes(3); expect(dataStub).toHaveBeenCalledTimes(0); expect(errorStub).toHaveBeenCalledTimes(1); diff --git a/src/core/server/utils/streams/reduce_stream.ts b/packages/kbn-utils/src/streams/reduce_stream.ts similarity index 100% rename from src/core/server/utils/streams/reduce_stream.ts rename to packages/kbn-utils/src/streams/reduce_stream.ts diff --git a/src/core/server/utils/streams/replace_stream.test.ts b/packages/kbn-utils/src/streams/replace_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/replace_stream.test.ts rename to packages/kbn-utils/src/streams/replace_stream.test.ts diff --git a/src/core/server/utils/streams/replace_stream.ts b/packages/kbn-utils/src/streams/replace_stream.ts similarity index 100% rename from src/core/server/utils/streams/replace_stream.ts rename to packages/kbn-utils/src/streams/replace_stream.ts diff --git a/src/core/server/utils/streams/split_stream.test.ts b/packages/kbn-utils/src/streams/split_stream.test.ts similarity index 100% rename from src/core/server/utils/streams/split_stream.test.ts rename to packages/kbn-utils/src/streams/split_stream.test.ts diff --git a/src/core/server/utils/streams/split_stream.ts b/packages/kbn-utils/src/streams/split_stream.ts similarity index 100% rename from src/core/server/utils/streams/split_stream.ts rename to packages/kbn-utils/src/streams/split_stream.ts diff --git a/renovate.json5 b/renovate.json5 index 84f8da2a724567..1585627daa880e 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -17,7 +17,7 @@ 'Team:Operations', 'renovate', 'v8.0.0', - 'v7.10.0', + 'v7.11.0', ], major: { labels: [ @@ -25,7 +25,7 @@ 'Team:Operations', 'renovate', 'v8.0.0', - 'v7.10.0', + 'v7.11.0', 'renovate:major', ], }, diff --git a/rfcs/text/0013_saved_object_migrations.md b/rfcs/text/0013_saved_object_migrations.md index 1a0967d110d06a..6e125c28c04c09 100644 --- a/rfcs/text/0013_saved_object_migrations.md +++ b/rfcs/text/0013_saved_object_migrations.md @@ -13,6 +13,7 @@ - [4.2.1 Idempotent migrations performed without coordination](#421-idempotent-migrations-performed-without-coordination) - [4.2.1.1 Restrictions](#4211-restrictions) - [4.2.1.2 Migration algorithm: Cloned index per version](#4212-migration-algorithm-cloned-index-per-version) + - [Known weaknesses:](#known-weaknesses) - [4.2.1.3 Upgrade and rollback procedure](#4213-upgrade-and-rollback-procedure) - [4.2.1.4 Handling documents that belong to a disabled plugin](#4214-handling-documents-that-belong-to-a-disabled-plugin) - [5. Alternatives](#5-alternatives) @@ -192,26 +193,24 @@ id's deterministically with e.g. UUIDv5. ### 4.2.1.2 Migration algorithm: Cloned index per version Note: - The description below assumes the migration algorithm is released in 7.10.0. - So < 7.10.0 will use `.kibana` and >= 7.10.0 will use `.kibana_current`. + So >= 7.10.0 will use the new algorithm. - We refer to the alias and index that outdated nodes use as the source alias and source index. - Every version performs a migration even if mappings or documents aren't outdated. -1. Locate the source index by fetching aliases (including `.kibana` for - versions prior to v7.10.0) +1. Locate the source index by fetching kibana indices: ``` - GET '/_alias/.kibana_current,.kibana_7.10.0,.kibana' + GET '/_indices/.kibana,.kibana_7.10.0' ``` The source index is: - 1. the index the `.kibana_current` alias points to, or if it doesn’t exist, - 2. the index the `.kibana` alias points to, or if it doesn't exist, - 3. the v6.x `.kibana` index + 1. the index the `.kibana` alias points to, or if it doesn't exist, + 2. the v6.x `.kibana` index If none of the aliases exists, this is a new Elasticsearch cluster and no migrations are necessary. Create the `.kibana_7.10.0_001` index with the - following aliases: `.kibana_current` and `.kibana_7.10.0`. + following aliases: `.kibana` and `.kibana_7.10.0`. 2. If the source is a < v6.5 `.kibana` index or < 7.4 `.kibana_task_manager` index prepare the legacy index for a migration: 1. Mark the legacy index as read-only and wait for all in-flight operations to drain (requires https://github.com/elastic/elasticsearch/pull/58094). This prevents any further writes from outdated nodes. Assuming this API is similar to the existing `//_close` API, we expect to receive `"acknowledged" : true` and `"shards_acknowledged" : true`. If all shards don’t acknowledge within the timeout, retry the operation until it succeeds. @@ -235,13 +234,13 @@ Note: atomically so that other Kibana instances will always see either a `.kibana` index or an alias, but never neither. 6. Use the cloned `.kibana_pre6.5.0_001` as the source for the rest of the migration algorithm. -3. If `.kibana_current` and `.kibana_7.10.0` both exists and are pointing to the same index this version's migration has already been completed. +3. If `.kibana` and `.kibana_7.10.0` both exists and are pointing to the same index this version's migration has already been completed. 1. Because the same version can have plugins enabled at any point in time, perform the mappings update in step (6) and migrate outdated documents with step (7). 2. Skip to step (9) to start serving traffic. 4. Fail the migration if: - 1. `.kibana_current` is pointing to an index that belongs to a later version of Kibana .e.g. `.kibana_7.12.0_001` + 1. `.kibana` is pointing to an index that belongs to a later version of Kibana .e.g. `.kibana_7.12.0_001` 2. (Only in 8.x) The source index contains documents that belong to an unknown Saved Object type (from a disabled plugin). Log an error explaining that the plugin that created these documents needs to be enabled again or that these objects should be deleted. See section (4.2.1.4). 5. Mark the source index as read-only and wait for all in-flight operations to drain (requires https://github.com/elastic/elasticsearch/pull/58094). This prevents any further writes from outdated nodes. Assuming this API is similar to the existing `//_close` API, we expect to receive `"acknowledged" : true` and `"shards_acknowledged" : true`. If all shards don’t acknowledge within the timeout, retry the operation until it succeeds. 6. Clone the source index into a new target index which has writes enabled. All nodes on the same version will use the same fixed index name e.g. `.kibana_7.10.0_001`. The `001` postfix isn't used by Kibana, but allows for re-indexing an index should this be required by an Elasticsearch upgrade. E.g. re-index `.kibana_7.10.0_001` into `.kibana_7.10.0_002` and point the `.kibana_7.10.0` alias to `.kibana_7.10.0_002`. @@ -257,24 +256,62 @@ Note: 8. Transform documents by reading batches of outdated documents from the target index then transforming and updating them with optimistic concurrency control. 1. Ignore any version conflict errors. 2. If a document transform throws an exception, add the document to a failure list and continue trying to transform all other documents. If any failures occured, log the complete list of documents that failed to transform. Fail the migration. -9. Mark the migration as complete by doing a single atomic operation (requires https://github.com/elastic/elasticsearch/pull/58100) that: - 3. Checks that `.kibana_current` alias is still pointing to the source index - 4. Points the `.kibana_7.10.0` and `.kibana_current` aliases to the target index. - 5. If this fails with a "required alias [.kibana_current] does not exist" error fetch `.kibana_current` again: - 1. If `.kibana_current` is _not_ pointing to our target index fail the migration. - 2. If `.kibana_current` is pointing to our target index the migration has succeeded and we can proceed to step (9). -10. Start serving traffic. - -This algorithm shares a weakness with our existing migration algorithm -(since v7.4). When the task manager index gets reindexed a reindex script is -applied. Because we delete the original task manager index there is no way to -rollback a failed task manager migration without a snapshot. +9. Mark the migration as complete. This is done as a single atomic + operation (requires https://github.com/elastic/elasticsearch/pull/58100) + to guarantees when multiple versions of Kibana are performing the + migration in parallel, only one version will win. E.g. if 7.11 and 7.12 + are started in parallel and migrate from a 7.9 index, either 7.11 or 7.12 + should succeed and accept writes, but not both. + 3. Checks that `.kibana` alias is still pointing to the source index + 4. Points the `.kibana_7.10.0` and `.kibana` aliases to the target index. + 5. If this fails with a "required alias [.kibana] does not exist" error fetch `.kibana` again: + 1. If `.kibana` is _not_ pointing to our target index fail the migration. + 2. If `.kibana` is pointing to our target index the migration has succeeded and we can proceed to step (10). +10. Start serving traffic. All saved object reads/writes happen through the + version-specific alias `.kibana_7.10.0`. Together with the limitations, this algorithm ensures that migrations are idempotent. If two nodes are started simultaneously, both of them will start transforming documents in that version's target index, but because migrations are idempotent, it doesn’t matter which node’s writes win. +#### Known weaknesses: +(Also present in our existing migration algorithm since v7.4) +When the task manager index gets reindexed a reindex script is applied. +Because we delete the original task manager index there is no way to rollback +a failed task manager migration without a snapshot. Although losing the task +manager data has a fairly low impact. + +(Also present in our existing migration algorithm since v6.5) +If the outdated instance isn't shutdown before starting the migration, the +following data-loss scenario is possible: +1. Upgrade a 7.9 index without shutting down the 7.9 nodes +2. Kibana v7.10 performs a migration and after completing points `.kibana` + alias to `.kibana_7.11.0_001` +3. Kibana v7.9 writes unmigrated documents into `.kibana`. +4. Kibana v7.10 performs a query based on the updated mappings of documents so + results potentially don't match the acknowledged write from step (3). + +Note: + - Data loss won't occur if both nodes have the updated migration algorithm + proposed in this RFC. It is only when one of the nodes use the existing + algorithm that data loss is possible. + - Once v7.10 is restarted it will transform any outdated documents making + these visible to queries again. + +It is possible to work around this weakness by introducing a new alias such as +`.kibana_current` so that after a migration the `.kibana` alias will continue +to point to the outdated index. However, we decided to keep using the +`.kibana` alias despite this weakness for the following reasons: + - Users might rely on `.kibana` alias for snapshots, so if this alias no + longer points to the latest index their snapshots would no longer backup + kibana's latest data. + - Introducing another alias introduces complexity for users and support. + The steps to diagnose, fix or rollback a failed migration will deviate + depending on the 7.x version of Kibana you are using. + - The existing Kibana documentation clearly states that outdated nodes should + be shutdown, this scenario has never been supported by Kibana. +
In the future, this algorithm could enable (2.6) "read-only functionality during the downtime window" but this is outside of the scope of this RFC. @@ -303,12 +340,9 @@ To rollback to a previous version of Kibana without a snapshot: (Assumes the migration to 7.11.0 failed) 1. Shutdown all Kibana nodes. 2. Remove the index created by the failed Kibana migration by using the version-specific alias e.g. `DELETE /.kibana_7.11.0` -3. Identify the rollback index: - 1. If rolling back to a Kibana version < 7.10.0 use `.kibana` - 2. If rolling back to a Kibana version >= 7.10.0 use the version alias of the Kibana version you wish to rollback to e.g. `.kibana_7.10.0` -4. Point the `.kibana_current` alias to the rollback index. -5. Remove the write block from the rollback index. -6. Start the rollback Kibana nodes. All running Kibana nodes should be on the same rollback version, have the same plugins enabled and use the same configuration. +3. Remove the write block from the rollback index using the `.kibana` alias + `PUT /.kibana/_settings {"index.blocks.write": false}` +4. Start the rollback Kibana nodes. All running Kibana nodes should be on the same rollback version, have the same plugins enabled and use the same configuration. ### 4.2.1.4 Handling documents that belong to a disabled plugin It is possible for a plugin to create documents in one version of Kibana, but then when upgrading Kibana to a newer version, that plugin is disabled. Because the plugin is disabled it cannot register it's Saved Objects type including the mappings or any migration transformation functions. These "orphan" documents could cause future problems: @@ -378,7 +412,7 @@ There are several approaches we could take to dealing with these orphan document deterministically perform the delete and re-clone operation without coordination. -5. Transform outdated documents (step 7) on every startup +5. Transform outdated documents (step 8) on every startup Advantages: - Outdated documents belonging to disabled plugins will be upgraded as soon as the plugin is enabled again. diff --git a/scripts/check_jest_configs.js b/scripts/check_jest_configs.js new file mode 100644 index 00000000000000..a7a520f433bf9b --- /dev/null +++ b/scripts/check_jest_configs.js @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +require('../src/setup_node_env'); +require('@kbn/test').runCheckJestConfigsCli(); diff --git a/scripts/find_plugin_circular_deps.js b/scripts/find_plugin_circular_deps.js deleted file mode 100644 index 6b0661cb841b47..00000000000000 --- a/scripts/find_plugin_circular_deps.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -require('../src/setup_node_env'); -require('../src/dev/run_find_plugin_circular_deps'); diff --git a/scripts/find_plugins_with_circular_deps.js b/scripts/find_plugins_with_circular_deps.js new file mode 100644 index 00000000000000..138fec33fd6b40 --- /dev/null +++ b/scripts/find_plugins_with_circular_deps.js @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +require('../src/setup_node_env'); +require('../src/dev/run_find_plugins_with_circular_deps'); diff --git a/scripts/jest.js b/scripts/jest.js index c252056de766ba..90f8da10f4c902 100755 --- a/scripts/jest.js +++ b/scripts/jest.js @@ -29,8 +29,15 @@ // // See all cli options in https://facebook.github.io/jest/docs/cli.html -var resolve = require('path').resolve; -process.argv.push('--config', resolve(__dirname, '../src/dev/jest/config.js')); +if (process.argv.indexOf('--config') === -1) { + // append correct jest.config if none is provided + var configPath = require('path').resolve(__dirname, '../jest.config.oss.js'); + process.argv.push('--config', configPath); + console.log('Running Jest with --config', configPath); +} -require('../src/setup_node_env'); -require('../src/dev/jest/cli'); +if (process.env.NODE_ENV == null) { + process.env.NODE_ENV = 'test'; +} + +require('jest').run(); diff --git a/scripts/jest_integration.js b/scripts/jest_integration.js index 7da1436f5583c3..f07d28939ef0c4 100755 --- a/scripts/jest_integration.js +++ b/scripts/jest_integration.js @@ -29,9 +29,17 @@ // // See all cli options in https://facebook.github.io/jest/docs/cli.html -var resolve = require('path').resolve; -process.argv.push('--config', resolve(__dirname, '../src/dev/jest/config.integration.js')); process.argv.push('--runInBand'); -require('../src/setup_node_env'); -require('../src/dev/jest/cli'); +if (process.argv.indexOf('--config') === -1) { + // append correct jest.config if none is provided + var configPath = require('path').resolve(__dirname, '../jest.config.integration.js'); + process.argv.push('--config', configPath); + console.log('Running Jest with --config', configPath); +} + +if (process.env.NODE_ENV == null) { + process.env.NODE_ENV = 'test'; +} + +require('jest').run(); diff --git a/src/apm.js b/src/apm.js index bde37fa006c610..4f5fe29cbb5faa 100644 --- a/src/apm.js +++ b/src/apm.js @@ -30,10 +30,6 @@ let apmConfig; const isKibanaDistributable = Boolean(build && build.distributable === true); module.exports = function (serviceName = name) { - if (process.env.kbnWorkerType === 'optmzr') { - return; - } - apmConfig = loadConfiguration(process.argv, ROOT_DIR, isKibanaDistributable); const conf = apmConfig.getConfig(serviceName); const apm = require('elastic-apm-node'); diff --git a/src/cli/cli.js b/src/cli/cli.js index 50a8d4c7f7f012..2c222f4961859f 100644 --- a/src/cli/cli.js +++ b/src/cli/cli.js @@ -22,9 +22,7 @@ import { pkg } from '../core/server/utils'; import Command from './command'; import serveCommand from './serve/serve'; -const argv = process.env.kbnWorkerArgv - ? JSON.parse(process.env.kbnWorkerArgv) - : process.argv.slice(); +const argv = process.argv.slice(); const program = new Command('bin/kibana'); program diff --git a/src/cli/cluster/binder.ts b/src/cli/cluster/binder.ts deleted file mode 100644 index 55577e3a69e2b7..00000000000000 --- a/src/cli/cluster/binder.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export interface Emitter { - on: (...args: any[]) => void; - off: (...args: any[]) => void; - addListener: Emitter['on']; - removeListener: Emitter['off']; -} - -export class BinderBase { - private disposal: Array<() => void> = []; - - public on(emitter: Emitter, ...args: any[]) { - const on = emitter.on || emitter.addListener; - const off = emitter.off || emitter.removeListener; - - on.apply(emitter, args); - this.disposal.push(() => off.apply(emitter, args)); - } - - public destroy() { - const destroyers = this.disposal; - this.disposal = []; - destroyers.forEach((fn) => fn()); - } -} diff --git a/src/cli/cluster/binder_for.ts b/src/cli/cluster/binder_for.ts deleted file mode 100644 index e3eabc8d91fa50..00000000000000 --- a/src/cli/cluster/binder_for.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { BinderBase, Emitter } from './binder'; - -export class BinderFor extends BinderBase { - constructor(private readonly emitter: Emitter) { - super(); - } - - public on(...args: any[]) { - super.on(this.emitter, ...args); - } -} diff --git a/src/cli/cluster/cluster.mock.ts b/src/cli/cluster/cluster.mock.ts deleted file mode 100644 index 332f8aad53ba14..00000000000000 --- a/src/cli/cluster/cluster.mock.ts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* eslint-env jest */ - -// eslint-disable-next-line max-classes-per-file -import EventEmitter from 'events'; -import { assign, random } from 'lodash'; -import { delay } from 'bluebird'; - -class MockClusterFork extends EventEmitter { - public exitCode = 0; - - constructor(cluster: MockCluster) { - super(); - - let dead = true; - - function wait() { - return delay(random(10, 250)); - } - - assign(this, { - process: { - kill: jest.fn(() => { - (async () => { - await wait(); - this.emit('disconnect'); - await wait(); - dead = true; - this.emit('exit'); - cluster.emit('exit', this, this.exitCode || 0); - })(); - }), - }, - isDead: jest.fn(() => dead), - send: jest.fn(), - }); - - jest.spyOn(this as EventEmitter, 'on'); - jest.spyOn(this as EventEmitter, 'off'); - jest.spyOn(this as EventEmitter, 'emit'); - - (async () => { - await wait(); - dead = false; - this.emit('online'); - })(); - } -} - -export class MockCluster extends EventEmitter { - fork = jest.fn(() => new MockClusterFork(this)); - setupMaster = jest.fn(); -} diff --git a/src/cli/cluster/cluster_manager.test.mocks.ts b/src/cli/cluster/cluster_manager.test.mocks.ts deleted file mode 100644 index 53984fd12cbf17..00000000000000 --- a/src/cli/cluster/cluster_manager.test.mocks.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { MockCluster } from './cluster.mock'; -export const mockCluster = new MockCluster(); -jest.mock('cluster', () => mockCluster); diff --git a/src/cli/cluster/cluster_manager.test.ts b/src/cli/cluster/cluster_manager.test.ts deleted file mode 100644 index a8e139533d397c..00000000000000 --- a/src/cli/cluster/cluster_manager.test.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import * as Rx from 'rxjs'; - -import { mockCluster } from './cluster_manager.test.mocks'; - -jest.mock('readline', () => ({ - createInterface: jest.fn(() => ({ - on: jest.fn(), - prompt: jest.fn(), - setPrompt: jest.fn(), - })), -})); - -const mockConfig: any = {}; - -import { sample } from 'lodash'; - -import { ClusterManager, SomeCliArgs } from './cluster_manager'; -import { Worker } from './worker'; - -const CLI_ARGS: SomeCliArgs = { - disableOptimizer: true, - open: false, - oss: false, - quiet: false, - repl: false, - runExamples: false, - silent: false, - watch: false, - cache: false, - dist: false, -}; - -describe('CLI cluster manager', () => { - beforeEach(() => { - mockCluster.fork.mockImplementation(() => { - return { - process: { - kill: jest.fn(), - }, - isDead: jest.fn().mockReturnValue(false), - off: jest.fn(), - on: jest.fn(), - send: jest.fn(), - } as any; - }); - }); - - afterEach(() => { - mockCluster.fork.mockReset(); - }); - - test('has two workers', () => { - const manager = new ClusterManager(CLI_ARGS, mockConfig); - - expect(manager.workers).toHaveLength(1); - for (const worker of manager.workers) { - expect(worker).toBeInstanceOf(Worker); - } - - expect(manager.server).toBeInstanceOf(Worker); - }); - - test('delivers broadcast messages to other workers', () => { - const manager = new ClusterManager(CLI_ARGS, mockConfig); - - for (const worker of manager.workers) { - Worker.prototype.start.call(worker); // bypass the debounced start method - worker.onOnline(); - } - - const football = {}; - const messenger = sample(manager.workers) as any; - - messenger.emit('broadcast', football); - for (const worker of manager.workers) { - if (worker === messenger) { - expect(worker.fork!.send).not.toHaveBeenCalled(); - } else { - expect(worker.fork!.send).toHaveBeenCalledTimes(1); - expect(worker.fork!.send).toHaveBeenCalledWith(football); - } - } - }); - - describe('interaction with BasePathProxy', () => { - test('correctly configures `BasePathProxy`.', async () => { - const basePathProxyMock = { start: jest.fn() }; - - new ClusterManager(CLI_ARGS, mockConfig, basePathProxyMock as any); - - expect(basePathProxyMock.start).toHaveBeenCalledWith({ - shouldRedirectFromOldBasePath: expect.any(Function), - delayUntil: expect.any(Function), - }); - }); - - describe('basePathProxy config', () => { - let clusterManager: ClusterManager; - let shouldRedirectFromOldBasePath: (path: string) => boolean; - let delayUntil: () => Rx.Observable; - - beforeEach(async () => { - const basePathProxyMock = { start: jest.fn() }; - clusterManager = new ClusterManager(CLI_ARGS, mockConfig, basePathProxyMock as any); - [[{ delayUntil, shouldRedirectFromOldBasePath }]] = basePathProxyMock.start.mock.calls; - }); - - describe('shouldRedirectFromOldBasePath()', () => { - test('returns `false` for unknown paths.', () => { - expect(shouldRedirectFromOldBasePath('')).toBe(false); - expect(shouldRedirectFromOldBasePath('some-path/')).toBe(false); - expect(shouldRedirectFromOldBasePath('some-other-path')).toBe(false); - }); - - test('returns `true` for `app` and other known paths.', () => { - expect(shouldRedirectFromOldBasePath('app/')).toBe(true); - expect(shouldRedirectFromOldBasePath('login')).toBe(true); - expect(shouldRedirectFromOldBasePath('logout')).toBe(true); - expect(shouldRedirectFromOldBasePath('status')).toBe(true); - }); - }); - - describe('delayUntil()', () => { - test('returns an observable which emits when the server and kbnOptimizer are ready and completes', async () => { - clusterManager.serverReady$.next(false); - clusterManager.kbnOptimizerReady$.next(false); - - const events: Array = []; - delayUntil().subscribe( - () => events.push('next'), - (error) => events.push(error), - () => events.push('complete') - ); - - clusterManager.serverReady$.next(true); - expect(events).toEqual([]); - - clusterManager.kbnOptimizerReady$.next(true); - expect(events).toEqual(['next', 'complete']); - }); - }); - }); - }); -}); diff --git a/src/cli/cluster/cluster_manager.ts b/src/cli/cluster/cluster_manager.ts deleted file mode 100644 index 931650a67687cf..00000000000000 --- a/src/cli/cluster/cluster_manager.ts +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { resolve } from 'path'; -import { format as formatUrl } from 'url'; -import Fs from 'fs'; - -import opn from 'opn'; -import { REPO_ROOT } from '@kbn/utils'; -import { FSWatcher } from 'chokidar'; -import * as Rx from 'rxjs'; -import { startWith, mapTo, filter, map, take, tap } from 'rxjs/operators'; - -import { runKbnOptimizer } from './run_kbn_optimizer'; -import { CliArgs } from '../../core/server/config'; -import { LegacyConfig } from '../../core/server/legacy'; -import { BasePathProxyServer } from '../../core/server/http'; - -import { Log } from './log'; -import { Worker } from './worker'; - -process.env.kbnWorkerType = 'managr'; - -export type SomeCliArgs = Pick< - CliArgs, - | 'quiet' - | 'silent' - | 'repl' - | 'disableOptimizer' - | 'open' - | 'watch' - | 'oss' - | 'runExamples' - | 'cache' - | 'dist' ->; - -const firstAllTrue = (...sources: Array>) => - Rx.combineLatest(...sources).pipe( - filter((values) => values.every((v) => v === true)), - take(1), - mapTo(undefined) - ); - -export class ClusterManager { - public server: Worker; - public workers: Worker[]; - - private watcher: FSWatcher | null = null; - private basePathProxy: BasePathProxyServer | undefined; - private log: Log; - private addedCount = 0; - private inReplMode: boolean; - - // exposed for testing - public readonly serverReady$ = new Rx.ReplaySubject(1); - // exposed for testing - public readonly kbnOptimizerReady$ = new Rx.ReplaySubject(1); - - constructor(opts: SomeCliArgs, config: LegacyConfig, basePathProxy?: BasePathProxyServer) { - this.log = new Log(opts.quiet, opts.silent); - this.inReplMode = !!opts.repl; - this.basePathProxy = basePathProxy; - - // run @kbn/optimizer and write it's state to kbnOptimizerReady$ - if (opts.disableOptimizer) { - this.kbnOptimizerReady$.next(true); - } else { - runKbnOptimizer(opts, config) - .pipe( - map(({ state }) => state.phase === 'success' || state.phase === 'issue'), - tap({ - error: (error) => { - this.log.bad('@kbn/optimizer error', error.stack); - process.exit(1); - }, - }) - ) - .subscribe(this.kbnOptimizerReady$); - } - - const serverArgv = []; - - if (this.basePathProxy) { - serverArgv.push( - `--server.port=${this.basePathProxy.targetPort}`, - `--server.basePath=${this.basePathProxy.basePath}`, - '--server.rewriteBasePath=true' - ); - } - - this.workers = [ - (this.server = new Worker({ - type: 'server', - log: this.log, - argv: serverArgv, - apmServiceName: 'kibana', - })), - ]; - - // write server status to the serverReady$ subject - Rx.merge( - Rx.fromEvent(this.server, 'starting').pipe(mapTo(false)), - Rx.fromEvent(this.server, 'listening').pipe(mapTo(true)), - Rx.fromEvent(this.server, 'crashed').pipe(mapTo(true)) - ) - .pipe(startWith(this.server.listening || this.server.crashed)) - .subscribe(this.serverReady$); - - // broker messages between workers - this.workers.forEach((worker) => { - worker.on('broadcast', (msg) => { - this.workers.forEach((to) => { - if (to !== worker && to.online) { - to.fork!.send(msg); - } - }); - }); - }); - - // When receive that event from server worker - // forward a reloadLoggingConfig message to master - // and all workers. This is only used by LogRotator service - // when the cluster mode is enabled - this.server.on('reloadLoggingConfigFromServerWorker', () => { - process.emit('message' as any, { reloadLoggingConfig: true } as any); - - this.workers.forEach((worker) => { - worker.fork!.send({ reloadLoggingConfig: true }); - }); - }); - - if (opts.open) { - this.setupOpen( - formatUrl({ - protocol: config.get('server.ssl.enabled') ? 'https' : 'http', - hostname: config.get('server.host'), - port: config.get('server.port'), - pathname: this.basePathProxy ? this.basePathProxy.basePath : '', - }) - ); - } - - if (opts.watch) { - const pluginPaths = config.get('plugins.paths'); - const scanDirs = [ - ...config.get('plugins.scanDirs'), - resolve(REPO_ROOT, 'src/plugins'), - resolve(REPO_ROOT, 'x-pack/plugins'), - ]; - const extraPaths = [...pluginPaths, ...scanDirs]; - - const pluginInternalDirsIgnore = scanDirs - .map((scanDir) => resolve(scanDir, '*')) - .concat(pluginPaths) - .reduce( - (acc, path) => - acc.concat( - resolve(path, 'test/**'), - resolve(path, 'build/**'), - resolve(path, 'target/**'), - resolve(path, 'scripts/**'), - resolve(path, 'docs/**') - ), - [] as string[] - ); - - this.setupWatching(extraPaths, pluginInternalDirsIgnore); - } else this.startCluster(); - } - - startCluster() { - this.setupManualRestart(); - for (const worker of this.workers) { - worker.start(); - } - if (this.basePathProxy) { - this.basePathProxy.start({ - delayUntil: () => firstAllTrue(this.serverReady$, this.kbnOptimizerReady$), - - shouldRedirectFromOldBasePath: (path: string) => { - // strip `s/{id}` prefix when checking for need to redirect - if (path.startsWith('s/')) { - path = path.split('/').slice(2).join('/'); - } - - const isApp = path.startsWith('app/'); - const isKnownShortPath = ['login', 'logout', 'status'].includes(path); - return isApp || isKnownShortPath; - }, - }); - } - } - - setupOpen(openUrl: string) { - firstAllTrue(this.serverReady$, this.kbnOptimizerReady$) - .toPromise() - .then(() => { - opn(openUrl); - }); - } - - setupWatching(extraPaths: string[], pluginInternalDirsIgnore: string[]) { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const chokidar = require('chokidar'); - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { fromRoot } = require('../../core/server/utils'); - - const watchPaths = Array.from( - new Set( - [ - fromRoot('src/core'), - fromRoot('src/legacy/server'), - fromRoot('src/legacy/ui'), - fromRoot('src/legacy/utils'), - fromRoot('config'), - ...extraPaths, - ].map((path) => resolve(path)) - ) - ); - - for (const watchPath of watchPaths) { - if (!Fs.existsSync(fromRoot(watchPath))) { - throw new Error( - `A watch directory [${watchPath}] does not exist, which will cause chokidar to fail. Either make sure the directory exists or remove it as a watch source in the ClusterManger` - ); - } - } - - const ignorePaths = [ - /[\\\/](\..*|node_modules|bower_components|target|public|__[a-z0-9_]+__|coverage)([\\\/]|$)/, - /\.test\.(js|tsx?)$/, - /\.md$/, - /debug\.log$/, - ...pluginInternalDirsIgnore, - fromRoot('x-pack/plugins/reporting/chromium'), - fromRoot('x-pack/plugins/security_solution/cypress'), - fromRoot('x-pack/plugins/apm/e2e'), - fromRoot('x-pack/plugins/apm/scripts'), - fromRoot('x-pack/plugins/canvas/canvas_plugin_src'), // prevents server from restarting twice for Canvas plugin changes, - fromRoot('x-pack/plugins/case/server/scripts'), - fromRoot('x-pack/plugins/lists/scripts'), - fromRoot('x-pack/plugins/lists/server/scripts'), - fromRoot('x-pack/plugins/security_solution/scripts'), - fromRoot('x-pack/plugins/security_solution/server/lib/detection_engine/scripts'), - ]; - - this.watcher = chokidar.watch(watchPaths, { - cwd: fromRoot('.'), - ignored: ignorePaths, - }) as FSWatcher; - - this.watcher.on('add', this.onWatcherAdd); - this.watcher.on('error', this.onWatcherError); - this.watcher.once('ready', () => { - // start sending changes to workers - this.watcher!.removeListener('add', this.onWatcherAdd); - this.watcher!.on('all', this.onWatcherChange); - - this.log.good('watching for changes', `(${this.addedCount} files)`); - this.startCluster(); - }); - } - - setupManualRestart() { - // If we're in REPL mode, the user can use the REPL to manually restart. - // The setupManualRestart method interferes with stdin/stdout, in a way - // that negatively affects the REPL. - if (this.inReplMode) { - return; - } - // eslint-disable-next-line @typescript-eslint/no-var-requires - const readline = require('readline'); - const rl = readline.createInterface(process.stdin, process.stdout); - - let nls = 0; - const clear = () => (nls = 0); - - let clearTimer: number | undefined; - const clearSoon = () => { - clearSoon.cancel(); - clearTimer = setTimeout(() => { - clearTimer = undefined; - clear(); - }); - }; - - clearSoon.cancel = () => { - clearTimeout(clearTimer); - clearTimer = undefined; - }; - - rl.setPrompt(''); - rl.prompt(); - - rl.on('line', () => { - nls = nls + 1; - - if (nls >= 2) { - clearSoon.cancel(); - clear(); - this.server.start(); - } else { - clearSoon(); - } - - rl.prompt(); - }); - - rl.on('SIGINT', () => { - rl.pause(); - process.kill(process.pid, 'SIGINT'); - }); - } - - onWatcherAdd = () => { - this.addedCount += 1; - }; - - onWatcherChange = (e: any, path: string) => { - for (const worker of this.workers) { - worker.onChange(path); - } - }; - - onWatcherError = (err: any) => { - this.log.bad('failed to watch files!\n', err.stack); - process.exit(1); - }; -} diff --git a/src/cli/cluster/log.ts b/src/cli/cluster/log.ts deleted file mode 100644 index af73059c0758e6..00000000000000 --- a/src/cli/cluster/log.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import Chalk from 'chalk'; - -export class Log { - constructor(private readonly quiet: boolean, private readonly silent: boolean) {} - - good(label: string, ...args: any[]) { - if (this.quiet || this.silent) { - return; - } - - // eslint-disable-next-line no-console - console.log(Chalk.black.bgGreen(` ${label.trim()} `), ...args); - } - - warn(label: string, ...args: any[]) { - if (this.quiet || this.silent) { - return; - } - - // eslint-disable-next-line no-console - console.log(Chalk.black.bgYellow(` ${label.trim()} `), ...args); - } - - bad(label: string, ...args: any[]) { - if (this.silent) { - return; - } - - // eslint-disable-next-line no-console - console.log(Chalk.white.bgRed(` ${label.trim()} `), ...args); - } - - write(label: string, ...args: any[]) { - // eslint-disable-next-line no-console - console.log(` ${label.trim()} `, ...args); - } -} diff --git a/src/cli/cluster/run_kbn_optimizer.ts b/src/cli/cluster/run_kbn_optimizer.ts deleted file mode 100644 index 8196cad4a99c73..00000000000000 --- a/src/cli/cluster/run_kbn_optimizer.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import Chalk from 'chalk'; -import moment from 'moment'; -import { REPO_ROOT } from '@kbn/utils'; -import { - ToolingLog, - pickLevelFromFlags, - ToolingLogTextWriter, - parseLogLevel, -} from '@kbn/dev-utils'; -import { runOptimizer, OptimizerConfig, logOptimizerState } from '@kbn/optimizer'; - -import { CliArgs } from '../../core/server/config'; -import { LegacyConfig } from '../../core/server/legacy'; - -type SomeCliArgs = Pick; - -export function runKbnOptimizer(opts: SomeCliArgs, config: LegacyConfig) { - const optimizerConfig = OptimizerConfig.create({ - repoRoot: REPO_ROOT, - watch: !!opts.watch, - includeCoreBundle: true, - cache: !!opts.cache, - dist: !!opts.dist, - oss: !!opts.oss, - examples: !!opts.runExamples, - pluginPaths: config.get('plugins.paths'), - }); - - const dim = Chalk.dim('np bld'); - const name = Chalk.magentaBright('@kbn/optimizer'); - const time = () => moment().format('HH:mm:ss.SSS'); - const level = (msgType: string) => { - switch (msgType) { - case 'info': - return Chalk.green(msgType); - case 'success': - return Chalk.cyan(msgType); - case 'debug': - return Chalk.gray(msgType); - default: - return msgType; - } - }; - const { flags: levelFlags } = parseLogLevel(pickLevelFromFlags(opts)); - const toolingLog = new ToolingLog(); - const has = (obj: T, x: any): x is keyof T => obj.hasOwnProperty(x); - - toolingLog.setWriters([ - { - write(msg) { - if (has(levelFlags, msg.type) && !levelFlags[msg.type]) { - return false; - } - - ToolingLogTextWriter.write( - process.stdout, - `${dim} log [${time()}] [${level(msg.type)}][${name}] `, - msg - ); - return true; - }, - }, - ]); - - return runOptimizer(optimizerConfig).pipe(logOptimizerState(toolingLog, optimizerConfig)); -} diff --git a/src/cli/cluster/worker.test.ts b/src/cli/cluster/worker.test.ts deleted file mode 100644 index e775f71442a771..00000000000000 --- a/src/cli/cluster/worker.test.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { mockCluster } from './cluster_manager.test.mocks'; - -import { Worker, ClusterWorker } from './worker'; - -import { Log } from './log'; - -const workersToShutdown: Worker[] = []; - -function assertListenerAdded(emitter: NodeJS.EventEmitter, event: any) { - expect(emitter.on).toHaveBeenCalledWith(event, expect.any(Function)); -} - -function assertListenerRemoved(emitter: NodeJS.EventEmitter, event: any) { - const [, onEventListener] = (emitter.on as jest.Mock).mock.calls.find(([eventName]) => { - return eventName === event; - }); - - expect(emitter.off).toHaveBeenCalledWith(event, onEventListener); -} - -function setup(opts = {}) { - const worker = new Worker({ - log: new Log(false, true), - ...opts, - baseArgv: [], - type: 'test', - }); - - workersToShutdown.push(worker); - return worker; -} - -describe('CLI cluster manager', () => { - afterEach(async () => { - while (workersToShutdown.length > 0) { - const worker = workersToShutdown.pop() as Worker; - // If `fork` exists we should set `exitCode` to the non-zero value to - // prevent worker from auto restart. - if (worker.fork) { - worker.fork.exitCode = 1; - } - - await worker.shutdown(); - } - - mockCluster.fork.mockClear(); - }); - - describe('#onChange', () => { - describe('opts.watch = true', () => { - test('restarts the fork', () => { - const worker = setup({ watch: true }); - jest.spyOn(worker, 'start').mockResolvedValue(); - worker.onChange('/some/path'); - expect(worker.changes).toEqual(['/some/path']); - expect(worker.start).toHaveBeenCalledTimes(1); - }); - }); - - describe('opts.watch = false', () => { - test('does not restart the fork', () => { - const worker = setup({ watch: false }); - jest.spyOn(worker, 'start').mockResolvedValue(); - worker.onChange('/some/path'); - expect(worker.changes).toEqual([]); - expect(worker.start).not.toHaveBeenCalled(); - }); - }); - }); - - describe('#shutdown', () => { - describe('after starting()', () => { - test('kills the worker and unbinds from message, online, and disconnect events', async () => { - const worker = setup(); - await worker.start(); - expect(worker).toHaveProperty('online', true); - const fork = worker.fork as ClusterWorker; - expect(fork!.process.kill).not.toHaveBeenCalled(); - assertListenerAdded(fork, 'message'); - assertListenerAdded(fork, 'online'); - assertListenerAdded(fork, 'disconnect'); - await worker.shutdown(); - expect(fork!.process.kill).toHaveBeenCalledTimes(1); - assertListenerRemoved(fork, 'message'); - assertListenerRemoved(fork, 'online'); - assertListenerRemoved(fork, 'disconnect'); - }); - }); - - describe('before being started', () => { - test('does nothing', () => { - const worker = setup(); - worker.shutdown(); - }); - }); - }); - - describe('#parseIncomingMessage()', () => { - describe('on a started worker', () => { - test(`is bound to fork's message event`, async () => { - const worker = setup(); - await worker.start(); - expect(worker.fork!.on).toHaveBeenCalledWith('message', expect.any(Function)); - }); - }); - - describe('do after', () => { - test('ignores non-array messages', () => { - const worker = setup(); - worker.parseIncomingMessage('some string thing'); - worker.parseIncomingMessage(0); - worker.parseIncomingMessage(null); - worker.parseIncomingMessage(undefined); - worker.parseIncomingMessage({ like: 'an object' }); - worker.parseIncomingMessage(/weird/); - }); - - test('calls #onMessage with message parts', () => { - const worker = setup(); - jest.spyOn(worker, 'onMessage').mockImplementation(() => {}); - worker.parseIncomingMessage(['event', 'some-data']); - expect(worker.onMessage).toHaveBeenCalledWith('event', 'some-data'); - }); - }); - }); - - describe('#onMessage', () => { - describe('when sent WORKER_BROADCAST message', () => { - test('emits the data to be broadcasted', () => { - const worker = setup(); - const data = {}; - jest.spyOn(worker, 'emit').mockImplementation(() => true); - worker.onMessage('WORKER_BROADCAST', data); - expect(worker.emit).toHaveBeenCalledWith('broadcast', data); - }); - }); - - describe('when sent WORKER_LISTENING message', () => { - test('sets the listening flag and emits the listening event', () => { - const worker = setup(); - jest.spyOn(worker, 'emit').mockImplementation(() => true); - expect(worker).toHaveProperty('listening', false); - worker.onMessage('WORKER_LISTENING'); - expect(worker).toHaveProperty('listening', true); - expect(worker.emit).toHaveBeenCalledWith('listening'); - }); - }); - - describe('when passed an unknown message', () => { - test('does nothing', () => { - const worker = setup(); - worker.onMessage('asdlfkajsdfahsdfiohuasdofihsdoif'); - }); - }); - }); - - describe('#start', () => { - describe('when not started', () => { - test('creates a fork and waits for it to come online', async () => { - const worker = setup(); - - jest.spyOn(worker, 'on'); - - await worker.start(); - - expect(mockCluster.fork).toHaveBeenCalledTimes(1); - expect(worker.on).toHaveBeenCalledWith('fork:online', expect.any(Function)); - }); - - test('listens for cluster and process "exit" events', async () => { - const worker = setup(); - - jest.spyOn(process, 'on'); - jest.spyOn(mockCluster, 'on'); - - await worker.start(); - - expect(mockCluster.on).toHaveBeenCalledTimes(1); - expect(mockCluster.on).toHaveBeenCalledWith('exit', expect.any(Function)); - expect(process.on).toHaveBeenCalledTimes(1); - expect(process.on).toHaveBeenCalledWith('exit', expect.any(Function)); - }); - }); - - describe('when already started', () => { - test('calls shutdown and waits for the graceful shutdown to cause a restart', async () => { - const worker = setup(); - await worker.start(); - - jest.spyOn(worker, 'shutdown'); - jest.spyOn(worker, 'on'); - - worker.start(); - - expect(worker.shutdown).toHaveBeenCalledTimes(1); - expect(worker.on).toHaveBeenCalledWith('online', expect.any(Function)); - }); - }); - }); -}); diff --git a/src/cli/cluster/worker.ts b/src/cli/cluster/worker.ts deleted file mode 100644 index d28065765070b5..00000000000000 --- a/src/cli/cluster/worker.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import _ from 'lodash'; -import cluster from 'cluster'; -import { EventEmitter } from 'events'; - -import { BinderFor } from './binder_for'; -import { fromRoot } from '../../core/server/utils'; - -const cliPath = fromRoot('src/cli/dev'); -const baseArgs = _.difference(process.argv.slice(2), ['--no-watch']); -const baseArgv = [process.execPath, cliPath].concat(baseArgs); - -export type ClusterWorker = cluster.Worker & { - killed: boolean; - exitCode?: number; -}; - -cluster.setupMaster({ - exec: cliPath, - silent: false, -}); - -const dead = (fork: ClusterWorker) => { - return fork.isDead() || fork.killed; -}; - -interface WorkerOptions { - type: string; - log: any; // src/cli/log.js - argv?: string[]; - title?: string; - watch?: boolean; - baseArgv?: string[]; - apmServiceName?: string; -} - -export class Worker extends EventEmitter { - private readonly clusterBinder: BinderFor; - private readonly processBinder: BinderFor; - - private type: string; - private title: string; - private log: any; - private forkBinder: BinderFor | null = null; - private startCount: number; - private watch: boolean; - private env: Record; - - public fork: ClusterWorker | null = null; - public changes: string[]; - - // status flags - public online = false; // the fork can accept messages - public listening = false; // the fork is listening for connections - public crashed = false; // the fork crashed - - constructor(opts: WorkerOptions) { - super(); - - this.log = opts.log; - this.type = opts.type; - this.title = opts.title || opts.type; - this.watch = opts.watch !== false; - this.startCount = 0; - - this.changes = []; - - this.clusterBinder = new BinderFor(cluster as any); // lack the 'off' method - this.processBinder = new BinderFor(process); - - this.env = { - NODE_OPTIONS: process.env.NODE_OPTIONS || '', - kbnWorkerType: this.type, - kbnWorkerArgv: JSON.stringify([...(opts.baseArgv || baseArgv), ...(opts.argv || [])]), - ELASTIC_APM_SERVICE_NAME: opts.apmServiceName || '', - }; - } - - onExit(fork: ClusterWorker, code: number) { - if (this.fork !== fork) return; - - // we have our fork's exit, so stop listening for others - this.clusterBinder.destroy(); - - // our fork is gone, clear our ref so we don't try to talk to it anymore - this.fork = null; - this.forkBinder = null; - - this.online = false; - this.listening = false; - this.emit('fork:exit'); - this.crashed = code > 0; - - if (this.crashed) { - this.emit('crashed'); - this.log.bad(`${this.title} crashed`, 'with status code', code); - if (!this.watch) process.exit(code); - } else { - // restart after graceful shutdowns - this.start(); - } - } - - onChange(path: string) { - if (!this.watch) return; - this.changes.push(path); - this.start(); - } - - async shutdown() { - if (this.fork && !dead(this.fork)) { - // kill the fork - this.fork.process.kill(); - this.fork.killed = true; - - // stop listening to the fork, it's just going to die - this.forkBinder!.destroy(); - - // we don't need to react to process.exit anymore - this.processBinder.destroy(); - - // wait until the cluster reports this fork has exited, then resolve - await new Promise((resolve) => this.once('fork:exit', resolve)); - } - } - - parseIncomingMessage(msg: any) { - if (!Array.isArray(msg)) { - return; - } - this.onMessage(msg[0], msg[1]); - } - - onMessage(type: string, data?: any) { - switch (type) { - case 'WORKER_BROADCAST': - this.emit('broadcast', data); - break; - case 'OPTIMIZE_STATUS': - this.emit('optimizeStatus', data); - break; - case 'WORKER_LISTENING': - this.listening = true; - this.emit('listening'); - break; - case 'RELOAD_LOGGING_CONFIG_FROM_SERVER_WORKER': - this.emit('reloadLoggingConfigFromServerWorker'); - break; - } - } - - onOnline() { - this.online = true; - this.emit('fork:online'); - this.crashed = false; - } - - onDisconnect() { - this.online = false; - this.listening = false; - } - - flushChangeBuffer() { - const files = _.uniq(this.changes.splice(0)); - const prefix = files.length > 1 ? '\n - ' : ''; - return files.reduce(function (list, file) { - return `${list || ''}${prefix}"${file}"`; - }, ''); - } - - async start() { - if (this.fork) { - // once "exit" event is received with 0 status, start() is called again - this.shutdown(); - await new Promise((cb) => this.once('online', cb)); - return; - } - - if (this.changes.length) { - this.log.warn(`restarting ${this.title}`, `due to changes in ${this.flushChangeBuffer()}`); - } else if (this.startCount++) { - this.log.warn(`restarting ${this.title}...`); - } - - this.fork = cluster.fork(this.env) as ClusterWorker; - this.emit('starting'); - this.forkBinder = new BinderFor(this.fork); - - // when the fork sends a message, comes online, or loses its connection, then react - this.forkBinder.on('message', (msg: any) => this.parseIncomingMessage(msg)); - this.forkBinder.on('online', () => this.onOnline()); - this.forkBinder.on('disconnect', () => this.onDisconnect()); - - // when the cluster says a fork has exited, check if it is ours - this.clusterBinder.on('exit', (fork: ClusterWorker, code: number) => this.onExit(fork, code)); - - // when the process exits, make sure we kill our workers - this.processBinder.on('exit', () => this.shutdown()); - - // wait for the fork to report it is online before resolving - await new Promise((cb) => this.once('fork:online', cb)); - } -} diff --git a/src/cli/jest.config.js b/src/cli/jest.config.js new file mode 100644 index 00000000000000..6a1055ca864c8c --- /dev/null +++ b/src/cli/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/cli'], +}; diff --git a/src/cli/repl/__snapshots__/repl.test.js.snap b/src/cli/repl/__snapshots__/repl.test.js.snap deleted file mode 100644 index c7751b5797f497..00000000000000 --- a/src/cli/repl/__snapshots__/repl.test.js.snap +++ /dev/null @@ -1,108 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`repl it allows print depth to be specified 1`] = `"{ '0': { '1': { '2': [Object] } }, whoops: [Circular] }"`; - -exports[`repl it colorizes raw values 1`] = `"{ meaning: 42 }"`; - -exports[`repl it handles deep and recursive objects 1`] = ` -"{ - '0': { - '1': { - '2': { '3': { '4': { '5': [Object] } } } - } - }, - whoops: [Circular] -}" -`; - -exports[`repl it handles undefined 1`] = `"undefined"`; - -exports[`repl it prints promise rejects 1`] = ` -Array [ - Array [ - "Waiting for promise...", - ], - Array [ - "Promise Rejected: -", - "'Dang, diggity!'", - ], -] -`; - -exports[`repl it prints promise resolves 1`] = ` -Array [ - Array [ - "Waiting for promise...", - ], - Array [ - "Promise Resolved: -", - "[ 1, 2, 3 ]", - ], -] -`; - -exports[`repl promises rejects only write to a specific depth 1`] = ` -Array [ - Array [ - "Waiting for promise...", - ], - Array [ - "Promise Rejected: -", - "{ - '0': { - '1': { - '2': { '3': { '4': { '5': [Object] } } } - } - }, - whoops: [Circular] -}", - ], -] -`; - -exports[`repl promises resolves only write to a specific depth 1`] = ` -Array [ - Array [ - "Waiting for promise...", - ], - Array [ - "Promise Resolved: -", - "{ - '0': { - '1': { - '2': { '3': { '4': { '5': [Object] } } } - } - }, - whoops: [Circular] -}", - ], -] -`; - -exports[`repl repl exposes a print object that lets you tailor depth 1`] = ` -Array [ - Array [ - "{ hello: { world: [Object] } }", - ], -] -`; - -exports[`repl repl exposes a print object that prints promises 1`] = ` -Array [ - Array [ - "", - ], - Array [ - "Waiting for promise...", - ], - Array [ - "Promise Resolved: -", - "{ hello: { world: [Object] } }", - ], -] -`; diff --git a/src/cli/repl/index.js b/src/cli/repl/index.js deleted file mode 100644 index 0b27fafcef84eb..00000000000000 --- a/src/cli/repl/index.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import repl from 'repl'; -import util from 'util'; - -const PRINT_DEPTH = 5; - -/** - * Starts an interactive REPL with a global `server` object. - * - * @param {KibanaServer} kbnServer - */ -export function startRepl(kbnServer) { - const replServer = repl.start({ - prompt: 'Kibana> ', - useColors: true, - writer: promiseFriendlyWriter({ - displayPrompt: () => replServer.displayPrompt(), - getPrintDepth: () => replServer.context.repl.printDepth, - }), - }); - - const initializeContext = () => { - replServer.context.kbnServer = kbnServer; - replServer.context.server = kbnServer.server; - replServer.context.repl = { - printDepth: PRINT_DEPTH, - print(obj, depth = null) { - console.log( - promisePrint( - obj, - () => replServer.displayPrompt(), - () => depth - ) - ); - return ''; - }, - }; - }; - - initializeContext(); - replServer.on('reset', initializeContext); - - return replServer; -} - -function colorize(o, depth) { - return util.inspect(o, { colors: true, depth }); -} - -function prettyPrint(text, o, depth) { - console.log(text, colorize(o, depth)); -} - -// This lets us handle promises more gracefully than the default REPL, -// which doesn't show the results. -function promiseFriendlyWriter({ displayPrompt, getPrintDepth }) { - return (result) => promisePrint(result, displayPrompt, getPrintDepth); -} - -function promisePrint(result, displayPrompt, getPrintDepth) { - const depth = getPrintDepth(); - if (result && typeof result.then === 'function') { - // Bit of a hack to encourage the user to wait for the result of a promise - // by printing text out beside the current prompt. - Promise.resolve() - .then(() => console.log('Waiting for promise...')) - .then(() => result) - .then((o) => prettyPrint('Promise Resolved: \n', o, depth)) - .catch((err) => prettyPrint('Promise Rejected: \n', err, depth)) - .then(displayPrompt); - return ''; - } - return colorize(result, depth); -} diff --git a/src/cli/repl/repl.test.js b/src/cli/repl/repl.test.js deleted file mode 100644 index 3a032d415e5f20..00000000000000 --- a/src/cli/repl/repl.test.js +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -jest.mock('repl', () => ({ start: (opts) => ({ opts, context: {} }) }), { virtual: true }); - -describe('repl', () => { - const originalConsoleLog = console.log; - let mockRepl; - - beforeEach(() => { - global.console.log = jest.fn(); - require('repl').start = (opts) => { - let resetHandler; - const replServer = { - opts, - context: {}, - on: jest.fn((eventName, handler) => { - expect(eventName).toBe('reset'); - resetHandler = handler; - }), - }; - - mockRepl = { - replServer, - clear() { - replServer.context = {}; - resetHandler(replServer.context); - }, - }; - return replServer; - }; - }); - - afterEach(() => { - global.console.log = originalConsoleLog; - }); - - test('it exposes the server object', () => { - const { startRepl } = require('.'); - const testServer = { - server: {}, - }; - const replServer = startRepl(testServer); - expect(replServer.context.server).toBe(testServer.server); - expect(replServer.context.kbnServer).toBe(testServer); - }); - - test('it prompts with Kibana>', () => { - const { startRepl } = require('.'); - expect(startRepl({}).opts.prompt).toBe('Kibana> '); - }); - - test('it colorizes raw values', () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - expect(replServer.opts.writer({ meaning: 42 })).toMatchSnapshot(); - }); - - test('it handles undefined', () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - expect(replServer.opts.writer()).toMatchSnapshot(); - }); - - test('it handles deep and recursive objects', () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const splosion = {}; - let child = splosion; - for (let i = 0; i < 2000; ++i) { - child[i] = {}; - child = child[i]; - } - splosion.whoops = splosion; - expect(replServer.opts.writer(splosion)).toMatchSnapshot(); - }); - - test('it allows print depth to be specified', () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const splosion = {}; - let child = splosion; - for (let i = 0; i < 2000; ++i) { - child[i] = {}; - child = child[i]; - } - splosion.whoops = splosion; - replServer.context.repl.printDepth = 2; - expect(replServer.opts.writer(splosion)).toMatchSnapshot(); - }); - - test('resets context to original when reset', () => { - const { startRepl } = require('.'); - const testServer = { - server: {}, - }; - const replServer = startRepl(testServer); - replServer.context.foo = 'bar'; - expect(replServer.context.server).toBe(testServer.server); - expect(replServer.context.kbnServer).toBe(testServer); - expect(replServer.context.foo).toBe('bar'); - mockRepl.clear(); - expect(replServer.context.server).toBe(testServer.server); - expect(replServer.context.kbnServer).toBe(testServer); - expect(replServer.context.foo).toBeUndefined(); - }); - - test('it prints promise resolves', async () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const calls = await waitForPrompt(replServer, () => - replServer.opts.writer(Promise.resolve([1, 2, 3])) - ); - expect(calls).toMatchSnapshot(); - }); - - test('it prints promise rejects', async () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const calls = await waitForPrompt(replServer, () => - replServer.opts.writer(Promise.reject('Dang, diggity!')) - ); - expect(calls).toMatchSnapshot(); - }); - - test('promises resolves only write to a specific depth', async () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const splosion = {}; - let child = splosion; - for (let i = 0; i < 2000; ++i) { - child[i] = {}; - child = child[i]; - } - splosion.whoops = splosion; - const calls = await waitForPrompt(replServer, () => - replServer.opts.writer(Promise.resolve(splosion)) - ); - expect(calls).toMatchSnapshot(); - }); - - test('promises rejects only write to a specific depth', async () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const splosion = {}; - let child = splosion; - for (let i = 0; i < 2000; ++i) { - child[i] = {}; - child = child[i]; - } - splosion.whoops = splosion; - const calls = await waitForPrompt(replServer, () => - replServer.opts.writer(Promise.reject(splosion)) - ); - expect(calls).toMatchSnapshot(); - }); - - test('repl exposes a print object that lets you tailor depth', () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - replServer.context.repl.print({ hello: { world: { nstuff: 'yo' } } }, 1); - expect(global.console.log.mock.calls).toMatchSnapshot(); - }); - - test('repl exposes a print object that prints promises', async () => { - const { startRepl } = require('.'); - const replServer = startRepl({}); - const promise = Promise.resolve({ hello: { world: { nstuff: 'yo' } } }); - const calls = await waitForPrompt(replServer, () => replServer.context.repl.print(promise, 1)); - expect(calls).toMatchSnapshot(); - }); - - async function waitForPrompt(replServer, fn) { - let resolveDone; - const done = new Promise((resolve) => (resolveDone = resolve)); - replServer.displayPrompt = () => { - resolveDone(); - }; - fn(); - await done; - return global.console.log.mock.calls; - } -}); diff --git a/src/cli/serve/serve.js b/src/cli/serve/serve.js index f344d3b70ed9d3..a070ba09207ad8 100644 --- a/src/cli/serve/serve.js +++ b/src/cli/serve/serve.js @@ -42,11 +42,8 @@ function canRequire(path) { } } -const CLUSTER_MANAGER_PATH = resolve(__dirname, '../cluster/cluster_manager'); -const CAN_CLUSTER = canRequire(CLUSTER_MANAGER_PATH); - -const REPL_PATH = resolve(__dirname, '../repl'); -const CAN_REPL = canRequire(REPL_PATH); +const DEV_MODE_PATH = resolve(__dirname, '../../dev/cli_dev_mode'); +const DEV_MODE_SUPPORTED = canRequire(DEV_MODE_PATH); const pathCollector = function () { const paths = []; @@ -176,10 +173,6 @@ export default function (program) { .option('--plugins ', 'an alias for --plugin-dir', pluginDirCollector) .option('--optimize', 'Deprecated, running the optimizer is no longer required'); - if (CAN_REPL) { - command.option('--repl', 'Run the server with a REPL prompt and access to the server object'); - } - if (!IS_KIBANA_DISTRIBUTABLE) { command .option('--oss', 'Start Kibana without X-Pack') @@ -189,10 +182,9 @@ export default function (program) { ); } - if (CAN_CLUSTER) { + if (DEV_MODE_SUPPORTED) { command .option('--dev', 'Run the server with development mode defaults') - .option('--open', 'Open a browser window to the base url after the server is started') .option('--ssl', 'Run the dev server using HTTPS') .option('--dist', 'Use production assets from kbn/optimizer') .option( @@ -222,12 +214,10 @@ export default function (program) { configs: [].concat(opts.config || []), cliArgs: { dev: !!opts.dev, - open: !!opts.open, envName: unknownOptions.env ? unknownOptions.env.name : undefined, quiet: !!opts.quiet, silent: !!opts.silent, watch: !!opts.watch, - repl: !!opts.repl, runExamples: !!opts.runExamples, // We want to run without base path when the `--run-examples` flag is given so that we can use local // links in other documentation sources, like "View this tutorial [here](http://localhost:5601/app/tutorial/xyz)". @@ -242,8 +232,7 @@ export default function (program) { dist: !!opts.dist, }, features: { - isClusterModeSupported: CAN_CLUSTER, - isReplModeSupported: CAN_REPL, + isCliDevModeSupported: DEV_MODE_SUPPORTED, }, applyConfigOverrides: (rawConfig) => applyConfigOverrides(rawConfig, opts, unknownOptions), }); diff --git a/src/cli_encryption_keys/cli_encryption_keys.js b/src/cli_encryption_keys/cli_encryption_keys.js index 30114f533aa30d..935bf09d93a042 100644 --- a/src/cli_encryption_keys/cli_encryption_keys.js +++ b/src/cli_encryption_keys/cli_encryption_keys.js @@ -23,9 +23,7 @@ import { EncryptionConfig } from './encryption_config'; import { generateCli } from './generate'; -const argv = process.env.kbnWorkerArgv - ? JSON.parse(process.env.kbnWorkerArgv) - : process.argv.slice(); +const argv = process.argv.slice(); const program = new Command('bin/kibana-encryption-keys'); program.version(pkg.version).description('A tool for managing encryption keys'); diff --git a/src/cli_encryption_keys/jest.config.js b/src/cli_encryption_keys/jest.config.js new file mode 100644 index 00000000000000..f3be28f7898f57 --- /dev/null +++ b/src/cli_encryption_keys/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/cli_encryption_keys'], +}; diff --git a/src/cli_keystore/add.js b/src/cli_keystore/add.js index d88256da1aa592..cec25b631f07ba 100644 --- a/src/cli_keystore/add.js +++ b/src/cli_keystore/add.js @@ -19,7 +19,8 @@ import { Logger } from '../cli_plugin/lib/logger'; import { confirm, question } from './utils'; -import { createPromiseFromStreams, createConcatStream } from '../core/server/utils'; +// import from path since add.test.js mocks 'fs' required for @kbn/utils +import { createPromiseFromStreams, createConcatStream } from '@kbn/utils/target/streams'; /** * @param {Keystore} keystore diff --git a/src/cli_keystore/cli_keystore.js b/src/cli_keystore/cli_keystore.js index 9fbea8f1951225..d2a72a896c2d9e 100644 --- a/src/cli_keystore/cli_keystore.js +++ b/src/cli_keystore/cli_keystore.js @@ -29,9 +29,7 @@ import { addCli } from './add'; import { removeCli } from './remove'; import { getKeystore } from './get_keystore'; -const argv = process.env.kbnWorkerArgv - ? JSON.parse(process.env.kbnWorkerArgv) - : process.argv.slice(); +const argv = process.argv.slice(); const program = new Command('bin/kibana-keystore'); program diff --git a/src/cli_keystore/jest.config.js b/src/cli_keystore/jest.config.js new file mode 100644 index 00000000000000..787cd7ccd84be6 --- /dev/null +++ b/src/cli_keystore/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/cli_keystore'], +}; diff --git a/src/cli_plugin/cli.js b/src/cli_plugin/cli.js index e483385b5b9e8e..d2ee99d380827c 100644 --- a/src/cli_plugin/cli.js +++ b/src/cli_plugin/cli.js @@ -23,9 +23,7 @@ import { listCommand } from './list'; import { installCommand } from './install'; import { removeCommand } from './remove'; -const argv = process.env.kbnWorkerArgv - ? JSON.parse(process.env.kbnWorkerArgv) - : process.argv.slice(); +const argv = process.argv.slice(); const program = new Command('bin/kibana-plugin'); program diff --git a/src/cli_plugin/jest.config.js b/src/cli_plugin/jest.config.js new file mode 100644 index 00000000000000..cbd226f5df887d --- /dev/null +++ b/src/cli_plugin/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/cli_plugin'], +}; diff --git a/src/core/MIGRATION.md b/src/core/MIGRATION.md deleted file mode 100644 index 49b962670220ce..00000000000000 --- a/src/core/MIGRATION.md +++ /dev/null @@ -1,1774 +0,0 @@ -# Migrating legacy plugins to the new platform - -- [Migrating legacy plugins to the new platform](#migrating-legacy-plugins-to-the-new-platform) - - [Overview](#overview) - - [Architecture](#architecture) - - [Services](#services) - - [Integrating with other plugins](#integrating-with-other-plugins) - - [Challenges to overcome with legacy plugins](#challenges-to-overcome-with-legacy-plugins) - - [Challenges on the server](#challenges-on-the-server) - - [Challenges in the browser](#challenges-in-the-browser) - - [Plan of action](#plan-of-action) - - [Server-side plan of action](#server-side-plan-of-action) - - [De-couple from hapi.js server and request objects](#de-couple-from-hapijs-server-and-request-objects) - - [Introduce new plugin definition shim](#introduce-new-plugin-definition-shim) - - [Switch to new platform services](#switch-to-new-platform-services) - - [Migrate to the new plugin system](#migrate-to-the-new-plugin-system) - - [Browser-side plan of action](#browser-side-plan-of-action) - - [1. Create a plugin definition file](#1-create-a-plugin-definition-file) - - [2. Export all static code and types from `public/index.ts`](#2-export-all-static-code-and-types-from-publicindexts) - - [3. Export your runtime contract](#3-export-your-runtime-contract) - - [4. Move "owned" UI modules into your plugin and expose them from your public contract](#4-move-owned-ui-modules-into-your-plugin-and-expose-them-from-your-public-contract) - - [5. Provide plugin extension points decoupled from angular.js](#5-provide-plugin-extension-points-decoupled-from-angularjs) - - [6. Move all webpack alias imports into uiExport entry files](#6-move-all-webpack-alias-imports-into-uiexport-entry-files) - - [7. Switch to new platform services](#7-switch-to-new-platform-services) - - [8. Migrate to the new plugin system](#8-migrate-to-the-new-plugin-system) - - [Bonus: Tips for complex migration scenarios](#bonus-tips-for-complex-migration-scenarios) - - [Keep Kibana fast](#keep-kibana-fast) - - [Frequently asked questions](#frequently-asked-questions) - - [Is migrating a plugin an all-or-nothing thing?](#is-migrating-a-plugin-an-all-or-nothing-thing) - - [Do plugins need to be converted to TypeScript?](#do-plugins-need-to-be-converted-to-typescript) - - [Can static code be shared between plugins?](#can-static-code-be-shared-between-plugins) - - [Background](#background) - - [What goes wrong if I do share modules with state?](#what-goes-wrong-if-i-do-share-modules-with-state) - - [How to decide what code can be statically imported](#how-to-decide-what-code-can-be-statically-imported) - - [Concrete Example](#concrete-example) - - [How can I avoid passing Core services deeply within my UI component tree?](#how-can-i-avoid-passing-core-services-deeply-within-my-ui-component-tree) - - [How is "common" code shared on both the client and server?](#how-is-common-code-shared-on-both-the-client-and-server) - - [When does code go into a plugin, core, or packages?](#when-does-code-go-into-a-plugin-core-or-packages) - - [How do I build my shim for New Platform services?](#how-do-i-build-my-shim-for-new-platform-services) - - [Client-side](#client-side) - - [Core services](#core-services) - - [Plugins for shared application services](#plugins-for-shared-application-services) - - [Server-side](#server-side) - - [Core services](#core-services-1) - - [Plugin services](#plugin-services) - - [UI Exports](#ui-exports) - - [Plugin Spec](#plugin-spec) - - [How to](#how-to) - - [Configure plugin](#configure-plugin) - - [Handle plugin configuration deprecations](#handle-plugin-configuration-deprecations) - - [Use scoped services](#use-scoped-services) - - [Declare a custom scoped service](#declare-a-custom-scoped-service) - - [Mock new platform services in tests](#mock-new-platform-services-in-tests) - - [Writing mocks for your plugin](#writing-mocks-for-your-plugin) - - [Using mocks in your tests](#using-mocks-in-your-tests) - - [What about karma tests?](#what-about-karma-tests) - - [Provide Legacy Platform API to the New platform plugin](#provide-legacy-platform-api-to-the-new-platform-plugin) - - [On the server side](#on-the-server-side) - - [On the client side](#on-the-client-side) - - [Updates an application navlink at runtime](#updates-an-application-navlink-at-runtime) - - [Logging config migration](#logging-config-migration) - - [Use HashRouter in migrated apps](#use-react-hashrouter-in-migrated-apps) - -Make no mistake, it is going to take a lot of work to move certain plugins to the new platform. Our target is to migrate the entire repo over to the new platform throughout 7.x and to remove the legacy plugin system no later than 8.0, and this is only possible if teams start on the effort now. - -The goal of this document is to guide teams through the recommended process of migrating at a high level. Every plugin is different, so teams should tweak this plan based on their unique requirements. - -We'll start with an overview of how plugins work in the new platform, and we'll end with a generic plan of action that can be applied to any plugin in the repo today. - -## Overview - -Plugins in the new platform are not especially novel or complicated to describe. Our intention wasn't to build some clever system that magically solved problems through abstractions and layers of obscurity, and we wanted to make sure plugins could continue to use most of the same technologies they use today, at least from a technical perspective. - -New platform plugins exist in the `src/plugins` and `x-pack/plugins` directories. _See all [conventions for first-party Elastic plugins](./CONVENTIONS.md)_. - -### Architecture - -Plugins are defined as classes and exposed to the platform itself through a simple wrapper function. A plugin can have browser side code, server side code, or both. There is no architectural difference between a plugin in the browser and a plugin on the server, which is to say that in both places you describe your plugin similarly, and you interact with core and/or other plugins in the same way. - -The basic file structure of a new platform plugin named "demo" that had both client-side and server-side code would be: - -```tree -src/plugins - demo - kibana.json [1] - public - index.ts [2] - plugin.ts [3] - server - index.ts [4] - plugin.ts [5] -``` - -**[1] `kibana.json`** is a [static manifest](../../docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) file that is used to identify the plugin and to determine what kind of code the platform should execute from the plugin: - -```json -{ - "id": "demo", - "version": "kibana", - "server": true, - "ui": true -} -``` - -More details about[manifest file format](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) - -Note that `package.json` files are irrelevant to and ignored by the new platform. - -**[2] `public/index.ts`** is the entry point into the client-side code of this plugin. It must export a function named `plugin`, which will receive a standard set of core capabilities as an argument (e.g. logger). It should return an instance of its plugin definition for the platform to register at load time. - -```ts -import { PluginInitializerContext } from 'kibana/server'; -import { Plugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); -} -``` - -**[3] `public/plugin.ts`** is the client-side plugin definition itself. Technically speaking it does not need to be a class or even a separate file from the entry point, but _all plugins at Elastic_ should be consistent in this way. _See all [conventions for first-party Elastic plugins](./CONVENTIONS.md)_. - -```ts -import { PluginInitializerContext, CoreSetup, CoreStart } from 'kibana/server'; - -export class Plugin { - constructor(initializerContext: PluginInitializerContext) {} - - public setup(core: CoreSetup) { - // called when plugin is setting up - } - - public start(core: CoreStart) { - // called after all plugins are set up - } - - public stop() { - // called when plugin is torn down, aka window.onbeforeunload - } -} -``` - -**[4] `server/index.ts`** is the entry-point into the server-side code of this plugin. It is identical in almost every way to the client-side entry-point: - -```ts -import { PluginInitializerContext } from 'kibana/server'; -import { Plugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new Plugin(initializerContext); -} -``` - -**[5] `server/plugin.ts`** is the server-side plugin definition. The _shape_ of this plugin is the same as it's client-side counter-part: - -```ts -import { PluginInitializerContext, CoreSetup, CoreStart } from 'kibana/server'; - -export class Plugin { - constructor(initializerContext: PluginInitializerContext) {} - - public setup(core: CoreSetup) { - // called when plugin is setting up during Kibana's startup sequence - } - - public start(core: CoreStart) { - // called after all plugins are set up - } - - public stop() { - // called when plugin is torn down during Kibana's shutdown sequence - } -} -``` - -The platform does not impose any technical restrictions on how the internals of the plugin are architected, though there are certain considerations related to how plugins interact with core and how plugins interact with other plugins that may greatly impact how they are built. - -### Services - -The various independent domains that make up `core` are represented by a series of services, and many of those services expose public interfaces that are provided to _all_ plugins. Services expose different features at different parts of their _lifecycle_. We describe the lifecycle of core services and plugins with specifically-named functions on the service definition. - -In the new platform, there are three lifecycle functions today: `setup`, `start`, and `stop`. The `setup` functions are invoked sequentially while Kibana is setting up on the server or when it is being loaded in the browser. The `start` functions are invoked sequentially after setup has completed for all plugins. The `stop` functions are invoked sequentially while Kibana is gracefully shutting down on the server or when the browser tab or window is being closed. - -The table below explains how each lifecycle event relates to the state of Kibana. - -| lifecycle event | server | browser | -| --------------- | ----------------------------------------- | --------------------------------------------------- | -| *setup* | bootstrapping and configuring routes | loading plugin bundles and configuring applications | -| *start* | server is now serving traffic | browser is now showing UI to the user | -| *stop* | server has received a request to shutdown | user is navigating away from Kibana | - -There is no equivalent behavior to `start` or `stop` in legacy plugins, so this guide primarily focuses on migrating functionality into `setup`. - -The lifecycle-specific contracts exposed by core services are always passed as the first argument to the equivalent lifecycle function in a plugin. For example, the core `UiSettings` service exposes a function `get` to all plugin `setup` functions. To use this function to retrieve a specific UI setting, a plugin just accesses it off of the first argument: - -```ts -import { CoreSetup } from 'kibana/server'; - -export class Plugin { - public setup(core: CoreSetup) { - core.uiSettings.get('courier:maxShardsBeforeCryTime'); - } -} -``` - -Different service interfaces can and will be passed to `setup` and `stop` because certain functionality makes sense in the context of a running plugin while other types of functionality may have restrictions or may only make sense in the context of a plugin that is stopping. - -For example, the `stop` function in the browser gets invoked as part of the `window.onbeforeunload` event, which means you can't necessarily execute asynchronous code here in a reliable way. For that reason, `core` likely wouldn't provide any asynchronous functions to plugin `stop` functions in the browser. - -Core services that expose functionality to plugins always have their `setup` function ran before any plugins. - -These are the contracts exposed by the core services for each lifecycle event: - -| lifecycle event | contract | -| --------------- | --------------------------------------------------------------------------------------------------------------- | -| *contructor* | [PluginInitializerContext](../../docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md) | -| *setup* | [CoreSetup](../../docs/development/core/server/kibana-plugin-core-server.coresetup.md) | -| *start* | [CoreStart](../../docs/development/core/server/kibana-plugin-core-server.corestart.md) | -| *stop* | | - -### Integrating with other plugins - -Plugins can expose public interfaces for other plugins to consume. Like `core`, those interfaces are bound to the lifecycle functions `setup` and/or `start`. - -Anything returned from `setup` or `start` will act as the interface, and while not a technical requirement, all first-party Elastic plugins should expose types for that interface as well. 3rd party plugins wishing to allow other plugins to integrate with it are also highly encouraged to expose types for their plugin interfaces. - -**foobar plugin.ts:** - -```ts -export type FoobarPluginSetup = ReturnType; -export type FoobarPluginStart = ReturnType; - -export class Plugin { - public setup() { - return { - getFoo() { - return 'foo'; - }, - }; - } - - public start() { - return { - getBar() { - return 'bar'; - }, - }; - } -} -``` - -Unlike core, capabilities exposed by plugins are _not_ automatically injected into all plugins. Instead, if a plugin wishes to use the public interface provided by another plugin, they must first declare that plugin as a dependency in their `kibana.json`. - -**demo kibana.json:** - -```json -{ - "id": "demo", - "requiredPlugins": ["foobar"], - "server": true, - "ui": true -} -``` - -With that specified in the plugin manifest, the appropriate interfaces are then available via the second argument of `setup` and/or `start`: - -**demo plugin.ts:** - -```ts -import { CoreSetup, CoreStart } from 'src/core/server'; -import { FoobarPluginSetup, FoobarPluginStop } from '../../foobar/server'; - -interface DemoSetupPlugins { - foobar: FoobarPluginSetup; -} - -interface DemoStartPlugins { - foobar: FoobarPluginStart; -} - -export class Plugin { - public setup(core: CoreSetup, plugins: DemoSetupPlugins) { - const { foobar } = plugins; - foobar.getFoo(); // 'foo' - foobar.getBar(); // throws because getBar does not exist - } - - public start(core: CoreStart, plugins: DemoStartPlugins) { - const { foobar } = plugins; - foobar.getFoo(); // throws because getFoo does not exist - foobar.getBar(); // 'bar' - } - - public stop() {}, -} -``` - -### Challenges to overcome with legacy plugins - -New platform plugins have identical architecture in the browser and on the server. Legacy plugins have one architecture that they use in the browser and an entirely different architecture that they use on the server. - -This means that there are unique sets of challenges for migrating to the new platform depending on whether the legacy plugin code is on the server or in the browser. - -#### Challenges on the server - -The general shape/architecture of legacy server-side code is similar to the new platform architecture in one important way: most legacy server-side plugins define an `init` function where the bulk of their business logic begins, and they access both "core" and "plugin-provided" functionality through the arguments given to `init`. Rarely does legacy server-side code share stateful services via import statements. - -While not exactly the same, legacy plugin `init` functions behave similarly today as new platform `setup` functions. `KbnServer` also exposes an `afterPluginsInit` method which behaves similarly to `start`. There is no corresponding legacy concept of `stop`, however. - -Despite their similarities, server-side plugins pose a formidable challenge: legacy core and plugin functionality is retrieved from either the hapi.js `server` or `request` god objects. Worse, these objects are often passed deeply throughout entire plugins, which directly couples business logic with hapi. And the worst of it all is, these objects are mutable at any time. - -The key challenge to overcome with legacy server-side plugins will decoupling from hapi. - -#### Challenges in the browser - -The legacy plugin system in the browser is fundamentally incompatible with the new platform. There is no client-side plugin definition. There are no services that get passed to plugins at runtime. There really isn't even a concrete notion of "core". - -When a legacy browser plugin needs to access functionality from another plugin, say to register a UI section to render within another plugin, it imports a stateful (global singleton) JavaScript module and performs some sort of state mutation. Sometimes this module exists inside the plugin itself, and it gets imported via the `plugin/` webpack alias. Sometimes this module exists outside the context of plugins entirely and gets imported via the `ui/` webpack alias. Neither of these concepts exist in the new platform. - -Legacy browser plugins rely on the feature known as `uiExports/`, which integrates directly with our build system to ensure that plugin code is bundled together in such a way to enable that global singleton module state. There is no corresponding feature in the new platform, and in fact we intend down the line to build new platform plugins as immutable bundles that can not share state in this way. - -The key challenge to overcome with legacy browser-side plugins will be converting all imports from `plugin/`, `ui/`, `uiExports`, and relative imports from other plugins into a set of services that originate at runtime during plugin initialization and get passed around throughout the business logic of the plugin as function arguments. - -### Plan of action - -In order to move a legacy plugin to the new plugin system, the challenges on the server and in the browser must be addressed. Fortunately, **the hardest problems can be solved in legacy plugins today** without consuming the new plugin system at all. - -The approach and level of effort varies significantly between server and browser plugins, but at a high level the approach is the same. - -First, decouple your plugin's business logic from the dependencies that are not exposed through the new platform, hapi.js and angular.js. Then introduce plugin definitions that more accurately reflect how plugins are defined in the new platform. Finally, replace the functionality you consume from core and other plugins with their new platform equivalents. - -Once those things are finished for any given plugin, it can officially be switched to the new plugin system. - -## Server-side plan of action - -Legacy server-side plugins access functionality from core and other plugins at runtime via function arguments, which is similar to how they must be architected to use the new plugin system. This greatly simplifies the plan of action for migrating server-side plugins. - -Here is the high-level for migrating a server-side plugin: - -- De-couple from hapi.js server and request objects -- Introduce a new plugin definition shim -- Replace legacy services in shim with new platform services -- Finally, move to the new plugin system - -These steps (except for the last one) do not have to be completed strictly in order, and some can be done in parallel or as part of the same change. In general, we recommend that larger plugins approach this more methodically, doing each step in a separate change. This makes each individual change less risk and more focused. This approach may not make sense for smaller plugins. For instance, it may be simpler to switch to New Platform services when you introduce your Plugin class, rather than shimming it with the legacy service. - -### De-couple from hapi.js server and request objects - -Most integrations with core and other plugins occur through the hapi.js `server` and `request` objects, and neither of these things are exposed through the new platform, so tackle this problem first. - -Fortunately, decoupling from these objects is relatively straightforward. - -The server object is introduced to your plugin in its legacy `init` function, so in that function you will "pick" the functionality you actually use from `server` and attach it to a new interface, which you will then pass in all the places you had previously been passing `server`. - -The `request` object is introduced to your plugin in every route handler, so at the root of every route handler, you will create a new interface by "picking" the request information (e.g. body, headers) and core and plugin capabilities from the `request` object that you actually use and pass that in all the places you previously were passing `request`. - -Any calls to mutate either the server or request objects (e.g. `server.decorate()`) will be moved toward the root of the legacy `init` function if they aren't already there. - -Let's take a look at an example legacy plugin definition that uses both `server` and `request`. - -```ts -// likely imported from another file -function search(server, request) { - const { elasticsearch } = server.plugins; - return elasticsearch.getCluster('admin').callWithRequest(request, 'search'); -} - -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - server.route({ - path: '/api/demo_plugin/search', - method: 'POST', - async handler(request) { - search(server, request); // target acquired - }, - }); - - server.expose('getDemoBar', () => { - return `Demo ${server.plugins.foo.getBar()}`; - }); - }, - }); -}; -``` - -This example legacy plugin uses hapi's `server` object directly inside of its `init` function, which is something we can address in a later step. What we need to address in this step is when we pass the raw `server` and `request` objects into our custom `search` function. - -Our goal in this step is to make sure we're not integrating with other plugins via functions on `server.plugins.*` or on the `request` object. You should begin by finding all of the integration points where you make these calls, and put them behind a "facade" abstraction that can hide the details of where these APIs come from. This allows you to easily switch out how you access these APIs without having to change all of the code that may use them. - -Instead, we identify which functionality we actually need from those objects and craft custom new interfaces for them, taking care not to leak hapi.js implementation details into their design. - -```ts -import { ElasticsearchPlugin, Request } from '../elasticsearch'; -export interface ServerFacade { - plugins: { - elasticsearch: ElasticsearchPlugin; - }; -} -export interface RequestFacade extends Request {} - -// likely imported from another file -function search(server: ServerFacade, request: RequestFacade) { - const { elasticsearch } = server.plugins; - return elasticsearch.getCluster('admin').callWithRequest(request, 'search'); -} - -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - const serverFacade: ServerFacade = { - plugins: { - elasticsearch: server.plugins.elasticsearch, - }, - }; - - server.route({ - path: '/api/demo_plugin/search', - method: 'POST', - async handler(request) { - const requestFacade: RequestFacade = { - headers: request.headers, - }; - search(serverFacade, requestFacade); - }, - }); - - server.expose('getDemoBar', () => { - return `Demo ${server.plugins.foo.getBar()}`; - }); - }, - }); -}; -``` - -This change might seem trivial, but it's important for two reasons. - -First, the business logic built into `search` is now coupled to an object you created manually and have complete control over rather than hapi itself. This will allow us in a future step to replace the dependency on hapi without necessarily having to modify the business logic of the plugin. - -Second, it forced you to clearly define the dependencies you have on capabilities provided by core and by other plugins. This will help in a future step when you must replace those capabilities with services provided through the new platform. - -### Introduce new plugin definition shim - -While most plugin logic is now decoupled from hapi, the plugin definition itself still uses hapi to expose functionality for other plugins to consume and access functionality from both core and a different plugin. - -```ts -// index.ts - -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - const serverFacade: ServerFacade = { - plugins: { - elasticsearch: server.plugins.elasticsearch, - }, - }; - - // HTTP functionality from legacy - server.route({ - path: '/api/demo_plugin/search', - method: 'POST', - async handler(request) { - const requestFacade: RequestFacade = { - headers: request.headers, - }; - search(serverFacade, requestFacade); - }, - }); - - // Exposing functionality for other plugins - server.expose('getDemoBar', () => { - return `Demo ${server.plugins.foo.getBar()}`; // Accessing functionality from another plugin - }); - }, - }); -}; -``` - -We now move this logic into a new plugin definition, which is based off of the conventions used in real new platform plugins. While the legacy plugin definition is in the root of the plugin, this new plugin definition will be under the plugin's `server/` directory since it is only the server-side plugin definition. - -```ts -// server/plugin.ts -import { CoreSetup, Plugin } from 'src/core/server'; -import { ElasticsearchPlugin } from '../elasticsearch'; - -interface FooSetup { - getBar(): string; -} - -// We inject the miminal legacy dependencies into our plugin including dependencies on other legacy -// plugins. Take care to only expose the legacy functionality you need e.g. don't inject the whole -// `Legacy.Server` if you only depend on `Legacy.Server['route']`. -interface LegacySetup { - route: Legacy.Server['route']; - plugins: { - elasticsearch: ElasticsearchPlugin; // note: Elasticsearch is in CoreSetup in NP, rather than a plugin - foo: FooSetup; - }; -} - -// Define the public API's for our plugins setup and start lifecycle -export interface DemoSetup { - getDemoBar: () => string; -} -export interface DemoStart {} - -// Once we start dependending on NP plugins' setup or start API's we'll add their types here -export interface DemoSetupDeps {} -export interface DemoStartDeps {} - -export class DemoPlugin implements Plugin { - public setup(core: CoreSetup, plugins: PluginsSetup, __LEGACY: LegacySetup): DemoSetup { - // We're still using the legacy Elasticsearch and http router here, but we're now accessing - // these services in the same way a NP plugin would: injected into the setup function. It's - // also obvious that these dependencies needs to be removed by migrating over to the New - // Platform services exposed through core. - const serverFacade: ServerFacade = { - plugins: { - elasticsearch: __LEGACY.plugins.elasticsearch, - }, - }; - - __LEGACY.route({ - path: '/api/demo_plugin/search', - method: 'POST', - async handler(request) { - const requestFacade: RequestFacade = { - headers: request.headers, - }; - search(serverFacade, requestFacade); - }, - }); - - // Exposing functionality for other plugins - return { - getDemoBar() { - return `Demo ${__LEGACY.plugins.foo.getBar()}`; // Accessing functionality from another legacy plugin - }, - }; - } -} -``` - -The legacy plugin definition is still the one that is being executed, so we now "shim" this new plugin definition into the legacy world by instantiating it and wiring it up inside of the legacy `init` function. - -```ts -// index.ts - -import { Plugin, PluginDependencies, LegacySetup } from './server/plugin'; - -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - // core setup API's - const coreSetup = server.newPlatform.setup.core; - - // For now we don't have any dependencies on NP plugins - const pluginsSetup: PluginsSetup = {}; - - // legacy dependencies - const __LEGACY: LegacySetup = { - route: server.route, - plugins: { - elasticsearch: server.plugins.elasticsearch, - foo: server.plugins.foo, - }, - }; - - const demoSetup = new Plugin().setup(coreSetup, pluginsSetup, __LEGACY); - - // continue to expose functionality to legacy plugins - server.expose('getDemoBar', demoSetup.getDemoBar); - }, - }); -}; -``` - -> Note: An equally valid approach is to extend `CoreSetup` with a `__legacy` -> property instead of introducing a third parameter to your plugins lifecycle -> function. The important thing is that you reduce the legacy API surface that -> you depend on to a minimum by only picking and injecting the methods you -> require and that you clearly differentiate legacy dependencies in a namespace. - -This introduces a layer between the legacy plugin system with hapi.js and the logic you want to move to the new plugin system. The functionality exposed through that layer is still provided from the legacy world and in some cases is still technically powered directly by hapi, but building this layer forced you to identify the remaining touch points into the legacy world and it provides you with control when you start migrating to new platform-backed services. - -> Need help constructing your shim? There are some common APIs that are already present in the New Platform. In these cases, it may make more sense to simply use the New Platform service rather than crafting your own shim. Refer to the _[How do I build my shim for New Platform services?](#how-do-i-build-my-shim-for-new-platform-services)_ section for a table of legacy to new platform service translations to identify these. Note that while some APIs have simply _moved_ others are completely different. Take care when choosing how much refactoring to do in a single change. - -### Switch to new platform services - -At this point, your legacy server-side plugin is described in the shape and -conventions of the new plugin system, and all of the touch points with the -legacy world and hapi.js have been isolated inside the `__LEGACY` parameter. - -Now the goal is to replace all legacy services with services provided by the new platform instead. - -For the first time in this guide, your progress here is limited by the migration efforts within core and other plugins. - -As core capabilities are migrated to services in the new platform, they are made available as lifecycle contracts to the legacy `init` function through `server.newPlatform`. This allows you to adopt the new platform service APIs directly in your legacy plugin as they get rolled out. - -For the most part, care has been taken when migrating services to the new platform to preserve the existing APIs as much as possible, but there will be times when new APIs differ from the legacy equivalents. - -If a legacy API differs from its new platform equivalent, some refactoring will be required. The best outcome comes from updating the plugin code to use the new API, but if that's not practical now, you can also create a facade inside your new plugin definition that is shaped like the legacy API but powered by the new API. Once either of these things is done, that override can be removed from the shim. - -Eventually, all `__LEGACY` dependencies will be removed and your Plugin will -be powered entirely by Core API's from `server.newPlatform.setup.core`. - -```ts -init(server) { - // core setup API's - const coreSetup = server.newPlatform.setup.core; - - // For now we don't have any dependencies on NP plugins - const pluginsSetup: PluginsSetup = {}; - - // legacy dependencies, we've removed our dependency on elasticsearch and server.route - const __LEGACY: LegacySetup = { - plugins: { - foo: server.plugins.foo - } - }; - - const demoSetup = new Plugin().setup(coreSetup, pluginsSetup, __LEGACY); -} -``` - -At this point, your legacy server-side plugin logic is no longer coupled to -the legacy core. - -A similar approach can be taken for your plugin dependencies. To start -consuming an API from a New Platform plugin access these from -`server.newPlatform.setup.plugins` and inject it into your plugin's setup -function. - -```ts -init(server) { - // core setup API's - const coreSetup = server.newPlatform.setup.core; - - // Depend on the NP plugin 'foo' - const pluginsSetup: PluginsSetup = { - foo: server.newPlatform.setup.plugins.foo - }; - - const demoSetup = new Plugin().setup(coreSetup, pluginsSetup); -} -``` - -As the plugins you depend on are migrated to the new platform, their contract -will be exposed through `server.newPlatform`, so the `__LEGACY` dependencies -should be removed. Like in core, plugins should take care to preserve their -existing APIs to make this step as seamless as possible. - -It is much easier to reliably make breaking changes to plugin APIs in the new -platform than it is in the legacy world, so if you're planning a big change, -consider doing it after your dependent plugins have migrated rather than as -part of your own migration. - -Eventually, all `__LEGACY` dependencies will be removed and your plugin will be -entirely powered by the New Platform and New Platform plugins. - -> Note: All New Platform plugins are exposed to legacy plugins via -> `server.newPlatform.setup.plugins`. Once you move your plugin over to the -> New Platform you will have to explicitly declare your dependencies on other -> plugins in your `kibana.json` manifest file. - -At this point, your legacy server-side plugin logic is no longer coupled to legacy plugins. - -### Migrate to the new plugin system - -With both shims converted, you are now ready to complete your migration to the new platform. - -Many plugins will copy and paste all of their plugin code into a new plugin directory in either `src/plugins` for OSS or `x-pack/plugins` for commerical code and then delete their legacy shims. It's at this point that you'll want to make sure to create your `kibana.json` file if it does not already exist. - -With the previous steps resolved, this final step should be easy, but the exact process may vary plugin by plugin, so when you're at this point talk to the platform team to figure out the exact changes you need. - -Other plugins may want to move subsystems over individually. For instance, you can move routes over to the New Platform in groups rather than all at once. Other examples that could be broken up: - -- Configuration schema ([see example](./MIGRATION_EXAMPLES.md#declaring-config-schema)) -- HTTP route registration ([see example](./MIGRATION_EXAMPLES.md#http-routes)) -- Polling mechanisms (eg. job worker) - -In general, we recommend moving all at once by ensuring you're not depending on any legacy code before you move over. - -## Browser-side plan of action - -It is generally a much greater challenge preparing legacy browser-side code for the new platform than it is server-side, and as such there are a few more steps. The level of effort here is proportional to the extent to which a plugin is dependent on angular.js. - -To complicate matters further, a significant amount of the business logic in Kibana's client-side code exists inside the `ui/public` directory (aka ui modules), and all of that must be migrated as well. Unlike the server-side code where the order in which you migrated plugins was not particularly important, it's important that UI modules be addressed as soon as possible. - -Because usage of angular and `ui/public` modules varies widely between legacy plugins, there is no "one size fits all" solution to migrating your browser-side code to the new platform. The best place to start is by checking with the platform team to help identify the best migration path for your particular plugin. - -That said, we've seen a series of patterns emerge as teams begin migrating browser code. In practice, most migrations will follow a path that looks something like this: - -#### 1. Create a plugin definition file - -We've found that doing this right away helps you start thinking about your plugin in terms of lifecycle methods and services, which makes the rest of the migration process feel more natural. It also forces you to identify which actions "kick off" your plugin, since you'll need to execute those when the `setup/start` methods are called. - -This definition isn't going to do much for us just yet, but as we get further into the process, we will gradually start returning contracts from our `setup` and `start` methods, while also injecting dependencies as arguments to these methods. - -```ts -// public/plugin.ts -import { CoreSetup, CoreStart, Plugin } from 'kibana/server'; -import { FooSetup, FooStart } from '../../../../legacy/core_plugins/foo/public'; - -/** - * These are the private interfaces for the services your plugin depends on. - * @internal - */ -export interface DemoSetupDeps { - foo: FooSetup; -} -export interface DemoStartDeps { - foo: FooStart; -} - -/** - * These are the interfaces with your public contracts. You should export these - * for other plugins to use in _their_ `SetupDeps`/`StartDeps` interfaces. - * @public - */ -export type DemoSetup = {}; -export type DemoStart = {}; - -/** @internal */ -export class DemoPlugin implements Plugin { - public setup(core: CoreSetup, plugins: DemoSetupDeps): DemoSetup { - // kick off your plugin here... - return { - fetchConfig: () => ({}), - }; - } - - public start(core: CoreStart, plugins: DemoStartDeps): DemoStart { - // ...or here - return { - initDemo: () => ({}), - }; - } - - public stop() {} -} -``` - -#### 2. Export all static code and types from `public/index.ts` - -If your plugin needs to share static code with other plugins, this code must be exported from your top-level `public/index.ts`. This includes any type interfaces that you wish to make public. For details on the types of code that you can safely share outside of the runtime lifecycle contracts, see [Can static code be shared between plugins?](#can-static-code-be-shared-between-plugins) - -```ts -// public/index.ts -import { DemoSetup, DemoStart } from './plugin'; - -const myPureFn = (x: number): number => x + 1; -const MyReactComponent = (props) => { - return

Hello, {props.name}

; -}; - -// These are your public types & static code -export { myPureFn, MyReactComponent, DemoSetup, DemoStart }; -``` - -While you're at it, you can also add your plugin initializer to this file: - -```ts -// public/index.ts -import { PluginInitializer, PluginInitializerContext } from 'kibana/server'; -import { DemoSetup, DemoStart, DemoSetupDeps, DemoStartDeps, DemoPlugin } from './plugin'; - -// Core will be looking for this when loading our plugin in the new platform -export const plugin: PluginInitializer = ( - initializerContext: PluginInitializerContext -) => { - return new DemoPlugin(); -}; - -const myPureFn = (x: number): number => x + 1; -const MyReactComponent = (props) => { - return

Hello, {props.name}

; -}; - -/** @public */ -export { myPureFn, MyReactComponent, DemoSetup, DemoStart }; -``` - -Great! So you have your plugin definition, and you've moved all of your static exports to the top level of your plugin... now let's move on to the runtime contract your plugin will be exposing. - -#### 3. Export your runtime contract - -Next, we need a way to expose your runtime dependencies. In the new platform, core will handle this for you. But while we are still in the legacy world, other plugins will need a way to consume your plugin's contract without the help of core. - -So we will take a similar approach to what was described above in the server section: actually call the `Plugin.setup()` and `Plugin.start()` methods, and export the values those return for other legacy plugins to consume. By convention, we've been placing this in a `legacy.ts` file, which also serves as our shim where we import our legacy dependencies and reshape them into what we are expecting in the new platform: - -```ts -// public/legacy.ts -import { PluginInitializerContext } from 'kibana/server'; -import { npSetup, npStart } from 'ui/new_platform'; -import { plugin } from '.'; - -import { setup as fooSetup, start as fooStart } from '../../foo/public/legacy'; // assumes `foo` lives in `legacy/core_plugins` - -const pluginInstance = plugin({} as PluginInitializerContext); -const __LEGACYSetup = { - bar: {}, // shim for a core service that hasn't migrated yet - foo: fooSetup, // dependency on a legacy plugin -}; -const __LEGACYStart = { - bar: {}, // shim for a core service that hasn't migrated yet - foo: fooStart, // dependency on a legacy plugin -}; - -export const setup = pluginInstance.setup(npSetup.core, npSetup.plugins, __LEGACYSetup); -export const start = pluginInstance.start(npStart.core, npStart.plugins, __LEGACYStart); -``` - -> As you build your shims, you may be wondering where you will find some legacy services in the new platform. Skip to [the tables below](#how-do-i-build-my-shim-for-new-platform-services) for a list of some of the more common legacy services and where we currently expect them to live. - -Notice how in the example above, we are importing the `setup` and `start` contracts from the legacy shim provided by `foo` plugin; we could just as easily be importing modules from `ui/public` here as well. - -The point is that, over time, this becomes the one file in our plugin containing stateful imports from the legacy world. And _that_ is where things start to get interesting... - -#### 4. Move "owned" UI modules into your plugin and expose them from your public contract - -Everything inside of the `ui/public` directory is going to be dealt with in one of the following ways: - -- Deleted because it doesn't need to be used anymore -- Moved to or replaced by something in core that isn't coupled to angular -- Moved to or replaced by an extension point in a specific plugin that "owns" that functionality -- Copied into each plugin that depends on it and becomes an implementation detail there - -To rapidly define ownership and determine interdependencies, UI modules should move to the most appropriate plugins to own them. Modules that are considered "core" can remain in the ui directory as the platform team works to move them out. - -Concerns around ownership or duplication of a given module should be raised and resolved with the appropriate team so that the code is either duplicated to break the interdependency or a team agrees to "own" that extension point in one of their plugins and the module moves there. - -A great outcome is a module being deleted altogether because it isn't used or it was used so lightly that it was easy to refactor away. - -If it is determined that your plugin is going to own any UI modules that other plugins depend on, you'll want to migrate these quickly so that there's time for downstream plugins to update their imports. This will ultimately involve moving the module code into your plugin, and exposing it via your setup/start contracts, or as static code from your `plugin/index.ts`. We have identified owners for most of the legacy UI modules; if you aren't sure where you should move something that you own, please consult with the platform team. - -Depending on the module's level of complexity and the number of other places in Kibana that rely on it, there are a number of strategies you could use for this: - -- **Do it all at once.** Move the code, expose it from your plugin, and update all imports across Kibana. - - This works best for small pieces of code that aren't widely used. -- **Shim first, move later.** Expose the code from your plugin by importing it in your shim and then re-exporting it from your plugin first, then gradually update imports to pull from the new location, leaving the actual moving of the code as a final step. - - This works best for the largest, most widely used modules that would otherwise result in huge, hard-to-review PRs. - - It makes things easier by splitting the process into small, incremental PRs, but is probably overkill for things with a small surface area. -- **Hybrid approach.** As a middle ground, you can also move the code to your plugin immediately, and then re-export your plugin code from the original `ui/public` directory. - - This eliminates any concerns about backwards compatibility by allowing you to update the imports across Kibana later. - - Works best when the size of the PR is such that moving the code can be done without much refactoring. - -#### 5. Provide plugin extension points decoupled from angular.js - -There will be no global angular module in the new platform, which means none of the functionality provided by core will be coupled to angular. Since there is no global angular module shared by all applications, plugins providing extension points to be used by other plugins can not couple those extension points to angular either. - -All teams that own a plugin are strongly encouraged to remove angular entirely, but if nothing else they must provide non-angular-based extension points for plugins. - -One way to address this problem is to go through the code that is currently exposed to plugins and refactor away all of the touch points into angular.js. This might be the easiest option in some cases, but it might be hard in others. - -Another way to address this problem is to create an entirely new set of plugin APIs that are not dependent on angular.js, and then update the implementation within the plugin to "merge" the angular and non-angular capabilities together. This is a good approach if preserving the existing angular API until we remove the old plugin system entirely is of critical importance. Generally speaking though, the removal of angular and introduction of a new set of public plugin APIs is a good reason to make a breaking change to the existing plugin capabilities. Make sure the PRs are tagged appropriately so we add these changes to our plugin changes blog post for each release. - -Please talk with the platform team when formalizing _any_ client-side extension points that you intend to move to the new platform as there are some bundling considerations to consider. - -#### 6. Move all webpack alias imports into uiExport entry files - -Existing plugins import three things using webpack aliases today: services from ui/public (`ui/`), services from other plugins (`plugins/`), and uiExports themselves (`uiExports/`). These webpack aliases will not exist once we remove the legacy plugin system, so part of our migration effort is addressing all of the places where they are used today. - -In the new platform, dependencies from core and other plugins will be passed through lifecycle functions in the plugin definition itself. In a sense, they will be run from the "root" of the plugin. - -With the legacy plugin system, extensions of core and other plugins are handled through entry files defined as uiExport paths. In other words, when a plugin wants to serve an application (a core-owned thing), it defines a main entry file for the app via the `app` uiExport, and when a plugin wants to extend visTypes (a plugin-owned thing), they do so by specifying an entry file path for the `visType` uiExport. - -Each uiExport path is an entry file into one specific set of functionality provided by a client-side plugin. All webpack alias-based imports should be moved to these entry files, where they are appropriate. Moving a deeply nested webpack alias-based import in a plugin to one of the uiExport entry files might require some refactoring to ensure the dependency is now passed down to the appropriate place as function arguments instead of via import statements. - -For stateful dependencies using the `plugins/` and `ui/` webpack aliases, you should be able to take advantage of the `legacy.ts` shim you created earlier. By placing these imports directly in your shim, you can pass the dependencies you need into your `Plugin.start` and `Plugin.setup` methods, from which point they can be passed down to the rest of your plugin's entry files. - -For items that don't yet have a clear "home" in the new platform, it may also be helpful to somehow indicate this in your shim to make it easier to remember that you'll need to change this later. One convention we've found helpful for this is simply using a namespace like `__LEGACY`: - -```ts -// public/legacy.ts -import { uiThing } from 'ui/thing'; -... - -const pluginInstance = plugin({} as PluginInitializerContext); -const __LEGACY = { - foo: fooSetup, - uiThing, // eventually this will move out of __LEGACY and into a NP plugin -}; - -... -export const setup = pluginInstance.setup(npSetup.core, npSetup.plugins, __LEGACY); -``` - -#### 7. Switch to new platform services - -At this point, your plugin has one or more uiExport entry files that together contain all of the webpack alias-based import statements needed to run your plugin. Each one of these import statements is either a service that is or will be provided by core or a service provided by another plugin. - -As new non-angular-based APIs are added, update your entry files to import the correct service API. The service APIs provided directly from the new platform can be imported through the `ui/new_platform` module for the duration of this migration. As new services are added, they will also be exposed there. This includes all core services as well as any APIs provided by real new platform plugins. - -Once all of the existing webpack alias-based imports in your plugin switch to `ui/new_platform`, it no longer depends directly on the legacy "core" features or other legacy plugins, so it is ready to officially migrate to the new platform. - -#### 8. Migrate to the new plugin system - -With all of your services converted, you are now ready to complete your migration to the new platform. - -Many plugins at this point will copy over their plugin definition class & the code from their various service/uiExport entry files directly into the new plugin directory. The `legacy.ts` shim file can then simply be deleted. - -With the previous steps resolved, this final step should be easy, but the exact process may vary plugin by plugin, so when you're at this point talk to the platform team to figure out the exact changes you need. - -Other plugins may want to move subsystems over individually. Examples of pieces that could be broken up: - -- Registration logic (eg. viz types, embeddables, chrome nav controls) -- Application mounting -- Polling mechanisms (eg. job worker) - -#### Bonus: Tips for complex migration scenarios - -For a few plugins, some of these steps (such as angular removal) could be a months-long process. In those cases, it may be helpful from an organizational perspective to maintain a clear separation of code that is and isn't "ready" for the new platform. - -One convention that is useful for this is creating a dedicated `public/np_ready` directory to house the code that is ready to migrate, and gradually move more and more code into it until the rest of your plugin is essentially empty. At that point, you'll be able to copy your `index.ts`, `plugin.ts`, and the contents of `./np_ready` over into your plugin in the new platform, leaving your legacy shim behind. This carries the added benefit of providing a way for us to introduce helpful tooling in the future, such as [custom eslint rules](https://github.com/elastic/kibana/pull/40537), which could be run against that specific directory to ensure your code is ready to migrate. - -## Keep Kibana fast - -**tl;dr**: Load as much code lazily as possible. -Everyone loves snappy applications with responsive UI and hates spinners. Users deserve the best user experiences regardless of whether they run Kibana locally or in the cloud, regardless of their hardware & environment. -There are 2 main aspects of the perceived speed of an application: loading time and responsiveness to user actions. -New platform loads and bootstraps **all** the plugins whenever a user lands on any page. It means that adding every new application affects overall **loading performance** in the new platform, as plugin code is loaded **eagerly** to initialize the plugin and provide plugin API to dependent plugins. -However, it's usually not necessary that the whole plugin code should be loaded and initialized at once. The plugin could keep on loading code covering API functionality on Kibana bootstrap but load UI related code lazily on-demand, when an application page or management section is mounted. -Always prefer to require UI root components lazily when possible (such as in mount handlers). Even if their size may seem negligible, they are likely using some heavy-weight libraries that will also be removed from the initial plugin bundle, therefore, reducing its size by a significant amount. - -```typescript -import { Plugin, CoreSetup, AppMountParameters } from 'src/core/public'; -export class MyPlugin implements Plugin { - setup(core: CoreSetup, plugins: SetupDeps) { - core.application.register({ - id: 'app', - title: 'My app', - async mount(params: AppMountParameters) { - const { mountApp } = await import('./app/mount_app'); - return mountApp(await core.getStartServices(), params); - }, - }); - plugins.management.sections.section.kibana.registerApp({ - id: 'app', - title: 'My app', - order: 1, - async mount(params) { - const { mountManagementSection } = await import('./app/mount_management_section'); - return mountManagementSection(coreSetup, params); - }, - }); - return { - doSomething() {}, - }; - } -} -``` - -#### How to understand how big the bundle size of my plugin is? - -New platform plugins are distributed as a pre-built with `@kbn/optimizer` package artifacts. It allows us to get rid of the shipping of `optimizer` in the distributable version of Kibana. -Every NP plugin artifact contains all plugin dependencies required to run the plugin, except some stateful dependencies shared across plugin bundles via `@kbn/ui-shared-deps`. -It means that NP plugin artifacts tend to have a bigger size than the legacy platform version. -To understand the current size of your plugin artifact, run `@kbn/optimizer` as - -```bash -node scripts/build_kibana_platform_plugins.js --dist --profile --focus=my_plugin -``` - -and check the output in the `target` sub-folder of your plugin folder - -```bash -ls -lh plugins/my_plugin/target/public/ -# output -# an async chunk loaded on demand -... 262K 0.plugin.js -# eagerly loaded chunk -... 50K my_plugin.plugin.js -``` - -you might see at least one js bundle - `my_plugin.plugin.js`. This is the only artifact loaded by the platform during bootstrap in the browser. The rule of thumb is to keep its size as small as possible. -Other lazily loaded parts of your plugin present in the same folder as separate chunks under `{number}.plugin.js` names. -If you want to investigate what your plugin bundle consists of you need to run `@kbn/optimizer` with `--profile` flag to get generated [webpack stats file](https://webpack.js.org/api/stats/). - -```bash -node scripts/build_kibana_platform_plugins.js --dist --no-examples --profile -``` - -Many OSS tools are allowing you to analyze generated stats file - -- [an official tool](http://webpack.github.io/analyse/#modules) from webpack authors -- [webpack-visualizer](https://chrisbateman.github.io/webpack-visualizer/) - -## Frequently asked questions - -### Is migrating a plugin an all-or-nothing thing? - -It doesn't have to be. Within the Kibana repo, you can have a new platform plugin with the same name as a legacy plugin. - -Technically speaking, you could move all of your server-side code to the new platform and leave the legacy browser-side code where it is. You can even move only a portion of code on your server at a time, like on a route by route basis for example. - -For any new plugin APIs being defined as part of this process, it is recommended to create those APIs in new platform plugins, and then core will pass them down into the legacy world to be used there. This leaves one less thing you need to migrate. - -### Do plugins need to be converted to TypeScript? - -No. That said, the migration process will require a lot of refactoring, and TypeScript will make this dramatically easier and less risky. Independent of the new platform effort, our goals are to convert the entire Kibana repo to TypeScript over time, so now is a great time to do it. - -At the very least, any plugin exposing an extension point should do so with first-class type support so downstream plugins that _are_ using TypeScript can depend on those types. - -### Can static code be shared between plugins? - -**tl;dr** Yes, but it should be limited to pure functional code that does not depend on outside state from the platform or a plugin. - -#### Background - -> Don't care why, just want to know how? Skip to the ["how" section below](#how-to-decide-what-code-can-be-statically-imported). - -Legacy Kibana has never run as a single page application. Each plugin has it's own entry point and gets "ownership" of every module it imports when it is loaded into the browser. This has allowed stateful modules to work without breaking other plugins because each time the user navigates to a new plugin, the browser reloads with a different entry bundle, clearing the state of the previous plugin. - -Because of this "feature" many undesirable things developed in the legacy platform: - -- We had to invent an unconventional and fragile way of allowing plugins to integrate and communicate with one another, `uiExports`. -- It has never mattered if shared modules in `ui/public` were stateful or cleaned up after themselves, so many of them behave like global singletons. These modules could never work in single-page application because of this state. -- We've had to ship Webpack with Kibana in production so plugins could be disabled or installed and still have access to all the "platform" features of `ui/public` modules and all the `uiExports` would be present for any enabled plugins. -- We've had to require that 3rd-party plugin developers release a new version of their plugin for each and every version of Kibana because these shared modules have no stable API and are coupled tightly both to their consumers and the Kibana platform. - -The New Platform's primary goal is to make developing Kibana plugins easier, both for developers at Elastic and in the community. The approach we've chosen is to enable plugins to integrate and communicate _at runtime_ rather than at build time. By wiring services and plugins up at runtime, we can ship stable APIs that do not have to be compiled into every plugin and instead live inside a solid core that each plugin gets connected to when it executes. - -This applies to APIs that plugins expose as well. In the new platform, plugins can communicate through an explicit interface rather than importing all the code from one another and having to recompile Webpack bundles when a plugin is disabled or a new plugin is installed. - -You've probably noticed that this is not the typical way a JavaScript developer works. We're used to importing code at the top of files (and for some use-cases this is still fine). However, we're not building a typical JavaScript application, we're building an application that is installed into a dynamic system (the Kibana Platform). - -#### What goes wrong if I do share modules with state? - -One goal of a stable Kibana core API is to allow Kibana instances to run plugins with varying minor versions, e.g. Kibana 8.4.0 running PluginX 8.0.1 and PluginY 8.2.5. This will be made possible by building each plugin into an “immutable bundle” that can be installed into Kibana. You can think of an immutable bundle as code that doesn't share any imported dependencies with any other bundles, that is all it's dependencies are bundled together. - -This method of building and installing plugins comes with side effects which are important to be aware of when developing a plugin. - -- **Any code you export to other plugins will get copied into their bundles.** If a plugin is built for 8.1 and is running on Kibana 8.2, any modules it imported that changed will not be updated in that plugin. -- **When a plugin is disabled, other plugins can still import its static exports.** This can make code difficult to reason about and result in poor user experience. For example, users generally expect that all of a plugin’s features will be disabled when the plugin is disabled. If another plugin imports a disabled plugin’s feature and exposes it to the user, then users will be confused about whether that plugin really is disabled or not. -- **Plugins cannot share state by importing each others modules.** Sharing state via imports does not work because exported modules will be copied into plugins that import them. Let’s say your plugin exports a module that’s imported by other plugins. If your plugin populates state into this module, a natural expectation would be that the other plugins now have access to this state. However, because those plugins have copies of the exported module, this assumption will be incorrect. - -#### How to decide what code can be statically imported - -The general rule of thumb here is: any module that is not purely functional should not be shared statically, and instead should be exposed at runtime via the plugin's `setup` and/or `start` contracts. - -Ask yourself these questions when deciding to share code through static exports or plugin contracts: - -- Is its behavior dependent on any state populated from my plugin? -- If a plugin uses an old copy (from an older version of Kibana) of this module, will it still break? - -If you answered yes to any of the above questions, you probably have an impure module that cannot be shared across plugins. Another way to think about this: if someone literally copied and pasted your exported module into their plugin, would it break if: - -- Your original module changed in a future version and the copy was the old version; or -- If your plugin doesn’t have access to the copied version in the other plugin (because it doesn't know about it). - -If your module were to break for either of these reasons, it should not be exported statically. This can be more easily illustrated by examples of what can and cannot be exported statically. - -Examples of code that could be shared statically: - -- Constants. Strings and numbers that do not ever change (even between Kibana versions) - - If constants do change between Kibana versions, then they should only be exported statically if the old value would not _break_ if it is still used. For instance, exporting a constant like `VALID_INDEX_NAME_CHARACTERS` would be fine, but exporting a constant like `API_BASE_PATH` would not because if this changed, old bundles using the previous value would break. -- React components that do not depend on module state. - - Make sure these components are not dependent on or pre-wired to Core services. In many of these cases you can export a HOC that takes the Core service and returns a component wired up to that particular service instance. - - These components do not need to be "pure" in the sense that they do not use React state or React hooks, they just cannot rely on state inside the module or any modules it imports. -- Pure computation functions, for example lodash-like functions like `mapValues`. - -Examples of code that could **not** be shared statically and how to fix it: - -- A function that calls a Core service, but does not take that service as a parameter. - - - If the function does not take a client as an argument, it must have an instance of the client in its internal state, populated by your plugin. This would not work across plugin boundaries because your plugin would not be able to call `setClient` in the copy of this module in other plugins: - - ```js - let esClient; - export const setClient = (client) => (esClient = client); - export const query = (params) => esClient.search(params); - ``` - - - This could be fixed by requiring the calling code to provide the client: - - ```js - export const query = (esClient, params) => esClient.search(params); - ``` - -- A function that allows other plugins to register values that get pushed into an array defined internally to the module. - - - The values registered would only be visible to the plugin that imported it. Each plugin would essentially have their own registry of visTypes that is not visible to any other plugins. - - ```js - const visTypes = []; - export const registerVisType = (visType) => visTypes.push(visType); - export const getVisTypes = () => visTypes; - ``` - - - For state that does need to be shared across plugins, you will need to expose methods in your plugin's `setup` and `start` contracts. - - ```js - class MyPlugin { - constructor() { - this.visTypes = []; - } - setup() { - return { - registerVisType: (visType) => this.visTypes.push(visType), - }; - } - - start() { - return { - getVisTypes: () => this.visTypes, - }; - } - } - ``` - -In any case, you will also need to carefully consider backward compatibility (BWC). Whatever you choose to export will need to work for the entire major version cycle (eg. Kibana 8.0-8.9), regardless of which version of the export a plugin has bundled and which minor version of Kibana they're using. Breaking changes to static exports are only allowed in major versions. However, during the 7.x cycle, all of these APIs are considered "experimental" and can be broken at any time. We will not consider these APIs stable until 8.0 at the earliest. - -#### Concrete Example - -Ok, you've decided you want to export static code from your plugin, how do you do it? The New Platform only considers values exported from `my_plugin/public` and `my_plugin/server` to be stable. The linter will only let you import statically from these top-level modules. In the future, our tooling will enforce that these APIs do not break between minor versions. All code shared among plugins should be exported in these modules like so: - -```ts -// my_plugin/public/index.ts -export { MyPureComponent } from './components'; - -// regular plugin export used by core to initialize your plugin -export const plugin = ...; -``` - -These can then be imported using relative paths from other plugins: - -```ts -// my_other_plugin/public/components/my_app.ts -import { MyPureComponent } from '../my_plugin/public'; -``` - -If you have code that should be available to other plugins on both the client and server, you can have a common directory. _See [How is "common" code shared on both the client and server?](#how-is-common-code-shared-on-both-the-client-and-server)_ - -### How can I avoid passing Core services deeply within my UI component tree? - -There are some Core services that are purely presentational, for example `core.overlays.openModal()` or `core.application.createLink()` where UI code does need access to these deeply within your application. However, passing these services down as props throughout your application leads to lots of boilerplate. To avoid this, you have three options: - -1. Use an abstraction layer, like Redux, to decouple your UI code from core (**this is the highly preferred option**); or - - [redux-thunk](https://github.com/reduxjs/redux-thunk#injecting-a-custom-argument) and [redux-saga](https://redux-saga.js.org/docs/api/#createsagamiddlewareoptions) already have ways to do this. -2. Use React Context to provide these services to large parts of your React tree; or -3. Create a high-order-component that injects core into a React component; or - - This would be a stateful module that holds a reference to Core, but provides it as props to components with a `withCore(MyComponent)` interface. This can make testing components simpler. (Note: this module cannot be shared across plugin boundaries, see above). -4. Create a global singleton module that gets imported into each module that needs it. (Note: this module cannot be shared across plugin boundaries, see above). [Example](https://gist.github.com/epixa/06c8eeabd99da3c7545ab295e49acdc3). - -If you find that you need many different Core services throughout your application, this may be a code smell and could lead to pain down the road. For instance, if you need access to an HTTP Client or SavedObjectsClient in many places in your React tree, it's likely that a data layer abstraction (like Redux) could make developing your plugin much simpler (see option 1). - -Without such an abstraction, you will need to mock out Core services throughout your test suite and will couple your UI code very tightly to Core. However, if you can contain all of your integration points with Core to Redux middleware and/or reducers, you only need to mock Core services once, and benefit from being able to change those integrations with Core in one place rather than many. This will become incredibly handy when Core APIs have breaking changes. - -### How is "common" code shared on both the client and server? - -There is no formal notion of "common" code that can safely be imported from either client-side or server-side code. However, if a plugin author wishes to maintain a set of code in their plugin in a single place and then expose it to both server-side and client-side code, they can do so by exporting in the index files for both the `server` and `public` directories. - -Plugins should not ever import code from deeply inside another plugin (eg. `my_plugin/public/components`) or from other top-level directories (eg. `my_plugin/common/constants`) as these are not checked for breaking changes and are considered unstable and subject to change at any time. You can have other top-level directories like `my_plugin/common`, but our tooling will not treat these as a stable API and linter rules will prevent importing from these directories _from outside the plugin_. - -The benefit of this approach is that the details of where code lives and whether it is accessible in multiple runtimes is an implementation detail of the plugin itself. A plugin consumer that is writing client-side code only ever needs to concern themselves with the client-side contracts being exposed, and the same can be said for server-side contracts on the server. - -A plugin author that decides some set of code should diverge from having a single "common" definition can now safely change the implementation details without impacting downstream consumers. - -_See all [conventions for first-party Elastic plugins](./CONVENTIONS.md)_. - -### When does code go into a plugin, core, or packages? - -This is an impossible question to answer definitively for all circumstances. For each time this question is raised, we must carefully consider to what extent we think that code is relevant to almost everyone developing in Kibana, what license the code is shipping under, which teams are most appropriate to "own" that code, is the code stateless etc. - -As a general rule of thumb, most code in Kibana should exist in plugins. Plugins are the most obvious way that we break Kibana down into sets of specialized domains with controls around interdependency communication and management. It's always possible to move code from a plugin into core if we ever decide to do so, but it's much more disruptive to move code from core to a plugin. - -There is essentially no code that _can't_ exist in a plugin. When in doubt, put the code in a plugin. - -After plugins, core is where most of the rest of the code in Kibana will exist. Functionality that's critical to the reliable execution of the Kibana process belongs in core. Services that will widely be used by nearly every non-trivial plugin in any Kibana install belong in core. Functionality that is too specialized to specific use cases should not be in core, so while something like generic saved objects is a core concern, index patterns are not. - -The packages directory should have the least amount of code in Kibana. Just because some piece of code is not stateful doesn't mean it should go into packages. The packages directory exists to aid us in our quest to centralize as many of our owned dependencies in this single monorepo, so it's the logical place to put things like Kibana specific forks of node modules or vendor dependencies. - -### How do I build my shim for New Platform services? - -Many of the utilities you're using to build your plugins are available in the New Platform or in New Platform plugins. To help you build the shim for these new services, use the tables below to find where the New Platform equivalent lives. - -#### Client-side - -TODO: add links to API docs on items in "New Platform" column. - -##### Core services - -In client code, `core` can be imported in legacy plugins via the `ui/new_platform` module. - -```ts -import { npStart: { core } } from 'ui/new_platform'; -``` - -| Legacy Platform | New Platform | Notes | -| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| `chrome.addBasePath` | [`core.http.basePath.prepend`](/docs/development/core/public/kibana-plugin-core-public.httpsetup.basepath.md) | | -| `chrome.navLinks.update` | [`core.appbase.updater`](/docs/development/core/public/kibana-plugin-core-public.appbase.updater_.md) | Use the `updater$` property when registering your application via `core.application.register` | -| `chrome.breadcrumbs.set` | [`core.chrome.setBreadcrumbs`](/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md) | | -| `chrome.getUiSettingsClient` | [`core.uiSettings`](/docs/development/core/public/kibana-plugin-core-public.uisettingsclient.md) | | -| `chrome.helpExtension.set` | [`core.chrome.setHelpExtension`](/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md) | | -| `chrome.setVisible` | [`core.chrome.setIsVisible`](/docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md) | | -| `chrome.setRootTemplate` / `chrome.setRootController` | -- | Use application mounting via `core.application.register` (not available to legacy plugins at this time). | -| `import { recentlyAccessed } from 'ui/persisted_log'` | [`core.chrome.recentlyAccessed`](/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md) | | -| `ui/capabilities` | [`core.application.capabilities`](/docs/development/core/public/kibana-plugin-core-public.capabilities.md) | | -| `ui/documentation_links` | [`core.docLinks`](/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md) | | -| `ui/kfetch` | [`core.http`](/docs/development/core/public/kibana-plugin-core-public.httpservicebase.md) | API is nearly identical | -| `ui/notify` | [`core.notifications`](/docs/development/core/public/kibana-plugin-core-public.notificationsstart.md) and [`core.overlays`](/docs/development/core/public/kibana-plugin-core-public.overlaystart.md) | Toast messages are in `notifications`, banners are in `overlays`. May be combined later. | -| `ui/routes` | -- | There is no global routing mechanism. Each app [configures its own routing](/rfcs/text/0004_application_service_mounting.md#complete-example). | -| `ui/saved_objects` | [`core.savedObjects`](/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md) | Client API is the same | -| `ui/doc_title` | [`core.chrome.docTitle`](/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md) | | -| `uiExports/injectedVars` / `chrome.getInjected` | [Configure plugin](#configure-plugin) and [`PluginConfigDescriptor.exposeToBrowser`](/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md) | Can only be used to expose configuration properties | - -_See also: [Public's CoreStart API Docs](/docs/development/core/public/kibana-plugin-core-public.corestart.md)_ - -##### Plugins for shared application services - -In client code, we have a series of plugins which house shared application services which are not technically part of `core`, but are often used in Kibana plugins. - -This table maps some of the most commonly used legacy items to their new platform locations. - -```ts -import { npStart: { plugins } } from 'ui/new_platform'; -``` - -| Legacy Platform | New Platform | Notes | -| ------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -| `import 'ui/apply_filters'` | N/A. Replaced by triggering an APPLY_FILTER_TRIGGER trigger. | Directive is deprecated. | -| `import 'ui/filter_bar'` | `import { FilterBar } from '../data/public'` | Directive is deprecated. | -| `import 'ui/query_bar'` | `import { QueryStringInput } from '../data/public'` | Directives are deprecated. | -| `import 'ui/search_bar'` | `import { SearchBar } from '../data/public'` | Directive is deprecated. | -| `import 'ui/kbn_top_nav'` | `import { TopNavMenu } from '../navigation/public'` | Directive was removed. | -| `ui/saved_objects/components/saved_object_finder` | `import { SavedObjectFinder } from '../saved_objects/public'` | | -| `core_plugins/interpreter` | `plugins.data.expressions` | -| `ui/courier` | `plugins.data.search` | -| `ui/agg_types` | `plugins.data.search.aggs` | Most code is available for static import. Stateful code is part of the `search` service. -| `ui/embeddable` | `plugins.embeddables` | -| `ui/filter_manager` | `plugins.data.filter` | -- | -| `ui/index_patterns` | `plugins.data.indexPatterns` | -| `import 'ui/management'` | `plugins.management.sections` | | -| `import 'ui/registry/field_format_editors'` | `plugins.indexPatternManagement.fieldFormatEditors` | | -| `ui/registry/field_formats` | `plugins.data.fieldFormats` | | -| `ui/registry/feature_catalogue` | `plugins.home.featureCatalogue.register` | Must add `home` as a dependency in your kibana.json. | -| `ui/registry/vis_types` | `plugins.visualizations` | -- | -| `ui/vis` | `plugins.visualizations` | -- | -| `ui/share` | `plugins.share` | `showShareContextMenu` is now called `toggleShareContextMenu`, `ShareContextMenuExtensionsRegistryProvider` is now called `register` | -| `ui/vis/vis_factory` | `plugins.visualizations` | -- | -| `ui/vis/vis_filters` | `plugins.visualizations.filters` | -- | -| `ui/utils/parse_es_interval` | `import { search: { aggs: { parseEsInterval } } } from '../data/public'` | `parseEsInterval`, `ParsedInterval`, `InvalidEsCalendarIntervalError`, `InvalidEsIntervalFormatError` items were moved to the `Data Plugin` as a static code | - -#### Server-side - -##### Core services - -In server code, `core` can be accessed from either `server.newPlatform` or `kbnServer.newPlatform`. There are not currently very many services available on the server-side: - -| Legacy Platform | New Platform | Notes | -| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `server.config()` | [`initializerContext.config.create()`](/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md) | Must also define schema. See _[how to configure plugin](#configure-plugin)_ | -| `server.route` | [`core.http.createRouter`](/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md) | [Examples](./MIGRATION_EXAMPLES.md#route-registration) | -| `server.renderApp()` | [`response.renderCoreApp()`](docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md) | [Examples](./MIGRATION_EXAMPLES.md#render-html-content) | -| `server.renderAppWithDefaultConfig()` | [`response.renderAnonymousCoreApp()`](docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md) | [Examples](./MIGRATION_EXAMPLES.md#render-html-content) | -| `request.getBasePath()` | [`core.http.basePath.get`](/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md) | | -| `server.plugins.elasticsearch.getCluster('data')` | [`context.core.elasticsearch.dataClient`](/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md) | | -| `server.plugins.elasticsearch.getCluster('admin')` | [`context.core.elasticsearch.adminClient`](/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md) | | -| `server.plugins.elasticsearch.createCluster(...)` | [`core.elasticsearch.legacy.createClient`](/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.legacy.md) | | -| `server.savedObjects.setScopedSavedObjectsClientFactory` | [`core.savedObjects.setClientFactoryProvider`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md) | | -| `server.savedObjects.addScopedSavedObjectsClientWrapperFactory` | [`core.savedObjects.addClientWrapper`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md) | | -| `server.savedObjects.getSavedObjectsRepository` | [`core.savedObjects.createInternalRepository`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md) [`core.savedObjects.createScopedRepository`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md) | | -| `server.savedObjects.getScopedSavedObjectsClient` | [`core.savedObjects.getScopedClient`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md) | | -| `request.getSavedObjectsClient` | [`context.core.savedObjects.client`](/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md) | | -| `request.getUiSettingsService` | [`context.core.uiSettings.client`](/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md) | | -| `kibana.Plugin.deprecations` | [Handle plugin configuration deprecations](#handle-plugin-config-deprecations) and [`PluginConfigDescriptor.deprecations`](docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md) | Deprecations from New Platform are not applied to legacy configuration | -| `kibana.Plugin.savedObjectSchemas` | [`core.savedObjects.registerType`](docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) | [Examples](./MIGRATION_EXAMPLES.md#saved-objects-types) | -| `kibana.Plugin.mappings` | [`core.savedObjects.registerType`](docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) | [Examples](./MIGRATION_EXAMPLES.md#saved-objects-types) | -| `kibana.Plugin.migrations` | [`core.savedObjects.registerType`](docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) | [Examples](./MIGRATION_EXAMPLES.md#saved-objects-types) | -| `kibana.Plugin.savedObjectsManagement` | [`core.savedObjects.registerType`](docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) | [Examples](./MIGRATION_EXAMPLES.md#saved-objects-types) | - -_See also: [Server's CoreSetup API Docs](/docs/development/core/server/kibana-plugin-core-server.coresetup.md)_ - -##### Plugin services - -| Legacy Platform | New Platform | Notes | -| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ----- | -| `server.plugins.xpack_main.registerFeature` | [`plugins.features.registerKibanaFeature`](x-pack/plugins/features/server/plugin.ts) | | -| `server.plugins.xpack_main.feature(pluginID).registerLicenseCheckResultsGenerator` | [`x-pack licensing plugin`](/x-pack/plugins/licensing/README.md) | | - -#### UI Exports - -The legacy platform uses a set of "uiExports" to inject modules from one plugin into other plugins. This mechansim is not necessary in the New Platform because all plugins are executed on the page at once (though only one application) is rendered at a time. - -This table shows where these uiExports have moved to in the New Platform. In most cases, if a uiExport you need is not yet available in the New Platform, you may leave in your legacy plugin for the time being and continue to migrate the rest of your app to the New Platform. - -| Legacy Platform | New Platform | Notes | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -| `aliases` | | | -| `app` | [`core.application.register`](/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md) | | -| `canvas` | | Should be an API on the canvas plugin. | -| `chromeNavControls` | [`core.chrome.navControls.register{Left,Right}`](/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md) | | -| `contextMenuActions` | | Should be an API on the devTools plugin. | -| `devTools` | | | -| `docViews` | [`plugins.discover.docViews.addDocView`](./src/plugins/discover/public/doc_views) | Should be an API on the discover plugin. | -| `embeddableActions` | | Should be an API on the embeddables plugin. | -| `embeddableFactories` | | Should be an API on the embeddables plugin. | -| `fieldFormatEditors` | | | -| `fieldFormats` | [`plugins.data.fieldFormats`](./src/plugins/data/public/field_formats) | | -| `hacks` | n/a | Just run the code in your plugin's `start` method. | -| `home` | [`plugins.home.featureCatalogue.register`](./src/plugins/home/public/feature_catalogue) | Must add `home` as a dependency in your kibana.json. | -| `indexManagement` | | Should be an API on the indexManagement plugin. | -| `injectDefaultVars` | n/a | Plugins will only be able to allow config values for the frontend. See [#41990](https://github.com/elastic/kibana/issues/41990) | -| `inspectorViews` | | Should be an API on the data (?) plugin. | -| `interpreter` | | Should be an API on the interpreter plugin. | -| `links` | n/a | Not necessary, just register your app via `core.application.register` | -| `managementSections` | [`plugins.management.sections.register`](/rfcs/text/0006_management_section_service.md) | | -| `mappings` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `migrations` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `navbarExtensions` | n/a | Deprecated | -| `savedObjectSchemas` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `savedObjectsManagement` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `savedObjectTypes` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `search` | | | -| `shareContextMenuExtensions` | | | -| `taskDefinitions` | | Should be an API on the taskManager plugin. | -| `uiCapabilities` | [`core.application.register`](/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md) | | -| `uiSettingDefaults` | [`core.uiSettings.register`](/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md) | | -| `validations` | | Part of SavedObjects, see [#33587](https://github.com/elastic/kibana/issues/33587) | -| `visEditorTypes` | | | -| `visTypeEnhancers` | | | -| `visTypes` | `plugins.visualizations.types` | | -| `visualize` | | | - -#### Plugin Spec - -| Legacy Platform | New Platform | -| ----------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `id` | [`manifest.id`](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) | -| `require` | [`manifest.requiredPlugins`](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) | -| `version` | [`manifest.version`](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) | -| `kibanaVersion` | [`manifest.kibanaVersion`](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) | -| `configPrefix` | [`manifest.configPath`](/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md) | -| `config` | [export config](#configure-plugin) | -| `deprecations` | [export config](#handle-plugin-configuration-deprecations) | -| `uiExports` | `N/A`. Use platform & plugin public contracts | -| `publicDir` | `N/A`. Platform serves static assets from `/public/assets` folder under `/plugins/{id}/assets/{path*}` URL. | -| `preInit`, `init`, `postInit` | `N/A`. Use NP [lifecycle events](#services) | - -## How to - -### Configure plugin - -Kibana provides ConfigService if a plugin developer may want to support adjustable runtime behavior for their plugins. Access to Kibana config in New platform has been subject to significant refactoring. - -Config service does not provide access to the whole config anymore. New platform plugin cannot read configuration parameters of the core services nor other plugins directly. Use plugin contract to provide data. - -```js -// your-plugin.js -// in Legacy platform -const basePath = config.get('server.basePath'); -// in New platform -const basePath = core.http.basePath.get(request); -``` - -In order to have access to your plugin config, you *should*: - -- Declare plugin specific "configPath" (will fallback to plugin "id" if not specified) in `kibana.json` file. -- Export schema validation for config from plugin's main file. Schema is mandatory. If a plugin reads from the config without schema declaration, ConfigService will throw an error. - -```typescript -// my_plugin/server/index.ts -import { schema, TypeOf } from '@kbn/config-schema'; -export const plugin = ... -export const config = { - schema: schema.object(...), -}; -export type MyPluginConfigType = TypeOf; -``` - -- Read config value exposed via initializerContext. No config path is required. - -```typescript -class MyPlugin { - constructor(initializerContext: PluginInitializerContext) { - this.config$ = initializerContext.config.create(); - // or if config is optional: - this.config$ = initializerContext.config.createIfExists(); - } -``` - -If your plugin also have a client-side part, you can also expose configuration properties to it using the configuration `exposeToBrowser` allow-list property. - -```typescript -// my_plugin/server/index.ts -import { schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor } from 'kibana/server'; - -const configSchema = schema.object({ - secret: schema.string({ defaultValue: 'Only on server' }), - uiProp: schema.string({ defaultValue: 'Accessible from client' }), -}); - -type ConfigType = TypeOf; - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - uiProp: true, - }, - schema: configSchema, -}; -``` - -Configuration containing only the exposed properties will be then available on the client-side using the plugin's `initializerContext`: - -```typescript -// my_plugin/public/index.ts -interface ClientConfigType { - uiProp: string; -} - -export class Plugin implements Plugin { - constructor(private readonly initializerContext: PluginInitializerContext) {} - - public async setup(core: CoreSetup, deps: {}) { - const config = this.initializerContext.config.get(); - // ... - } -``` - -All plugins are considered enabled by default. If you want to disable your plugin by default, you could declare the `enabled` flag in plugin config. This is a special Kibana platform key. The platform reads its value and won't create a plugin instance if `enabled: false`. - -```js -export const config = { - schema: schema.object({ enabled: schema.boolean({ defaultValue: false }) }), -}; -``` - -#### Handle plugin configuration deprecations - -If your plugin have deprecated properties, you can describe them using the `deprecations` config descriptor field. - -The system is quite similar to the legacy plugin's deprecation management. The most important difference -is that deprecations are managed on a per-plugin basis, meaning that you don't need to specify the whole -property path, but use the relative path from your plugin's configuration root. - -```typescript -// my_plugin/server/index.ts -import { schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor } from 'kibana/server'; - -const configSchema = schema.object({ - newProperty: schema.string({ defaultValue: 'Some string' }), -}); - -type ConfigType = TypeOf; - -export const config: PluginConfigDescriptor = { - schema: configSchema, - deprecations: ({ rename, unused }) => [ - rename('oldProperty', 'newProperty'), - unused('someUnusedProperty'), - ], -}; -``` - -In some cases, accessing the whole configuration for deprecations is necessary. For these edge cases, -`renameFromRoot` and `unusedFromRoot` are also accessible when declaring deprecations. - -```typescript -// my_plugin/server/index.ts -export const config: PluginConfigDescriptor = { - schema: configSchema, - deprecations: ({ renameFromRoot, unusedFromRoot }) => [ - renameFromRoot('oldplugin.property', 'myplugin.property'), - unusedFromRoot('oldplugin.deprecated'), - ], -}; -``` - -Note that deprecations registered in new platform's plugins are not applied to the legacy configuration. -During migration, if you still need the deprecations to be effective in the legacy plugin, you need to declare them in -both plugin definitions. - -### Use scoped services - -Whenever Kibana needs to get access to data saved in elasticsearch, it should perform a check whether an end-user has access to the data. -In the legacy platform, Kibana requires to bind elasticsearch related API with an incoming request to access elasticsearch service on behalf of a user. - -```js -async function handler(req, res) { - const dataCluster = server.plugins.elasticsearch.getCluster('data'); - const data = await dataCluster.callWithRequest(req, 'ping'); -} -``` - -The new platform introduced [a handler interface](/rfcs/text/0003_handler_interface.md) on the server-side to perform that association internally. Core services, that require impersonation with an incoming request, are -exposed via `context` argument of [the request handler interface.](/docs/development/core/server/kibana-plugin-core-server.requesthandler.md) -The above example looks in the new platform as - -```js -async function handler(context, req, res) { - const data = await context.core.elasticsearch.adminClient.callAsInternalUser('ping'); -} -``` - -The [request handler context](/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md) exposed the next scoped **core** services: - -| Legacy Platform | New Platform | -| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| `request.getSavedObjectsClient` | [`context.savedObjects.client`](/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md) | -| `server.plugins.elasticsearch.getCluster('admin')` | [`context.elasticsearch.adminClient`](/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md) | -| `server.plugins.elasticsearch.getCluster('data')` | [`context.elasticsearch.dataClient`](/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md) | -| `request.getUiSettingsService` | [`context.uiSettings.client`](/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md) | - -#### Declare a custom scoped service - -Plugins can extend the handler context with custom API that will be available to the plugin itself and all dependent plugins. -For example, the plugin creates a custom elasticsearch client and want to use it via the request handler context: - -```ts -import { CoreSetup, IScopedClusterClient } from 'kibana/server'; - -export interface MyPluginContext { - client: IScopedClusterClient; -} - -// extend RequestHandlerContext when a dependent plugin imports MyPluginContext from the file -declare module 'src/core/server' { - interface RequestHandlerContext { - myPlugin?: MyPluginContext; - } -} - -class Plugin { - setup(core: CoreSetup) { - const client = core.elasticsearch.createClient('myClient'); - core.http.registerRouteHandlerContext('myPlugin', (context, req, res) => { - return { client: client.asScoped(req) }; - }); - - router.get( - { path: '/api/my-plugin/', validate }, - async (context, req, res) => { - const data = await context.myPlugin.client.callAsCurrentUser('endpoint'); - ... - } - ); - } -``` - -### Mock new platform services in tests - -#### Writing mocks for your plugin - -Core services already provide mocks to simplify testing and make sure plugins always rely on valid public contracts: - -```typescript -// my_plugin/server/plugin.test.ts -import { configServiceMock } from 'src/core/server/mocks'; - -const configService = configServiceMock.create(); -configService.atPath.mockReturnValue(config$); -… -const plugin = new MyPlugin({ configService }, …); -``` - -Or if you need to get the whole core `setup` or `start` contracts: - -```typescript -// my_plugin/public/plugin.test.ts -import { coreMock } from 'src/core/public/mocks'; - -const coreSetup = coreMock.createSetup(); -coreSetup.uiSettings.get.mockImplementation((key: string) => { - … -}); -… -const plugin = new MyPlugin(coreSetup, ...); -``` - -Although it isn't mandatory, we strongly recommended you export your plugin mocks as well, in order for dependent plugins to use them in tests. Your plugin mocks should be exported from the root `/server` and `/public` directories in your plugin: - -```typescript -// my_plugin/server/mocks.ts or my_plugin/public/mocks.ts -const createSetupContractMock = () => { - const startContract: jest.Mocked= { - isValid: jest.fn(); - } - // here we already type check as TS infers to the correct type declared above - startContract.isValid.mockReturnValue(true); - return startContract; -} - -export const myPluginMocks = { - createSetup: createSetupContractMock, - createStart: … -} -``` - -Plugin mocks should consist of mocks for *public APIs only*: setup/start/stop contracts. Mocks aren't necessary for pure functions as other plugins can call the original implementation in tests. - -#### Using mocks in your tests - -During the migration process, it is likely you are preparing your plugin by shimming in new platform-ready dependencies via the legacy `ui/new_platform` module: - -```typescript -import { npSetup, npStart } from 'ui/new_platform'; -``` - -If you are using this approach, the easiest way to mock core and new platform-ready plugins in your legacy tests is to mock the `ui/new_platform` module: - -```typescript -jest.mock('ui/new_platform'); -``` - -This will automatically mock the services in `ui/new_platform` thanks to the [helpers that have been added](../../src/legacy/ui/public/new_platform/__mocks__/helpers.ts) to that module. - -If others are consuming your plugin's new platform contracts via the `ui/new_platform` module, you'll want to update the helpers as well to ensure your contracts are properly mocked. - -> Note: The `ui/new_platform` mock is only designed for use by old Jest tests. If you are writing new tests, you should structure your code and tests such that you don't need this mock. Instead, you should import the `core` mock directly and instantiate it. - -### Provide Legacy Platform API to the New platform plugin - -#### On the server side - -During migration, you can face a problem that not all API is available in the New platform yet. You can work around this by extending your -new platform plugin with Legacy API: - -- create New platform plugin -- New platform plugin should expose a method `registerLegacyAPI` that allows passing API from the Legacy platform and store it in the NP plugin instance - -```js -class MyPlugin { - public async setup(core){ - return { - registerLegacyAPI: (legacyAPI) => (this.legacyAPI = legacyAPI) - } - } -} -``` - -- The legacy plugin provides API calling `registerLegacyAPI` - -```js -new kibana.Plugin({ - init(server){ - const myPlugin = server.newPlatform.setup.plugins.myPlugin; - if (!myPlugin) { - throw new Error('myPlugin plugin is not available.'); - } - myPlugin.registerLegacyAPI({ ... }); - } -}) -``` - -- The new platform plugin access stored Legacy platform API via `getLegacyAPI` getter. Getter function must have name indicating that’s API provided from the Legacy platform. - -```js -class MyPlugin { - private getLegacyAPI(){ - return this.legacyAPI; - } - public async setup(core){ - const routeHandler = (context, req, req) => { - const legacyApi = this.getLegacyAPI(); - // ... - } - return { - registerLegacyAPI: (legacyAPI) => (this.legacyAPI = legacyAPI) - } - } -} -``` - -#### On the client side - -It's not currently possible to use a similar pattern on the client-side. -Because Legacy platform plugins heavily rely on global angular modules, which aren't available on the new platform. -So you can utilize the same approach for only *stateless Angular components*, as long as they are not consumed by a New Platform application. When New Platform applications are on the page, no legacy code is executed, so the `registerLegacyAPI` function would not be called. - -### Updates an application navlink at runtime - -The application API now provides a way to updates some of a registered application's properties after registration. - -```typescript -// inside your plugin's setup function -export class MyPlugin implements Plugin { - private appUpdater = new BehaviorSubject(() => ({})); - setup({ application }) { - application.register({ - id: 'my-app', - title: 'My App', - updater$: this.appUpdater, - async mount(params) { - const { renderApp } = await import('./application'); - return renderApp(params); - }, - }); - } - start() { - // later, when the navlink needs to be updated - appUpdater.next(() => { - navLinkStatus: AppNavLinkStatus.disabled, - tooltip: 'Application disabled', - }) - } -``` - -### Logging config migration - -[Read](./server/logging/README.md#logging-config-migration) - -### Use HashRouter in migrated apps - -Kibana applications are meant to be leveraging the `ScopedHistory` provided in an app's `mount` function to wire their router. For react, -this is done by using the `react-router-dom` `Router` component: - -```typescript -export const renderApp = async (element: HTMLElement, history: ScopedHistory) => { - render( - - - - - - - - , - element - ); - - return () => { - unmountComponentAtNode(element); - unlisten(); - }; -}; -``` - -Some legacy apps were using `react-router-dom`'s `HashRouter` instead. Using `HashRouter` in a migrated application will cause some route change -events to not be catched by the router, as the `BrowserHistory` used behind the provided scoped history does not emit -the `hashevent` that is required for the `HashRouter` to behave correctly. - -It is strictly recommended to migrate your application's routing to browser history, which is the only routing officially supported by the platform. - -However, during the transition period, it is possible to make the two histories cohabitate by manually emitting the required events from -the scoped to the hash history. You may use this workaround at your own risk. While we are not aware of any problems it currently creates, there may be edge cases that do not work properly. - -```typescript -export const renderApp = async (element: HTMLElement, history: ScopedHistory) => { - render( - - - - - - - - , - element - ); - - // dispatch synthetic hash change event to update hash history objects - // this is necessary because hash updates triggered by the scoped history will not emit them. - const unlisten = history.listen(() => { - window.dispatchEvent(new HashChangeEvent('hashchange')); - }); - - return () => { - unmountComponentAtNode(element); - // unsubscribe to `history.listen` when unmounting. - unlisten(); - }; -}; -``` diff --git a/src/core/MIGRATION_EXAMPLES.md b/src/core/MIGRATION_EXAMPLES.md deleted file mode 100644 index 3f34742e44861c..00000000000000 --- a/src/core/MIGRATION_EXAMPLES.md +++ /dev/null @@ -1,1291 +0,0 @@ -# Migration Examples - -This document is a list of examples of how to migrate plugin code from legacy -APIs to their New Platform equivalents. - -- [Migration Examples](#migration-examples) - - [Configuration](#configuration) - - [Declaring config schema](#declaring-config-schema) - - [Using New Platform config in a new plugin](#using-new-platform-config-in-a-new-plugin) - - [Using New Platform config from a Legacy plugin](#using-new-platform-config-from-a-legacy-plugin) - - [Create a New Platform plugin](#create-a-new-platform-plugin) - - [HTTP Routes](#http-routes) - - [1. Legacy route registration](#1-legacy-route-registration) - - [2. New Platform shim using legacy router](#2-new-platform-shim-using-legacy-router) - - [3. New Platform shim using New Platform router](#3-new-platform-shim-using-new-platform-router) - - [4. New Platform plugin](#4-new-platform-plugin) - - [Accessing Services](#accessing-services) - - [Migrating Hapi "pre" handlers](#migrating-hapi-pre-handlers) - - [Simple example](#simple-example) - - [Full Example](#full-example) - - [Chrome](#chrome) - - [Updating an application navlink](#updating-an-application-navlink) - - [Chromeless Applications](#chromeless-applications) - - [Render HTML Content](#render-html-content) - - [Saved Objects types](#saved-objects-types) - - [Concrete example](#concrete-example) - - [Changes in structure compared to legacy](#changes-in-structure-compared-to-legacy) - - [Remarks](#remarks) - - [UiSettings](#uisettings) - - [Elasticsearch client](#elasticsearch-client) - - [Client API Changes](#client-api-changes) - - [Accessing the client from a route handler](#accessing-the-client-from-a-route-handler) - - [Creating a custom client](#creating-a-custom-client) - -## Configuration - -### Declaring config schema - -Declaring the schema of your configuration fields is similar to the Legacy Platform but uses the `@kbn/config-schema` package instead of Joi. This package has full TypeScript support, but may be missing some features you need. Let the Platform team know by opening an issue and we'll add what you're missing. - -```ts -// Legacy config schema -import Joi from 'joi'; - -new kibana.Plugin({ - config() { - return Joi.object({ - enabled: Joi.boolean().default(true), - defaultAppId: Joi.string().default('home'), - index: Joi.string().default('.kibana'), - disableWelcomeScreen: Joi.boolean().default(false), - autocompleteTerminateAfter: Joi.number().integer().min(1).default(100000), - }) - } -}); - -// New Platform equivalent -import { schema, TypeOf } from '@kbn/config-schema'; - -export const config = { - schema: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - defaultAppId: schema.string({ defaultValue: true }), - index: schema.string({ defaultValue: '.kibana' }), - disableWelcomeScreen: schema.boolean({ defaultValue: false }), - autocompleteTerminateAfter: schema.duration({ min: 1, defaultValue: 100000 }), - }) -}; - -// @kbn/config-schema is written in TypeScript, so you can use your schema -// definition to create a type to use in your plugin code. -export type MyPluginConfig = TypeOf; -``` - -### Using New Platform config in a new plugin - -After setting the config schema for your plugin, you might want to reach the configuration in the plugin. -It is provided as part of the [PluginInitializerContext](../../docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md) -in the *constructor* of the plugin: - -```ts -// myPlugin/(public|server)/index.ts - -import { PluginInitializerContext } from 'kibana/server'; -import { MyPlugin } from './plugin'; - -export function plugin(initializerContext: PluginInitializerContext) { - return new MyPlugin(initializerContext); -} -``` - -```ts -// myPlugin/(public|server)/plugin.ts - -import { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; -import { CoreSetup, Logger, Plugin, PluginInitializerContext, PluginName } from 'kibana/server'; -import { MyPlugin } from './plugin'; - -export class MyPlugin implements Plugin { - private readonly config$: Observable; - private readonly log: Logger; - - constructor(private readonly initializerContext: PluginInitializerContext) { - this.log = initializerContext.logger.get(); - this.config$ = initializerContext.config.create(); - } - - public async setup(core: CoreSetup, deps: Record) { - const isEnabled = await this.config$.pipe(first()).toPromise(); - ... - } - ... -} -} -``` - -Additionally, some plugins need to read other plugins' config to act accordingly (like timing out a request, matching ElasticSearch's timeout). For those use cases, the plugin can rely on the *globalConfig* and *env* properties in the context: - -```ts -export class MyPlugin implements Plugin { -... - public async setup(core: CoreSetup, deps: Record) { - const { mode: { dev }, packageInfo: { version } } = this.initializerContext.env; - const { elasticsearch: { shardTimeout }, path: { data } } = await this.initializerContext.config.legacy.globalConfig$ - .pipe(first()).toPromise(); - ... - } -``` - -### Using New Platform config from a Legacy plugin - -During the migration process, you'll want to migrate your schema to the new -format. However, legacy plugins cannot directly get access to New Platform's -config service due to the way that config is tied to the `kibana.json` file -(which does not exist for legacy plugins). - -There is a workaround though: - -- Create a New Platform plugin that contains your plugin's config schema in the new format -- Expose the config from the New Platform plugin in its setup contract -- Read the config from the setup contract in your legacy plugin - -#### Create a New Platform plugin - -For example, if wanted to move the legacy `timelion` plugin's configuration to -the New Platform, we could create a NP plugin with the same name in -`src/plugins/timelion` with the following files: - -```json5 -// src/plugins/timelion/kibana.json -{ - "id": "timelion", - "server": true -} -``` - -```ts -// src/plugins/timelion/server/index.ts -import { schema, TypeOf } from '@kbn/config-schema'; -import { PluginInitializerContext } from 'src/core/server'; -import { TimelionPlugin } from './plugin'; - -export const config = { - schema: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - }); -} - -export const plugin = (initContext: PluginInitializerContext) => new TimelionPlugin(initContext); - -export type TimelionConfig = TypeOf; -export { TimelionSetup } from './plugin'; -``` - -```ts -// src/plugins/timelion/server/plugin.ts -import { PluginInitializerContext, Plugin, CoreSetup } from '../../core/server'; -import { TimelionConfig } from '.'; - -export class TimelionPlugin implements Plugin { - constructor(private readonly initContext: PluginInitializerContext) {} - - public setup(core: CoreSetup) { - return { - __legacy: { - config$: this.initContext.config.create(), - }, - }; - } - - public start() {} - public stop() {} -} - -export interface TimelionSetup { - /** @deprecated */ - __legacy: { - config$: Observable; - }; -} -``` - -With the New Platform plugin in place, you can then read this `config$` -Observable from your legacy plugin: - -```ts -import { take } from 'rxjs/operators'; - -new kibana.Plugin({ - async init(server) { - const { config$ } = server.newPlatform.setup.plugins.timelion; - const currentConfig = await config$.pipe(take(1)).toPromise(); - } -}); -``` - -## HTTP Routes - -In the legacy platform, plugins have direct access to the Hapi `server` object -which gives full access to all of Hapi's API. In the New Platform, plugins have -access to the -[HttpServiceSetup](/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md) -interface, which is exposed via the -[CoreSetup](/docs/development/core/server/kibana-plugin-core-server.coresetup.md) -object injected into the `setup` method of server-side plugins. - -This interface has a different API with slightly different behaviors. - -- All input (body, query parameters, and URL parameters) must be validated using - the `@kbn/config-schema` package. If no validation schema is provided, these - values will be empty objects. -- All exceptions thrown by handlers result in 500 errors. If you need a specific - HTTP error code, catch any exceptions in your handler and construct the - appropriate response using the provided response factory. While you can - continue using the `boom` module internally in your plugin, the framework does - not have native support for converting Boom exceptions into HTTP responses. - -Because of the incompatibility between the legacy and New Platform HTTP Route -API's it might be helpful to break up your migration work into several stages. - -### 1. Legacy route registration - -```ts -// legacy/plugins/myplugin/index.ts -import Joi from 'joi'; - -new kibana.Plugin({ - init(server) { - server.route({ - path: '/api/demoplugin/search', - method: 'POST', - options: { - validate: { - payload: Joi.object({ - field1: Joi.string().required(), - }), - } - }, - handler(req, h) { - return { message: `Received field1: ${req.payload.field1}` }; - } - }); - } -}); -``` - -### 2. New Platform shim using legacy router - -Create a New Platform shim and inject the legacy `server.route` into your -plugin's setup function. - -```ts -// legacy/plugins/demoplugin/index.ts -import { Plugin, LegacySetup } from './server/plugin'; -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - // core shim - const coreSetup: server.newPlatform.setup.core; - const pluginSetup = {}; - const legacySetup: LegacySetup = { - route: server.route - }; - - new Plugin().setup(coreSetup, pluginSetup, legacySetup); - } - } -} -``` - -```ts -// legacy/plugins/demoplugin/server/plugin.ts -import { CoreSetup } from 'src/core/server'; -import { Legacy } from 'kibana'; - -export interface LegacySetup { - route: Legacy.Server['route']; -}; - -export interface DemoPluginsSetup {}; - -export class Plugin { - public setup(core: CoreSetup, plugins: DemoPluginsSetup, __LEGACY: LegacySetup) { - __LEGACY.route({ - path: '/api/demoplugin/search', - method: 'POST', - options: { - validate: { - payload: Joi.object({ - field1: Joi.string().required(), - }), - } - }, - async handler(req) { - return { message: `Received field1: ${req.payload.field1}` }; - }, - }); - } -} -``` - -### 3. New Platform shim using New Platform router - -We now switch the shim to use the real New Platform HTTP API's in `coreSetup` -instead of relying on the legacy `server.route`. Since our plugin is now using -the New Platform API's we are guaranteed that our HTTP route handling is 100% -compatible with the New Platform. As a result, we will also have to adapt our -route registration accordingly. - -```ts -// legacy/plugins/demoplugin/index.ts -import { Plugin } from './server/plugin'; -export default (kibana) => { - return new kibana.Plugin({ - id: 'demo_plugin', - - init(server) { - // core shim - const coreSetup = server.newPlatform.setup.core; - const pluginSetup = {}; - - new Plugin().setup(coreSetup, pluginSetup); - } - } -} -``` - -```ts -// legacy/plugins/demoplugin/server/plugin.ts -import { schema } from '@kbn/config-schema'; -import { CoreSetup } from 'src/core/server'; - -export interface DemoPluginsSetup {}; - -class Plugin { - public setup(core: CoreSetup, pluginSetup: DemoPluginSetup) { - const router = core.http.createRouter(); - router.post( - { - path: '/api/demoplugin/search', - validate: { - body: schema.object({ - field1: schema.string(), - }), - } - }, - (context, req, res) => { - return res.ok({ - body: { - message: `Received field1: ${req.body.field1}` - } - }); - } - ) - } -} -``` - -If your plugin still relies on throwing Boom errors from routes, you can use the `router.handleLegacyErrors` -as a temporary solution until error migration is complete: - -```ts -// legacy/plugins/demoplugin/server/plugin.ts -import { schema } from '@kbn/config-schema'; -import { CoreSetup } from 'src/core/server'; - -export interface DemoPluginsSetup {}; - -class Plugin { - public setup(core: CoreSetup, pluginSetup: DemoPluginSetup) { - const router = core.http.createRouter(); - router.post( - { - path: '/api/demoplugin/search', - validate: { - body: schema.object({ - field1: schema.string(), - }), - } - }, - router.handleLegacyErrors((context, req, res) => { - throw Boom.notFound('not there'); // will be converted into proper New Platform error - }) - ) - } -} -``` - -#### 4. New Platform plugin - -As the final step we delete the shim and move all our code into a New Platform -plugin. Since we were already consuming the New Platform API's no code changes -are necessary inside `plugin.ts`. - -```ts -// Move legacy/plugins/demoplugin/server/plugin.ts -> plugins/demoplugin/server/plugin.ts -``` - -### Accessing Services - -Services in the Legacy Platform were typically available via methods on either -`server.plugins.*`, `server.*`, or `req.*`. In the New Platform, all services -are available via the `context` argument to the route handler. The type of this -argument is the -[RequestHandlerContext](/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md). -The APIs available here will include all Core services and any services -registered by plugins this plugin depends on. - -```ts -new kibana.Plugin({ - init(server) { - const { callWithRequest } = server.plugins.elasticsearch.getCluster('data'); - - server.route({ - path: '/api/my-plugin/my-route', - method: 'POST', - async handler(req, h) { - const results = await callWithRequest(req, 'search', query); - return { results }; - } - }); - } -}); - -class Plugin { - public setup(core) { - const router = core.http.createRouter(); - router.post( - { - path: '/api/my-plugin/my-route', - }, - async (context, req, res) => { - const results = await context.elasticsearch.dataClient.callAsCurrentUser('search', query); - return res.ok({ - body: { results } - }); - } - ) - } -} -``` - -### Migrating Hapi "pre" handlers - -In the Legacy Platform, routes could provide a "pre" option in their config to -register a function that should be run prior to the route handler. These -"pre" handlers allow routes to share some business logic that may do some -pre-work or validation. In Kibana, these are often used for license checks. - -The Kibana Platform's HTTP interface does not provide this functionality, -however it is simple enough to port over using a higher-order function that can -wrap the route handler. - -#### Simple example - -In this simple example, a pre-handler is used to either abort the request with -an error or continue as normal. This is a simple "gate-keeping" pattern. - -```ts -// Legacy pre-handler -const licensePreRouting = (request) => { - const licenseInfo = getMyPluginLicenseInfo(request.server.plugins.xpack_main); - if (!licenseInfo.isOneOf(['gold', 'platinum', 'trial'])) { - throw Boom.forbidden(`You don't have the right license for MyPlugin!`); - } -} - -server.route({ - method: 'GET', - path: '/api/my-plugin/do-something', - config: { - pre: [{ method: licensePreRouting }] - }, - handler: (req) => { - return doSomethingInteresting(); - } -}) -``` - -In the Kibana Platform, the same functionality can be acheived by creating a -function that takes a route handler (or factory for a route handler) as an -argument and either invokes it in the successful case or returns an error -response in the failure case. - -We'll call this a "high-order handler" similar to the "high-order component" -pattern common in the React ecosystem. - -```ts -// New Platform high-order handler -const checkLicense = ( - handler: RequestHandler -): RequestHandler => { - return (context, req, res) => { - const licenseInfo = getMyPluginLicenseInfo(context.licensing.license); - - if (licenseInfo.hasAtLeast('gold')) { - return handler(context, req, res); - } else { - return res.forbidden({ body: `You don't have the right license for MyPlugin!` }); - } - } -} - -router.get( - { path: '/api/my-plugin/do-something', validate: false }, - checkLicense(async (context, req, res) => { - const results = doSomethingInteresting(); - return res.ok({ body: results }); - }), -) -``` - -#### Full Example - -In some cases, the route handler may need access to data that the pre-handler -retrieves. In this case, you can utilize a handler _factory_ rather than a raw -handler. - -```ts -// Legacy pre-handler -const licensePreRouting = (request) => { - const licenseInfo = getMyPluginLicenseInfo(request.server.plugins.xpack_main); - if (licenseInfo.isOneOf(['gold', 'platinum', 'trial'])) { - // In this case, the return value of the pre-handler is made available on - // whatever the 'assign' option is in the route config. - return licenseInfo; - } else { - // In this case, the route handler is never called and the user gets this - // error message - throw Boom.forbidden(`You don't have the right license for MyPlugin!`); - } -} - -server.route({ - method: 'GET', - path: '/api/my-plugin/do-something', - config: { - pre: [{ method: licensePreRouting, assign: 'licenseInfo' }] - }, - handler: (req) => { - const licenseInfo = req.pre.licenseInfo; - return doSomethingInteresting(licenseInfo); - } -}) -``` - -In many cases, it may be simpler to duplicate the function call -to retrieve the data again in the main handler. In this other cases, you can -utilize a handler _factory_ rather than a raw handler as the argument to your -high-order handler. This way the high-order handler can pass arbitrary arguments -to the route handler. - -```ts -// New Platform high-order handler -const checkLicense = ( - handlerFactory: (licenseInfo: MyPluginLicenseInfo) => RequestHandler -): RequestHandler => { - return (context, req, res) => { - const licenseInfo = getMyPluginLicenseInfo(context.licensing.license); - - if (licenseInfo.hasAtLeast('gold')) { - const handler = handlerFactory(licenseInfo); - return handler(context, req, res); - } else { - return res.forbidden({ body: `You don't have the right license for MyPlugin!` }); - } - } -} - -router.get( - { path: '/api/my-plugin/do-something', validate: false }, - checkLicense(licenseInfo => async (context, req, res) => { - const results = doSomethingInteresting(licenseInfo); - return res.ok({ body: results }); - }), -) -``` - -## Chrome - -In the Legacy Platform, the `ui/chrome` import contained APIs for a very wide -range of features. In the New Platform, some of these APIs have changed or moved -elsewhere. - -| Legacy Platform | New Platform | Notes | -|-------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `chrome.addBasePath` | [`core.http.basePath.prepend`](/docs/development/core/public/kibana-plugin-public.httpservicebase.basepath.md) | | -| `chrome.breadcrumbs.set` | [`core.chrome.setBreadcrumbs`](/docs/development/core/public/kibana-plugin-public.chromestart.setbreadcrumbs.md) | | -| `chrome.getUiSettingsClient` | [`core.uiSettings`](/docs/development/core/public/kibana-plugin-public.uisettingsclient.md) | | -| `chrome.helpExtension.set` | [`core.chrome.setHelpExtension`](/docs/development/core/public/kibana-plugin-public.chromestart.sethelpextension.md) | | -| `chrome.setVisible` | [`core.chrome.setIsVisible`](/docs/development/core/public/kibana-plugin-public.chromestart.setisvisible.md) | | -| `chrome.getInjected` | [`core.injectedMetadata.getInjected`](/docs/development/core/public/kibana-plugin-public.coresetup.injectedmetadata.md) (temporary) | A temporary API is available to read injected vars provided by legacy plugins. This will be removed after [#41990](https://github.com/elastic/kibana/issues/41990) is completed. | -| `chrome.setRootTemplate` / `chrome.setRootController` | -- | Use application mounting via `core.application.register` (not currently avaiable to legacy plugins). | -| `chrome.navLinks.update` | [`core.appbase.updater`](/docs/development/core/public/kibana-plugin-public.appbase.updater_.md) | Use the `updater$` property when registering your application via `core.application.register` | - -In most cases, the most convenient way to access these APIs will be via the -[AppMountContext](/docs/development/core/public/kibana-plugin-public.appmountcontext.md) -object passed to your application when your app is mounted on the page. - -### Updating an application navlink - -In the legacy platform, the navlink could be updated using `chrome.navLinks.update` - -```ts -uiModules.get('xpack/ml').run(() => { - const showAppLink = xpackInfo.get('features.ml.showLinks', false); - const isAvailable = xpackInfo.get('features.ml.isAvailable', false); - - const navLinkUpdates = { - // hide by default, only show once the xpackInfo is initialized - hidden: !showAppLink, - disabled: !showAppLink || (showAppLink && !isAvailable), - }; - - npStart.core.chrome.navLinks.update('ml', navLinkUpdates); -}); -``` - -In the new platform, navlinks should not be updated directly. Instead, it is now possible to add an `updater` when -registering an application to change the application or the navlink state at runtime. - -```ts -// my_plugin has a required dependencie to the `licensing` plugin -interface MyPluginSetupDeps { - licensing: LicensingPluginSetup; -} - -export class MyPlugin implements Plugin { - setup({ application }, { licensing }: MyPluginSetupDeps) { - const updater$ = licensing.license$.pipe( - map(license => { - const { hidden, disabled } = calcStatusFor(license); - if (hidden) return { navLinkStatus: AppNavLinkStatus.hidden }; - if (disabled) return { navLinkStatus: AppNavLinkStatus.disabled }; - return { navLinkStatus: AppNavLinkStatus.default }; - }) - ); - - application.register({ - id: 'my-app', - title: 'My App', - updater$, - async mount(params) { - const { renderApp } = await import('./application'); - return renderApp(params); - }, - }); - } -``` - -## Chromeless Applications - -In Kibana, a "chromeless" application is one where the primary Kibana UI components -such as header or navigation can be hidden. In the legacy platform these were referred to -as "hidden" applications, and were set via the `hidden` property in a Kibana plugin. -Chromeless applications are also not displayed in the left navbar. - -To mark an application as chromeless, specify `chromeless: false` when registering your application -to hide the chrome UI when the application is mounted: - -```ts -application.register({ - id: 'chromeless', - chromeless: true, - async mount(context, params) { - /* ... */ - }, -}); -``` - -If you wish to render your application at a route that does not follow the `/app/${appId}` pattern, -this can be done via the `appRoute` property. Doing this currently requires you to register a server -route where you can return a bootstrapped HTML page for your application bundle. Instructions on -registering this server route is covered in the next section: [Render HTML Content](#render-html-content). - -```ts -application.register({ - id: 'chromeless', - appRoute: '/chromeless', - chromeless: true, - async mount(context, params) { - /* ... */ - }, -}); -``` - -## Render HTML Content - -You can return a blank HTML page bootstrapped with the core application bundle from an HTTP route handler -via the `httpResources` service. You may wish to do this if you are rendering a chromeless application with a -custom application route or have other custom rendering needs. - -```typescript -httpResources.register( - { path: '/chromeless', validate: false }, - (context, request, response) => { - //... some logic - return response.renderCoreApp(); - } -); -``` - -You can also specify to exclude user data from the bundle metadata. User data -comprises all UI Settings that are *user provided*, then injected into the page. -You may wish to exclude fetching this data if not authorized or to slim the page -size. - -```typescript -httpResources.register( - { path: '/', validate: false, options: { authRequired: false } }, - (context, request, response) => { - //... some logic - return response.renderAnonymousCoreApp(); - } -); -``` - -## Saved Objects types - -In the legacy platform, saved object types were registered using static definitions in the `uiExports` part of -the plugin manifest. - -In the new platform, all these registration are to be performed programmatically during your plugin's `setup` phase, -using the core `savedObjects`'s `registerType` setup API. - -The most notable difference is that in the new platform, the type registration is performed in a single call to -`registerType`, passing a new `SavedObjectsType` structure that is a superset of the legacy `schema`, `migrations` -`mappings` and `savedObjectsManagement`. - -### Concrete example - -Let say we have the following in a legacy plugin: - -```js -// src/legacy/core_plugins/my_plugin/index.js -import mappings from './mappings.json'; -import { migrations } from './migrations'; - -new kibana.Plugin({ - init(server){ - // [...] - }, - uiExports: { - mappings, - migrations, - savedObjectSchemas: { - 'first-type': { - isNamespaceAgnostic: true, - }, - 'second-type': { - isHidden: true, - }, - }, - savedObjectsManagement: { - 'first-type': { - isImportableAndExportable: true, - icon: 'myFirstIcon', - defaultSearchField: 'title', - getTitle(obj) { - return obj.attributes.title; - }, - getEditUrl(obj) { - return `/some-url/${encodeURIComponent(obj.id)}`; - }, - }, - 'second-type': { - isImportableAndExportable: false, - icon: 'mySecondIcon', - getTitle(obj) { - return obj.attributes.myTitleField; - }, - getInAppUrl(obj) { - return { - path: `/some-url/${encodeURIComponent(obj.id)}`, - uiCapabilitiesPath: 'myPlugin.myType.show', - }; - }, - }, - }, - }, -}) -``` - -```json -// src/legacy/core_plugins/my_plugin/mappings.json -{ - "first-type": { - "properties": { - "someField": { - "type": "text" - }, - "anotherField": { - "type": "text" - } - } - }, - "second-type": { - "properties": { - "textField": { - "type": "text" - }, - "boolField": { - "type": "boolean" - } - } - } -} -``` - -```js -// src/legacy/core_plugins/my_plugin/migrations.js -export const migrations = { - 'first-type': { - '1.0.0': migrateFirstTypeToV1, - '2.0.0': migrateFirstTypeToV2, - }, - 'second-type': { - '1.5.0': migrateSecondTypeToV15, - } -} -``` - -To migrate this, we will have to regroup the declaration per-type. That would become: - -First type: - -```typescript -// src/plugins/my_plugin/server/saved_objects/first_type.ts -import { SavedObjectsType } from 'src/core/server'; - -export const firstType: SavedObjectsType = { - name: 'first-type', - hidden: false, - namespaceType: 'agnostic', - mappings: { - properties: { - someField: { - type: 'text', - }, - anotherField: { - type: 'text', - }, - }, - }, - migrations: { - '1.0.0': migrateFirstTypeToV1, - '2.0.0': migrateFirstTypeToV2, - }, - management: { - importableAndExportable: true, - icon: 'myFirstIcon', - defaultSearchField: 'title', - getTitle(obj) { - return obj.attributes.title; - }, - getEditUrl(obj) { - return `/some-url/${encodeURIComponent(obj.id)}`; - }, - }, -}; -``` - -Second type: - -```typescript -// src/plugins/my_plugin/server/saved_objects/second_type.ts -import { SavedObjectsType } from 'src/core/server'; - -export const secondType: SavedObjectsType = { - name: 'second-type', - hidden: true, - namespaceType: 'single', - mappings: { - properties: { - textField: { - type: 'text', - }, - boolField: { - type: 'boolean', - }, - }, - }, - migrations: { - '1.5.0': migrateSecondTypeToV15, - }, - management: { - importableAndExportable: false, - icon: 'mySecondIcon', - getTitle(obj) { - return obj.attributes.myTitleField; - }, - getInAppUrl(obj) { - return { - path: `/some-url/${encodeURIComponent(obj.id)}`, - uiCapabilitiesPath: 'myPlugin.myType.show', - }; - }, - }, -}; -``` - -Registration in the plugin's setup phase: - -```typescript -// src/plugins/my_plugin/server/plugin.ts -import { firstType, secondType } from './saved_objects'; - -export class MyPlugin implements Plugin { - setup({ savedObjects }) { - savedObjects.registerType(firstType); - savedObjects.registerType(secondType); - } -} -``` - -### Changes in structure compared to legacy - -The NP `registerType` expected input is very close to the legacy format. However, there are some minor changes: - -- The `schema.isNamespaceAgnostic` property has been renamed: `SavedObjectsType.namespaceType`. It no longer accepts a boolean but instead an enum of 'single', 'multiple', or 'agnostic' (see [SavedObjectsNamespaceType](/docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md)). - -- The `schema.indexPattern` was accepting either a `string` or a `(config: LegacyConfig) => string`. `SavedObjectsType.indexPattern` only accepts a string, as you can access the configuration during your plugin's setup phase. - -- The `savedObjectsManagement.isImportableAndExportable` property has been renamed: `SavedObjectsType.management.importableAndExportable` - -- The migration function signature has changed: -In legacy, it was `(doc: SavedObjectUnsanitizedDoc, log: SavedObjectsMigrationLogger) => SavedObjectUnsanitizedDoc;` -In new platform, it is now `(doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext) => SavedObjectUnsanitizedDoc;` - -With context being: - -```typescript -export interface SavedObjectMigrationContext { - log: SavedObjectsMigrationLogger; -} -``` - -The changes is very minor though. The legacy migration: - -```js -const migration = (doc, log) => {...} -``` - -Would be converted to: - -```typescript -const migration: SavedObjectMigrationFn = (doc, { log }) => {...} -``` - -### Remarks - -The `registerType` API will throw if called after the service has started, and therefor cannot be used from -legacy plugin code. Legacy plugins should use the legacy savedObjects service and the legacy way to register -saved object types until migrated. - -## UiSettings -UiSettings defaults registration performed during `setup` phase via `core.uiSettings.register` API. - -```js -// Before: -uiExports: { - uiSettingDefaults: { - 'my-plugin:my-setting': { - name: 'just-work', - value: true, - description: 'make it work', - category: ['my-category'], - }, - } -} -``` - -```ts -// After: -// src/plugins/my-plugin/server/plugin.ts -setup(core: CoreSetup){ - core.uiSettings.register({ - 'my-plugin:my-setting': { - name: 'just-work', - value: true, - description: 'make it work', - category: ['my-category'], - schema: schema.boolean(), - }, - }) -} -``` - -## Elasticsearch client - -The new elasticsearch client is a thin wrapper around `@elastic/elasticsearch`'s `Client` class. Even if the API -is quite close to the legacy client Kibana was previously using, there are some subtle changes to take into account -during migration. - -[Official documentation](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html) - -### Client API Changes - -The most significant changes for the consumers are the following: - -- internal / current user client accessors has been renamed and are now properties instead of functions - - `callAsInternalUser('ping')` -> `asInternalUser.ping()` - - `callAsCurrentUser('ping')` -> `asCurrentUser.ping()` - -- the API now reflects the `Client`'s instead of leveraging the string-based endpoint names the `LegacyAPICaller` was using - -before: - -```ts -const body = await client.callAsInternalUser('indices.get', { index: 'id' }); -``` - -after: - -```ts -const { body } = await client.asInternalUser.indices.get({ index: 'id' }); -``` - -- calling any ES endpoint now returns the whole response object instead of only the body payload - -before: - -```ts -const body = await legacyClient.callAsInternalUser('get', { id: 'id' }); -``` - -after: - -```ts -const { body } = await client.asInternalUser.get({ id: 'id' }); -``` - -Note that more information from the ES response is available: - -```ts -const { - body, // response payload - statusCode, // http status code of the response - headers, // response headers - warnings, // warnings returned from ES - meta // meta information about the request, such as request parameters, number of attempts and so on -} = await client.asInternalUser.get({ id: 'id' }); -``` - -- all API methods are now generic to allow specifying the response body type - -before: - -```ts -const body: GetResponse = await legacyClient.callAsInternalUser('get', { id: 'id' }); -``` - -after: - -```ts -// body is of type `GetResponse` -const { body } = await client.asInternalUser.get({ id: 'id' }); -// fallback to `Record` if unspecified -const { body } = await client.asInternalUser.get({ id: 'id' }); -``` - -- the returned error types changed - -There are no longer specific errors for every HTTP status code (such as `BadRequest` or `NotFound`). A generic -`ResponseError` with the specific `statusCode` is thrown instead. - -before: - -```ts -import { errors } from 'elasticsearch'; -try { - await legacyClient.callAsInternalUser('ping'); -} catch(e) { - if(e instanceof errors.NotFound) { - // do something - } - if(e.status === 401) {} -} -``` - -after: - -```ts -import { errors } from '@elastic/elasticsearch'; -try { - await client.asInternalUser.ping(); -} catch(e) { - if(e instanceof errors.ResponseError && e.statusCode === 404) { - // do something - } - // also possible, as all errors got a name property with the name of the class, - // so this slightly better in term of performances - if(e.name === 'ResponseError' && e.statusCode === 404) { - // do something - } - if(e.statusCode === 401) {...} -} -``` - -- the parameter property names changed from camelCase to snake_case - -Even if technically, the javascript client accepts both formats, the typescript definitions are only defining the snake_case -properties. - -before: - -```ts -legacyClient.callAsCurrentUser('get', { - id: 'id', - storedFields: ['some', 'fields'], -}) -``` - -after: - -```ts -client.asCurrentUser.get({ - id: 'id', - stored_fields: ['some', 'fields'], -}) -``` - -- the request abortion API changed - -All promises returned from the client API calls now have an `abort` method that can be used to cancel the request. - -before: - -```ts -const controller = new AbortController(); -legacyClient.callAsCurrentUser('ping', {}, { - signal: controller.signal, -}) -// later -controller.abort(); -``` - -after: - -```ts -const request = client.asCurrentUser.ping(); -// later -request.abort(); -``` - -- it is now possible to override headers when performing specific API calls. - -Note that doing so is strongly discouraged due to potential side effects with the ES service internal -behavior when scoping as the internal or as the current user. - -```ts -const request = client.asCurrentUser.ping({}, { - headers: { - authorization: 'foo', - custom: 'bar', - } -}); -``` - -- the new client doesn't provide exhaustive typings for the response object yet. You might have to copy -response type definitions from the Legacy Elasticsearch library until https://github.com/elastic/elasticsearch-js/pull/970 merged. - -```ts -// platform provides a few typings for internal purposes -import { SearchResponse } from 'src/core/server'; -type SearchSource = {...}; -type SearchBody = SearchResponse; -const { body } = await client.search(...); -interface Info {...} -const { body } = await client.info(...); -``` - -- Functional tests are subject to migration to the new client as well. -before: -```ts -const client = getService('legacyEs'); -``` - -after: -```ts -const client = getService('es'); -``` - -Please refer to the [Breaking changes list](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/breaking-changes.html) -for more information about the changes between the legacy and new client. - -### Accessing the client from a route handler - -Apart from the API format change, accessing the client from within a route handler -did not change. As it was done for the legacy client, a preconfigured scoped client -bound to the request is accessible using `core` context provider: - -before: - -```ts -router.get( - { - path: '/my-route', - }, - async (context, req, res) => { - const { client } = context.core.elasticsearch.legacy; - // call as current user - const res = await client.callAsCurrentUser('ping'); - // call as internal user - const res2 = await client.callAsInternalUser('search', options); - return res.ok({ body: 'ok' }); - } -); -``` - -after: - -```ts -router.get( - { - path: '/my-route', - }, - async (context, req, res) => { - const { client } = context.core.elasticsearch; - // call as current user - const res = await client.asCurrentUser.ping(); - // call as internal user - const res2 = await client.asInternalUser.search(options); - return res.ok({ body: 'ok' }); - } -); -``` - -### Creating a custom client - -Note that the `plugins` option is now longer available on the new client. As the API is now exhaustive, adding custom -endpoints using plugins should no longer be necessary. - -The API to create custom clients did not change much: - -before: - -```ts -const customClient = coreStart.elasticsearch.legacy.createClient('my-custom-client', customConfig); -// do something with the client, such as -await customClient.callAsInternalUser('ping'); -// custom client are closable -customClient.close(); -``` - -after: - -```ts -const customClient = coreStart.elasticsearch.createClient('my-custom-client', customConfig); -// do something with the client, such as -await customClient.asInternalUser.ping(); -// custom client are closable -customClient.close(); -``` - -If, for any reasons, one still needs to reach an endpoint not listed on the client API, using `request.transport` -is still possible: - -```ts -const { body } = await client.asCurrentUser.transport.request({ - method: 'get', - path: '/my-custom-endpoint', - body: { my: 'payload'}, - querystring: { param: 'foo' } -}) -``` - -Remark: the new client creation API is now only available from the `start` contract of the elasticsearch service. diff --git a/src/core/README.md b/src/core/README.md index 87c42d9c6dab6d..e195bf30c054c8 100644 --- a/src/core/README.md +++ b/src/core/README.md @@ -8,7 +8,7 @@ Core Plugin API Documentation: - [Core Server API](/docs/development/core/server/kibana-plugin-core-server.md) - [Conventions for Plugins](./CONVENTIONS.md) - [Testing Kibana Plugins](./TESTING.md) - - [Migration guide for porting existing plugins](./MIGRATION.md) + - [Kibana Platform Plugin API](./docs/developer/architecture/kibana-platform-plugin-api.asciidoc ) Internal Documentation: - [Saved Objects Migrations](./server/saved_objects/migrations/README.md) diff --git a/src/core/jest.config.js b/src/core/jest.config.js new file mode 100644 index 00000000000000..bdb65b3817507e --- /dev/null +++ b/src/core/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/core'], + testRunner: 'jasmine2', +}; diff --git a/src/core/public/application/application_service.test.ts b/src/core/public/application/application_service.test.ts index afcebc06506c26..cd186f87b3a878 100644 --- a/src/core/public/application/application_service.test.ts +++ b/src/core/public/application/application_service.test.ts @@ -697,7 +697,7 @@ describe('#start()', () => { // Create an app and a promise that allows us to control when the app completes mounting const createWaitingApp = (props: Partial): [App, () => void] => { let finishMount: () => void; - const mountPromise = new Promise((resolve) => (finishMount = resolve)); + const mountPromise = new Promise((resolve) => (finishMount = resolve)); const app = { id: 'some-id', title: 'some-title', diff --git a/src/core/public/application/index.ts b/src/core/public/application/index.ts index 4f3b113a29c9b1..b39aa70c888fec 100644 --- a/src/core/public/application/index.ts +++ b/src/core/public/application/index.ts @@ -31,6 +31,7 @@ export { AppNavLinkStatus, AppUpdatableFields, AppUpdater, + AppSearchDeepLink, ApplicationSetup, ApplicationStart, AppLeaveHandler, @@ -40,6 +41,7 @@ export { AppLeaveConfirmAction, NavigateToAppOptions, PublicAppInfo, + PublicAppSearchDeepLinkInfo, // Internal types InternalApplicationSetup, InternalApplicationStart, diff --git a/src/core/public/application/integration_tests/application_service.test.tsx b/src/core/public/application/integration_tests/application_service.test.tsx index 82933576bc4938..2ccb8ec64f9104 100644 --- a/src/core/public/application/integration_tests/application_service.test.tsx +++ b/src/core/public/application/integration_tests/application_service.test.tsx @@ -66,7 +66,7 @@ describe('ApplicationService', () => { const { register } = service.setup(setupDeps); let resolveMount: () => void; - const promise = new Promise((resolve) => { + const promise = new Promise((resolve) => { resolveMount = resolve; }); @@ -100,7 +100,7 @@ describe('ApplicationService', () => { const { register } = service.setup(setupDeps); let resolveMount: () => void; - const promise = new Promise((resolve) => { + const promise = new Promise((resolve) => { resolveMount = resolve; }); @@ -442,7 +442,7 @@ describe('ApplicationService', () => { const { register } = service.setup(setupDeps); let resolveMount: () => void; - const promise = new Promise((resolve) => { + const promise = new Promise((resolve) => { resolveMount = resolve; }); @@ -480,7 +480,7 @@ describe('ApplicationService', () => { const { register } = service.setup(setupDeps); let resolveMount: () => void; - const promise = new Promise((resolve) => { + const promise = new Promise((resolve) => { resolveMount = resolve; }); diff --git a/src/core/public/application/types.ts b/src/core/public/application/types.ts index 02d2d3a52a01a5..d9f326c7a59ab6 100644 --- a/src/core/public/application/types.ts +++ b/src/core/public/application/types.ts @@ -81,7 +81,10 @@ export enum AppNavLinkStatus { * Defines the list of fields that can be updated via an {@link AppUpdater}. * @public */ -export type AppUpdatableFields = Pick; +export type AppUpdatableFields = Pick< + App, + 'status' | 'navLinkStatus' | 'tooltip' | 'defaultPath' | 'searchDeepLinks' +>; /** * Updater for applications. @@ -222,7 +225,7 @@ export interface App { * ```ts * core.application.register({ * id: 'my_app', - * title: 'My App' + * title: 'My App', * exactRoute: true, * mount: () => { ... }, * }) @@ -232,18 +235,89 @@ export interface App { * ``` */ exactRoute?: boolean; + + /** + * Array of links that represent secondary in-app locations for the app. + * + * @remarks + * Used to populate navigational search results (where available). + * Can be updated using the {@link App.updater$} observable. See {@link AppSubLink} for more details. + * + * @example + * The `path` property on deep links should not include the application's `appRoute`: + * ```ts + * core.application.register({ + * id: 'my_app', + * title: 'My App', + * searchDeepLinks: [ + * { id: 'sub1', title: 'Sub1', path: '/sub1' }, + * { + * id: 'sub2', + * title: 'Sub2', + * searchDeepLinks: [ + * { id: 'subsub', title: 'SubSub', path: '/sub2/sub' } + * ] + * } + * ], + * mount: () => { ... }, + * }) + * ``` + * + * Will produce deep links on these paths: + * - `/app/my_app/sub1` + * - `/app/my_app/sub2/sub` + */ + searchDeepLinks?: AppSearchDeepLink[]; } +/** + * Input type for registering secondary in-app locations for an application. + * + * Deep links must include at least one of `path` or `searchDeepLinks`. A deep link that does not have a `path` + * represents a topological level in the application's hierarchy, but does not have a destination URL that is + * user-accessible. + * @public + */ +export type AppSearchDeepLink = { + /** Identifier to represent this sublink, should be unique for this application */ + id: string; + /** Title to label represent this deep link */ + title: string; +} & ( + | { + /** URL path to access this link, relative to the application's appRoute. */ + path: string; + /** Optional array of links that are 'underneath' this section in the hierarchy */ + searchDeepLinks?: AppSearchDeepLink[]; + } + | { + /** Optional path to access this section. Omit if this part of the hierarchy does not have a page URL. */ + path?: string; + /** Array links that are 'underneath' this section in this hierarchy. */ + searchDeepLinks: AppSearchDeepLink[]; + } +); + +/** + * Public information about a registered app's {@link AppSearchDeepLink | searchDeepLinks} + * + * @public + */ +export type PublicAppSearchDeepLinkInfo = Omit & { + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; +}; + /** * Public information about a registered {@link App | application} * * @public */ -export type PublicAppInfo = Omit & { +export type PublicAppInfo = Omit & { // remove optional on fields populated with default values status: AppStatus; navLinkStatus: AppNavLinkStatus; appRoute: string; + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; }; /** diff --git a/src/core/public/application/ui/app_container.test.tsx b/src/core/public/application/ui/app_container.test.tsx index f6cde54e6f5025..50c332dacc34a8 100644 --- a/src/core/public/application/ui/app_container.test.tsx +++ b/src/core/public/application/ui/app_container.test.tsx @@ -38,7 +38,7 @@ describe('AppContainer', () => { }); const flushPromises = async () => { - await new Promise(async (resolve) => { + await new Promise(async (resolve) => { setImmediate(() => resolve()); }); }; diff --git a/src/core/public/application/utils/get_app_info.test.ts b/src/core/public/application/utils/get_app_info.test.ts index 055f7d1a5ada9d..ee0bd4f1eadfaf 100644 --- a/src/core/public/application/utils/get_app_info.test.ts +++ b/src/core/public/application/utils/get_app_info.test.ts @@ -43,6 +43,42 @@ describe('getAppInfo', () => { status: AppStatus.accessible, navLinkStatus: AppNavLinkStatus.visible, appRoute: `/app/some-id`, + searchDeepLinks: [], + }); + }); + + it('populates default values for nested searchDeepLinks', () => { + const app = createApp({ + searchDeepLinks: [ + { + id: 'sub-id', + title: 'sub-title', + searchDeepLinks: [{ id: 'sub-sub-id', title: 'sub-sub-title', path: '/sub-sub' }], + }, + ], + }); + const info = getAppInfo(app); + + expect(info).toEqual({ + id: 'some-id', + title: 'some-title', + status: AppStatus.accessible, + navLinkStatus: AppNavLinkStatus.visible, + appRoute: `/app/some-id`, + searchDeepLinks: [ + { + id: 'sub-id', + title: 'sub-title', + searchDeepLinks: [ + { + id: 'sub-sub-id', + title: 'sub-sub-title', + path: '/sub-sub', + searchDeepLinks: [], // default empty array added + }, + ], + }, + ], }); }); diff --git a/src/core/public/application/utils/get_app_info.ts b/src/core/public/application/utils/get_app_info.ts index 71cd8a3e149290..7316080816da7c 100644 --- a/src/core/public/application/utils/get_app_info.ts +++ b/src/core/public/application/utils/get_app_info.ts @@ -17,9 +17,16 @@ * under the License. */ -import { App, AppNavLinkStatus, AppStatus, PublicAppInfo } from '../types'; +import { + App, + AppNavLinkStatus, + AppStatus, + AppSearchDeepLink, + PublicAppInfo, + PublicAppSearchDeepLinkInfo, +} from '../types'; -export function getAppInfo(app: App): PublicAppInfo { +export function getAppInfo(app: App): PublicAppInfo { const navLinkStatus = app.navLinkStatus === AppNavLinkStatus.default ? app.status === AppStatus.inaccessible @@ -32,5 +39,26 @@ export function getAppInfo(app: App): PublicAppInfo { status: app.status!, navLinkStatus, appRoute: app.appRoute!, + searchDeepLinks: getSearchDeepLinkInfos(app, app.searchDeepLinks), }; } + +function getSearchDeepLinkInfos( + app: App, + searchDeepLinks?: AppSearchDeepLink[] +): PublicAppSearchDeepLinkInfo[] { + if (!searchDeepLinks) { + return []; + } + + return searchDeepLinks.map( + (rawDeepLink): PublicAppSearchDeepLinkInfo => { + return { + id: rawDeepLink.id, + title: rawDeepLink.title, + path: rawDeepLink.path, + searchDeepLinks: getSearchDeepLinkInfos(app, rawDeepLink.searchDeepLinks), + }; + } + ); +} diff --git a/src/core/public/chrome/nav_links/to_nav_link.test.ts b/src/core/public/chrome/nav_links/to_nav_link.test.ts index 7e2c1fc1f89f8e..606370c5afd0a9 100644 --- a/src/core/public/chrome/nav_links/to_nav_link.test.ts +++ b/src/core/public/chrome/nav_links/to_nav_link.test.ts @@ -28,6 +28,7 @@ const app = (props: Partial = {}): PublicAppInfo => ({ status: AppStatus.accessible, navLinkStatus: AppNavLinkStatus.default, appRoute: `/app/some-id`, + searchDeepLinks: [], ...props, }); diff --git a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap index b01dd205440a94..201f2e5f8f14b6 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap @@ -56,6 +56,7 @@ exports[`CollapsibleNav renders links grouped by category 1`] = ` "basePath": "/test", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "/test", } @@ -2078,6 +2079,7 @@ exports[`CollapsibleNav renders the default nav 1`] = ` "basePath": "/test", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "/test", } @@ -2313,6 +2315,7 @@ exports[`CollapsibleNav renders the default nav 2`] = ` "basePath": "/test", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "/test", } @@ -2549,6 +2552,7 @@ exports[`CollapsibleNav renders the default nav 3`] = ` "basePath": "/test", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "/test", } diff --git a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap index ee2fcbd5078af1..5ce5a5f635d64c 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/header.test.tsx.snap @@ -243,6 +243,7 @@ exports[`Header renders 1`] = ` "basePath": "/test", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "/test", } @@ -4753,12 +4754,11 @@ exports[`Header renders 1`] = ` hasArrow={true} id="headerHelpMenu" isOpen={false} - ownFocus={true} + ownFocus={false} panelPaddingSize="m" repositionOnScroll={true} >
{ data-test-subj="helpMenuButton" id="headerHelpMenu" isOpen={this.state.isOpen} - ownFocus repositionOnScroll > diff --git a/src/core/public/doc_links/doc_links_service.ts b/src/core/public/doc_links/doc_links_service.ts index 6af14734444d1d..3afd4a5cb98e8e 100644 --- a/src/core/public/doc_links/doc_links_service.ts +++ b/src/core/public/doc_links/doc_links_service.ts @@ -39,9 +39,9 @@ export class DocLinksService { dashboard: { guide: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/dashboard.html`, drilldowns: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/drilldowns.html`, - drilldownsTriggerPicker: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/drilldowns.html#url-drilldown`, + drilldownsTriggerPicker: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/drilldowns.html#url-drilldowns`, urlDrilldownTemplateSyntax: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/url_templating-language.html`, - urlDrilldownVariables: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/url_templating-language.html#variables`, + urlDrilldownVariables: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/url_templating-language.html#url-template-variables`, }, filebeat: { base: `${ELASTIC_WEBSITE_URL}guide/en/beats/filebeat/${DOC_LINK_VERSION}`, @@ -133,6 +133,12 @@ export class DocLinksService { dashboardSettings: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/advanced-options.html#kibana-dashboard-settings`, visualizationSettings: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/advanced-options.html#kibana-visualization-settings`, }, + ml: { + guide: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/index.html`, + anomalyDetection: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/xpack-ml.html`, + anomalyDetectionJobs: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/ml-jobs.html`, + dataFrameAnalytics: `${ELASTIC_WEBSITE_URL}guide/en/machine-learning/${DOC_LINK_VERSION}/ml-dfanalytics.html`, + }, visualize: { guide: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/visualize.html`, timelionDeprecation: `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/dashboard.html#timelion-deprecation`, @@ -242,6 +248,12 @@ export interface DocLinksStart { readonly dateMath: string; }; readonly management: Record; + readonly ml: { + readonly guide: string; + readonly anomalyDetection: string; + readonly anomalyDetectionJobs: string; + readonly dataFrameAnalytics: string; + }; readonly visualize: Record; }; } diff --git a/src/core/public/http/base_path.test.ts b/src/core/public/http/base_path.test.ts index 6468e674d5e788..e749934f06af2e 100644 --- a/src/core/public/http/base_path.test.ts +++ b/src/core/public/http/base_path.test.ts @@ -98,4 +98,13 @@ describe('BasePath', () => { expect(new BasePath('/foo/bar', '/foo').serverBasePath).toEqual('/foo'); }); }); + + describe('publicBaseUrl', () => { + it('returns value passed into construtor', () => { + expect(new BasePath('/foo/bar', '/foo').publicBaseUrl).toEqual(undefined); + expect(new BasePath('/foo/bar', '/foo', 'http://myhost.com/foo').publicBaseUrl).toEqual( + 'http://myhost.com/foo' + ); + }); + }); }); diff --git a/src/core/public/http/base_path.ts b/src/core/public/http/base_path.ts index 78e9cf75ff8060..44666450ee9803 100644 --- a/src/core/public/http/base_path.ts +++ b/src/core/public/http/base_path.ts @@ -22,7 +22,8 @@ import { modifyUrl } from '@kbn/std'; export class BasePath { constructor( private readonly basePath: string = '', - public readonly serverBasePath: string = basePath + public readonly serverBasePath: string = basePath, + public readonly publicBaseUrl?: string ) {} public get = () => { diff --git a/src/core/public/http/http_service.ts b/src/core/public/http/http_service.ts index 98de1d919c4815..2eaaefe285755c 100644 --- a/src/core/public/http/http_service.ts +++ b/src/core/public/http/http_service.ts @@ -41,7 +41,8 @@ export class HttpService implements CoreService { const kibanaVersion = injectedMetadata.getKibanaVersion(); const basePath = new BasePath( injectedMetadata.getBasePath(), - injectedMetadata.getServerBasePath() + injectedMetadata.getServerBasePath(), + injectedMetadata.getPublicBaseUrl() ); const fetchService = new Fetch({ basePath, kibanaVersion }); const loadingCount = this.loadingCount.setup({ fatalErrors }); diff --git a/src/core/public/http/types.ts b/src/core/public/http/types.ts index 2361d981b8597e..7285d1a4288dc4 100644 --- a/src/core/public/http/types.ts +++ b/src/core/public/http/types.ts @@ -102,6 +102,15 @@ export interface IBasePath { * See {@link BasePath.get} for getting the basePath value for a specific request */ readonly serverBasePath: string; + + /** + * The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the + * {@link IBasePath.serverBasePath}. + * + * @remarks + * Should be used for generating external URL links back to this Kibana instance. + */ + readonly publicBaseUrl?: string; } /** diff --git a/src/core/public/index.ts b/src/core/public/index.ts index 564bbd712c535d..557529fc94dc4a 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -95,7 +95,6 @@ export { ApplicationSetup, ApplicationStart, App, - PublicAppInfo, AppMount, AppMountDeprecated, AppUnmount, @@ -110,6 +109,9 @@ export { AppNavLinkStatus, AppUpdatableFields, AppUpdater, + AppSearchDeepLink, + PublicAppInfo, + PublicAppSearchDeepLinkInfo, ScopedHistory, NavigateToAppOptions, } from './application'; diff --git a/src/core/public/injected_metadata/injected_metadata_service.mock.ts b/src/core/public/injected_metadata/injected_metadata_service.mock.ts index 33d04eedebb072..96282caa62c0a7 100644 --- a/src/core/public/injected_metadata/injected_metadata_service.mock.ts +++ b/src/core/public/injected_metadata/injected_metadata_service.mock.ts @@ -23,6 +23,7 @@ const createSetupContractMock = () => { const setupContract: jest.Mocked = { getBasePath: jest.fn(), getServerBasePath: jest.fn(), + getPublicBaseUrl: jest.fn(), getKibanaVersion: jest.fn(), getKibanaBranch: jest.fn(), getCspConfig: jest.fn(), diff --git a/src/core/public/injected_metadata/injected_metadata_service.ts b/src/core/public/injected_metadata/injected_metadata_service.ts index bd8c9e91f15a28..283710980e3ce0 100644 --- a/src/core/public/injected_metadata/injected_metadata_service.ts +++ b/src/core/public/injected_metadata/injected_metadata_service.ts @@ -44,6 +44,7 @@ export interface InjectedMetadataParams { branch: string; basePath: string; serverBasePath: string; + publicBaseUrl: string; category?: AppCategory; csp: { warnLegacyBrowsers: boolean; @@ -95,6 +96,10 @@ export class InjectedMetadataService { return this.state.serverBasePath; }, + getPublicBaseUrl: () => { + return this.state.publicBaseUrl; + }, + getAnonymousStatusPage: () => { return this.state.anonymousStatusPage; }, @@ -142,6 +147,7 @@ export class InjectedMetadataService { export interface InjectedMetadataSetup { getBasePath: () => string; getServerBasePath: () => string; + getPublicBaseUrl: () => string; getKibanaBuildNumber: () => number; getKibanaBranch: () => string; getKibanaVersion: () => string; diff --git a/src/core/public/overlays/flyout/flyout_service.tsx b/src/core/public/overlays/flyout/flyout_service.tsx index 444430175d4f23..85b31d48bd39e1 100644 --- a/src/core/public/overlays/flyout/flyout_service.tsx +++ b/src/core/public/overlays/flyout/flyout_service.tsx @@ -19,7 +19,7 @@ /* eslint-disable max-classes-per-file */ -import { EuiFlyout } from '@elastic/eui'; +import { EuiFlyout, EuiFlyoutSize } from '@elastic/eui'; import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { Subject } from 'rxjs'; @@ -93,6 +93,8 @@ export interface OverlayFlyoutOpenOptions { closeButtonAriaLabel?: string; ownFocus?: boolean; 'data-test-subj'?: string; + size?: EuiFlyoutSize; + maxWidth?: boolean | number | string; } interface StartDeps { diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 37e57a9ee606e3..0b1d3f8263a239 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -12,6 +12,7 @@ import { EnvironmentMode } from '@kbn/config'; import { EuiBreadcrumb } from '@elastic/eui'; import { EuiButtonEmptyProps } from '@elastic/eui'; import { EuiConfirmModalProps } from '@elastic/eui'; +import { EuiFlyoutSize } from '@elastic/eui'; import { EuiGlobalToastListToast } from '@elastic/eui'; import { ExclusiveUnion } from '@elastic/eui'; import { History } from 'history'; @@ -38,7 +39,7 @@ import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { Type } from '@kbn/config-schema'; import { TypeOf } from '@kbn/config-schema'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { UnregisterCallback } from 'history'; import { UserProvidedValues as UserProvidedValues_2 } from 'src/core/server/types'; @@ -59,6 +60,8 @@ export interface App { mount: AppMount | AppMountDeprecated; navLinkStatus?: AppNavLinkStatus; order?: number; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "AppSubLink" + searchDeepLinks?: AppSearchDeepLink[]; status?: AppStatus; title: string; tooltip?: string; @@ -175,6 +178,18 @@ export enum AppNavLinkStatus { visible = 1 } +// @public +export type AppSearchDeepLink = { + id: string; + title: string; +} & ({ + path: string; + searchDeepLinks?: AppSearchDeepLink[]; +} | { + path?: string; + searchDeepLinks: AppSearchDeepLink[]; +}); + // @public export enum AppStatus { accessible = 0, @@ -185,7 +200,7 @@ export enum AppStatus { export type AppUnmount = () => void; // @public -export type AppUpdatableFields = Pick; +export type AppUpdatableFields = Pick; // @public export type AppUpdater = (app: App) => Partial | undefined; @@ -553,6 +568,12 @@ export interface DocLinksStart { readonly dateMath: string; }; readonly management: Record; + readonly ml: { + readonly guide: string; + readonly anomalyDetection: string; + readonly anomalyDetectionJobs: string; + readonly dataFrameAnalytics: string; + }; readonly visualize: Record; }; } @@ -739,6 +760,7 @@ export interface IAnonymousPaths { export interface IBasePath { get: () => string; prepend: (url: string) => string; + readonly publicBaseUrl?: string; remove: (url: string) => string; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "BasePath" readonly serverBasePath: string; @@ -871,7 +893,11 @@ export interface OverlayFlyoutOpenOptions { // (undocumented) closeButtonAriaLabel?: string; // (undocumented) + maxWidth?: boolean | number | string; + // (undocumented) ownFocus?: boolean; + // (undocumented) + size?: EuiFlyoutSize; } // @public @@ -967,10 +993,16 @@ export interface PluginInitializerContext export type PluginOpaqueId = symbol; // @public -export type PublicAppInfo = Omit & { +export type PublicAppInfo = Omit & { status: AppStatus; navLinkStatus: AppNavLinkStatus; appRoute: string; + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; +}; + +// @public +export type PublicAppSearchDeepLinkInfo = Omit & { + searchDeepLinks: PublicAppSearchDeepLinkInfo[]; }; // @public @@ -1414,7 +1446,7 @@ export interface UiSettingsParams { description?: string; // @deprecated metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; name?: string; diff --git a/src/core/public/ui_settings/ui_settings_api.ts b/src/core/public/ui_settings/ui_settings_api.ts index c5efced0a41e3f..175f70a05ec7e1 100644 --- a/src/core/public/ui_settings/ui_settings_api.ts +++ b/src/core/public/ui_settings/ui_settings_api.ts @@ -70,7 +70,7 @@ export class UiSettingsApi { if (error) { reject(error); } else { - resolve(resp); + resolve(resp!); } }, }; diff --git a/src/core/public/utils/crypto/sha256.ts b/src/core/public/utils/crypto/sha256.ts index 13e0d405a706b5..add93cb75b92ae 100644 --- a/src/core/public/utils/crypto/sha256.ts +++ b/src/core/public/utils/crypto/sha256.ts @@ -200,7 +200,7 @@ export class Sha256 { return this; } - digest(encoding: string): string { + digest(encoding: BufferEncoding): string { // Suppose the length of the message M, in bits, is l const l = this._len * 8; diff --git a/src/core/public/utils/index.ts b/src/core/public/utils/index.ts index cf826eb276252d..35381f49543ae2 100644 --- a/src/core/public/utils/index.ts +++ b/src/core/public/utils/index.ts @@ -17,6 +17,5 @@ * under the License. */ -export { shareWeakReplay } from './share_weak_replay'; export { Sha256 } from './crypto'; export { MountWrapper, mountReactNode } from './mount'; diff --git a/src/core/public/utils/share_weak_replay.test.ts b/src/core/public/utils/share_weak_replay.test.ts deleted file mode 100644 index beac851aa689c6..00000000000000 --- a/src/core/public/utils/share_weak_replay.test.ts +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import * as Rx from 'rxjs'; -import { map, materialize, take, toArray } from 'rxjs/operators'; - -import { shareWeakReplay } from './share_weak_replay'; - -let completedCounts = 0; - -function counter({ async = true }: { async?: boolean } = {}) { - let subCounter = 0; - - function sendCount(subscriber: Rx.Subscriber) { - let notifCounter = 0; - const sub = ++subCounter; - - while (!subscriber.closed) { - subscriber.next(`${sub}:${++notifCounter}`); - } - - completedCounts += 1; - } - - return new Rx.Observable((subscriber) => { - if (!async) { - sendCount(subscriber); - return; - } - - const id = setTimeout(() => sendCount(subscriber)); - return () => clearTimeout(id); - }); -} - -async function record(observable: Rx.Observable) { - return observable - .pipe( - materialize(), - map((n) => (n.kind === 'N' ? `N:${n.value}` : n.kind === 'E' ? `E:${n.error.message}` : 'C')), - toArray() - ) - .toPromise(); -} - -afterEach(() => { - completedCounts = 0; -}); - -it('multicasts an observable to multiple children, unsubs once all children do, and resubscribes on next subscription', async () => { - const shared = counter().pipe(shareWeakReplay(1)); - - await expect(Promise.all([record(shared.pipe(take(1))), record(shared.pipe(take(2)))])).resolves - .toMatchInlineSnapshot(` -Array [ - Array [ - "N:1:1", - "C", - ], - Array [ - "N:1:1", - "N:1:2", - "C", - ], -] -`); - - await expect(Promise.all([record(shared.pipe(take(3))), record(shared.pipe(take(4)))])).resolves - .toMatchInlineSnapshot(` -Array [ - Array [ - "N:2:1", - "N:2:2", - "N:2:3", - "C", - ], - Array [ - "N:2:1", - "N:2:2", - "N:2:3", - "N:2:4", - "C", - ], -] -`); - - expect(completedCounts).toBe(2); -}); - -it('resubscribes if parent errors', async () => { - let errorCounter = 0; - const shared = counter().pipe( - map((v, i) => { - if (i === 3) { - throw new Error(`error ${++errorCounter}`); - } - return v; - }), - shareWeakReplay(2) - ); - - await expect(Promise.all([record(shared), record(shared)])).resolves.toMatchInlineSnapshot(` -Array [ - Array [ - "N:1:1", - "N:1:2", - "N:1:3", - "E:error 1", - ], - Array [ - "N:1:1", - "N:1:2", - "N:1:3", - "E:error 1", - ], -] -`); - - await expect(Promise.all([record(shared), record(shared)])).resolves.toMatchInlineSnapshot(` -Array [ - Array [ - "N:2:1", - "N:2:2", - "N:2:3", - "E:error 2", - ], - Array [ - "N:2:1", - "N:2:2", - "N:2:3", - "E:error 2", - ], -] -`); - - expect(completedCounts).toBe(2); -}); - -it('resubscribes if parent completes', async () => { - const shared = counter().pipe(take(4), shareWeakReplay(4)); - - await expect(Promise.all([record(shared.pipe(take(1))), record(shared)])).resolves - .toMatchInlineSnapshot(` -Array [ - Array [ - "N:1:1", - "C", - ], - Array [ - "N:1:1", - "N:1:2", - "N:1:3", - "N:1:4", - "C", - ], -] -`); - - await expect(Promise.all([record(shared.pipe(take(2))), record(shared)])).resolves - .toMatchInlineSnapshot(` -Array [ - Array [ - "N:2:1", - "N:2:2", - "C", - ], - Array [ - "N:2:1", - "N:2:2", - "N:2:3", - "N:2:4", - "C", - ], -] -`); - - expect(completedCounts).toBe(2); -}); - -it('supports parents that complete synchronously', async () => { - const next = jest.fn(); - const complete = jest.fn(); - const shared = counter({ async: false }).pipe(take(3), shareWeakReplay(1)); - - shared.subscribe({ next, complete }); - expect(next.mock.calls).toMatchInlineSnapshot(` -Array [ - Array [ - "1:1", - ], - Array [ - "1:2", - ], - Array [ - "1:3", - ], -] -`); - expect(complete).toHaveBeenCalledTimes(1); - - next.mockClear(); - complete.mockClear(); - - shared.subscribe({ next, complete }); - expect(next.mock.calls).toMatchInlineSnapshot(` -Array [ - Array [ - "2:1", - ], - Array [ - "2:2", - ], - Array [ - "2:3", - ], -] -`); - expect(complete).toHaveBeenCalledTimes(1); - - expect(completedCounts).toBe(2); -}); diff --git a/src/core/public/utils/share_weak_replay.ts b/src/core/public/utils/share_weak_replay.ts deleted file mode 100644 index 5ed6f76c5a05a8..00000000000000 --- a/src/core/public/utils/share_weak_replay.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import * as Rx from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; - -/** - * Just like the [`shareReplay()`](https://rxjs-dev.firebaseapp.com/api/operators/shareReplay) operator from - * RxJS except for a few key differences: - * - * - If all downstream subscribers unsubscribe the source subscription will be unsubscribed. - * - * - Replay-ability is only maintained while the source is active, if it completes or errors - * then complete/error is sent to the current subscribers and the replay buffer is cleared. - * - * - Any subscription after the the source completes or errors will create a new subscription - * to the source observable. - * - * @param bufferSize Optional, default is `Number.POSITIVE_INFINITY` - */ -export function shareWeakReplay(bufferSize?: number): Rx.MonoTypeOperatorFunction { - return (source: Rx.Observable) => { - let subject: Rx.ReplaySubject | undefined; - const stop$ = new Rx.Subject(); - - return new Rx.Observable((observer) => { - if (!subject) { - subject = new Rx.ReplaySubject(bufferSize); - } - - subject.subscribe(observer).add(() => { - if (!subject) { - return; - } - - if (subject.observers.length === 0) { - stop$.next(); - } - - if (subject.closed || subject.isStopped) { - subject = undefined; - } - }); - - if (subject && subject.observers.length === 1) { - source.pipe(takeUntil(stop$)).subscribe(subject); - } - }); - }; -} diff --git a/src/core/server/bootstrap.ts b/src/core/server/bootstrap.ts index ff1a5c0340c466..f7dd2a4ea24f5e 100644 --- a/src/core/server/bootstrap.ts +++ b/src/core/server/bootstrap.ts @@ -18,19 +18,15 @@ */ import chalk from 'chalk'; -import { isMaster } from 'cluster'; import { CliArgs, Env, RawConfigService } from './config'; import { Root } from './root'; import { CriticalError } from './errors'; interface KibanaFeatures { - // Indicates whether we can run Kibana in a so called cluster mode in which - // Kibana is run as a "worker" process together with optimizer "worker" process - // that are orchestrated by the "master" process (dev mode only feature). - isClusterModeSupported: boolean; - - // Indicates whether we can run Kibana in REPL mode (dev mode only feature). - isReplModeSupported: boolean; + // Indicates whether we can run Kibana in dev mode in which Kibana is run as + // a child process together with optimizer "worker" processes that are + // orchestrated by a parent process (dev mode only feature). + isCliDevModeSupported: boolean; } interface BootstrapArgs { @@ -51,10 +47,6 @@ export async function bootstrap({ applyConfigOverrides, features, }: BootstrapArgs) { - if (cliArgs.repl && !features.isReplModeSupported) { - onRootShutdown('Kibana REPL mode can only be run in development mode.'); - } - if (cliArgs.optimize) { // --optimize is deprecated and does nothing now, avoid starting up and just shutdown return; @@ -71,7 +63,7 @@ export async function bootstrap({ const env = Env.createDefault(REPO_ROOT, { configs, cliArgs, - isDevClusterMaster: isMaster && cliArgs.dev && features.isClusterModeSupported, + isDevCliParent: cliArgs.dev && features.isCliDevModeSupported && !process.env.isDevCliChild, }); const rawConfigService = new RawConfigService(env.configs, applyConfigOverrides); diff --git a/src/core/server/config/deprecation/core_deprecations.test.ts b/src/core/server/config/deprecation/core_deprecations.test.ts index 7a69dc2fa726e0..c645629fa5653b 100644 --- a/src/core/server/config/deprecation/core_deprecations.test.ts +++ b/src/core/server/config/deprecation/core_deprecations.test.ts @@ -82,12 +82,13 @@ describe('core deprecations', () => { describe('xsrfDeprecation', () => { it('logs a warning if server.xsrf.whitelist is set', () => { - const { messages } = applyCoreDeprecations({ + const { migrated, messages } = applyCoreDeprecations({ server: { xsrf: { whitelist: ['/path'] } }, }); + expect(migrated.server.xsrf.allowlist).toEqual(['/path']); expect(messages).toMatchInlineSnapshot(` Array [ - "It is not recommended to disable xsrf protections for API endpoints via [server.xsrf.whitelist]. It will be removed in 8.0 release. Instead, supply the \\"kbn-xsrf\\" header.", + "\\"server.xsrf.whitelist\\" is deprecated and has been replaced by \\"server.xsrf.allowlist\\"", ] `); }); diff --git a/src/core/server/config/deprecation/core_deprecations.ts b/src/core/server/config/deprecation/core_deprecations.ts index 6c85cfbed8e826..3dde7cfb6c1cb0 100644 --- a/src/core/server/config/deprecation/core_deprecations.ts +++ b/src/core/server/config/deprecation/core_deprecations.ts @@ -38,16 +38,6 @@ const dataPathDeprecation: ConfigDeprecation = (settings, fromPath, log) => { return settings; }; -const xsrfDeprecation: ConfigDeprecation = (settings, fromPath, log) => { - if ((settings.server?.xsrf?.whitelist ?? []).length > 0) { - log( - 'It is not recommended to disable xsrf protections for API endpoints via [server.xsrf.whitelist]. ' + - 'It will be removed in 8.0 release. Instead, supply the "kbn-xsrf" header.' - ); - } - return settings; -}; - const rewriteBasePathDeprecation: ConfigDeprecation = (settings, fromPath, log) => { if (has(settings, 'server.basePath') && !has(settings, 'server.rewriteBasePath')) { log( @@ -140,10 +130,10 @@ export const coreDeprecationProvider: ConfigDeprecationProvider = ({ rename, unu unusedFromRoot('elasticsearch.startupTimeout'), rename('cpu.cgroup.path.override', 'ops.cGroupOverrides.cpuPath'), rename('cpuacct.cgroup.path.override', 'ops.cGroupOverrides.cpuAcctPath'), + rename('server.xsrf.whitelist', 'server.xsrf.allowlist'), configPathDeprecation, dataPathDeprecation, rewriteBasePathDeprecation, cspRulesDeprecation, mapManifestServiceUrlDeprecation, - xsrfDeprecation, ]; diff --git a/src/core/server/core_usage_data/constants.ts b/src/core/server/core_usage_data/constants.ts new file mode 100644 index 00000000000000..0bae7a8cad9d2e --- /dev/null +++ b/src/core/server/core_usage_data/constants.ts @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** @internal */ +export const CORE_USAGE_STATS_TYPE = 'core-usage-stats'; + +/** @internal */ +export const CORE_USAGE_STATS_ID = 'core-usage-stats'; diff --git a/src/core/server/core_usage_data/core_usage_data_service.mock.ts b/src/core/server/core_usage_data/core_usage_data_service.mock.ts index 523256129333f9..9501386318cad1 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.mock.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.mock.ts @@ -20,7 +20,16 @@ import { PublicMethodsOf } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; import { CoreUsageDataService } from './core_usage_data_service'; -import { CoreUsageData, CoreUsageDataStart } from './types'; +import { coreUsageStatsClientMock } from './core_usage_stats_client.mock'; +import { CoreUsageData, CoreUsageDataSetup, CoreUsageDataStart } from './types'; + +const createSetupContractMock = (usageStatsClient = coreUsageStatsClientMock.create()) => { + const setupContract: jest.Mocked = { + registerType: jest.fn(), + getClient: jest.fn().mockReturnValue(usageStatsClient), + }; + return setupContract; +}; const createStartContractMock = () => { const startContract: jest.Mocked = { @@ -99,7 +108,7 @@ const createStartContractMock = () => { }, xsrf: { disableProtection: false, - whitelistConfigured: false, + allowlistConfigured: false, }, }, logging: { @@ -140,7 +149,7 @@ const createStartContractMock = () => { const createMock = () => { const mocked: jest.Mocked> = { - setup: jest.fn(), + setup: jest.fn().mockReturnValue(createSetupContractMock()), start: jest.fn().mockReturnValue(createStartContractMock()), stop: jest.fn(), }; @@ -149,5 +158,6 @@ const createMock = () => { export const coreUsageDataServiceMock = { create: createMock, + createSetupContract: createSetupContractMock, createStartContract: createStartContractMock, }; diff --git a/src/core/server/core_usage_data/core_usage_data_service.test.ts b/src/core/server/core_usage_data/core_usage_data_service.test.ts index e1c78edb902a97..e22dfcb1e3a20c 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.test.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.test.ts @@ -34,6 +34,9 @@ import { savedObjectsServiceMock } from '../saved_objects/saved_objects_service. import { CoreUsageDataService } from './core_usage_data_service'; import { elasticsearchServiceMock } from '../elasticsearch/elasticsearch_service.mock'; +import { typeRegistryMock } from '../saved_objects/saved_objects_type_registry.mock'; +import { CORE_USAGE_STATS_TYPE } from './constants'; +import { CoreUsageStatsClient } from './core_usage_stats_client'; describe('CoreUsageDataService', () => { const getTestScheduler = () => @@ -63,11 +66,67 @@ describe('CoreUsageDataService', () => { service = new CoreUsageDataService(coreContext); }); + describe('setup', () => { + it('creates internal repository', async () => { + const metrics = metricsServiceMock.createInternalSetupContract(); + const savedObjectsStartPromise = Promise.resolve( + savedObjectsServiceMock.createStartContract() + ); + service.setup({ metrics, savedObjectsStartPromise }); + + const savedObjects = await savedObjectsStartPromise; + expect(savedObjects.createInternalRepository).toHaveBeenCalledTimes(1); + expect(savedObjects.createInternalRepository).toHaveBeenCalledWith([CORE_USAGE_STATS_TYPE]); + }); + + describe('#registerType', () => { + it('registers core usage stats type', async () => { + const metrics = metricsServiceMock.createInternalSetupContract(); + const savedObjectsStartPromise = Promise.resolve( + savedObjectsServiceMock.createStartContract() + ); + const coreUsageData = service.setup({ + metrics, + savedObjectsStartPromise, + }); + const typeRegistry = typeRegistryMock.create(); + + coreUsageData.registerType(typeRegistry); + expect(typeRegistry.registerType).toHaveBeenCalledTimes(1); + expect(typeRegistry.registerType).toHaveBeenCalledWith({ + name: CORE_USAGE_STATS_TYPE, + hidden: true, + namespaceType: 'agnostic', + mappings: expect.anything(), + }); + }); + }); + + describe('#getClient', () => { + it('returns client', async () => { + const metrics = metricsServiceMock.createInternalSetupContract(); + const savedObjectsStartPromise = Promise.resolve( + savedObjectsServiceMock.createStartContract() + ); + const coreUsageData = service.setup({ + metrics, + savedObjectsStartPromise, + }); + + const usageStatsClient = coreUsageData.getClient(); + expect(usageStatsClient).toBeInstanceOf(CoreUsageStatsClient); + }); + }); + }); + describe('start', () => { describe('getCoreUsageData', () => { - it('returns core metrics for default config', () => { + it('returns core metrics for default config', async () => { const metrics = metricsServiceMock.createInternalSetupContract(); - service.setup({ metrics }); + const savedObjectsStartPromise = Promise.resolve( + savedObjectsServiceMock.createStartContract() + ); + service.setup({ metrics, savedObjectsStartPromise }); const elasticsearch = elasticsearchServiceMock.createStart(); elasticsearch.client.asInternalUser.cat.indices.mockResolvedValueOnce({ body: [ @@ -182,8 +241,8 @@ describe('CoreUsageDataService', () => { "truststoreConfigured": false, }, "xsrf": Object { + "allowlistConfigured": false, "disableProtection": false, - "whitelistConfigured": false, }, }, "logging": Object { @@ -243,8 +302,11 @@ describe('CoreUsageDataService', () => { observables.push(newObservable); return newObservable as Observable; }); + const savedObjectsStartPromise = Promise.resolve( + savedObjectsServiceMock.createStartContract() + ); - service.setup({ metrics }); + service.setup({ metrics, savedObjectsStartPromise }); // Use the stopTimer$ to delay calling stop() until the third frame const stopTimer$ = cold('---a|'); diff --git a/src/core/server/core_usage_data/core_usage_data_service.ts b/src/core/server/core_usage_data/core_usage_data_service.ts index f729e23cb68bcd..02b4f2ac591332 100644 --- a/src/core/server/core_usage_data/core_usage_data_service.ts +++ b/src/core/server/core_usage_data/core_usage_data_service.ts @@ -21,20 +21,29 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { CoreService } from 'src/core/types'; -import { SavedObjectsServiceStart } from 'src/core/server'; +import { Logger, SavedObjectsServiceStart, SavedObjectTypeRegistry } from 'src/core/server'; import { CoreContext } from '../core_context'; import { ElasticsearchConfigType } from '../elasticsearch/elasticsearch_config'; import { HttpConfigType } from '../http'; import { LoggingConfigType } from '../logging'; import { SavedObjectsConfigType } from '../saved_objects/saved_objects_config'; -import { CoreServicesUsageData, CoreUsageData, CoreUsageDataStart } from './types'; +import { + CoreServicesUsageData, + CoreUsageData, + CoreUsageDataStart, + CoreUsageDataSetup, +} from './types'; import { isConfigured } from './is_configured'; import { ElasticsearchServiceStart } from '../elasticsearch'; import { KibanaConfigType } from '../kibana_config'; +import { coreUsageStatsType } from './core_usage_stats'; +import { CORE_USAGE_STATS_TYPE } from './constants'; +import { CoreUsageStatsClient } from './core_usage_stats_client'; import { MetricsServiceSetup, OpsMetrics } from '..'; export interface SetupDeps { metrics: MetricsServiceSetup; + savedObjectsStartPromise: Promise; } export interface StartDeps { @@ -60,7 +69,8 @@ const kibanaOrTaskManagerIndex = (index: string, kibanaConfigIndex: string) => { return index === kibanaConfigIndex ? '.kibana' : '.kibana_task_manager'; }; -export class CoreUsageDataService implements CoreService { +export class CoreUsageDataService implements CoreService { + private logger: Logger; private elasticsearchConfig?: ElasticsearchConfigType; private configService: CoreContext['configService']; private httpConfig?: HttpConfigType; @@ -69,8 +79,10 @@ export class CoreUsageDataService implements CoreService; private opsMetrics?: OpsMetrics; private kibanaConfig?: KibanaConfigType; + private coreUsageStatsClient?: CoreUsageStatsClient; constructor(core: CoreContext) { + this.logger = core.logger.get('core-usage-stats-service'); this.configService = core.configService; this.stop$ = new Subject(); } @@ -130,8 +142,15 @@ export class CoreUsageDataService implements CoreService { this.kibanaConfig = config; }); + + const internalRepositoryPromise = savedObjectsStartPromise.then((savedObjects) => + savedObjects.createInternalRepository([CORE_USAGE_STATS_TYPE]) + ); + + const registerType = (typeRegistry: SavedObjectTypeRegistry) => { + typeRegistry.registerType(coreUsageStatsType); + }; + + const getClient = () => { + const debugLogger = (message: string) => this.logger.debug(message); + + return new CoreUsageStatsClient(debugLogger, internalRepositoryPromise); + }; + + this.coreUsageStatsClient = getClient(); + + return { registerType, getClient } as CoreUsageDataSetup; } start({ savedObjects, elasticsearch }: StartDeps) { diff --git a/src/core/server/core_usage_data/core_usage_stats.ts b/src/core/server/core_usage_data/core_usage_stats.ts new file mode 100644 index 00000000000000..382a544a589607 --- /dev/null +++ b/src/core/server/core_usage_data/core_usage_stats.ts @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SavedObjectsType } from '../saved_objects'; +import { CORE_USAGE_STATS_TYPE } from './constants'; + +/** @internal */ +export const coreUsageStatsType: SavedObjectsType = { + name: CORE_USAGE_STATS_TYPE, + hidden: true, + namespaceType: 'agnostic', + mappings: { + dynamic: false, // we aren't querying or aggregating over this data, so we don't need to specify any fields + properties: {}, + }, +}; diff --git a/src/core/server/core_usage_data/core_usage_stats_client.mock.ts b/src/core/server/core_usage_data/core_usage_stats_client.mock.ts new file mode 100644 index 00000000000000..3bfb411c9dd49e --- /dev/null +++ b/src/core/server/core_usage_data/core_usage_stats_client.mock.ts @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CoreUsageStatsClient } from '.'; + +const createUsageStatsClientMock = () => + (({ + getUsageStats: jest.fn().mockResolvedValue({}), + incrementSavedObjectsImport: jest.fn().mockResolvedValue(null), + incrementSavedObjectsResolveImportErrors: jest.fn().mockResolvedValue(null), + incrementSavedObjectsExport: jest.fn().mockResolvedValue(null), + } as unknown) as jest.Mocked); + +export const coreUsageStatsClientMock = { + create: createUsageStatsClientMock, +}; diff --git a/src/core/server/core_usage_data/core_usage_stats_client.test.ts b/src/core/server/core_usage_data/core_usage_stats_client.test.ts new file mode 100644 index 00000000000000..e4f47667fce6b1 --- /dev/null +++ b/src/core/server/core_usage_data/core_usage_stats_client.test.ts @@ -0,0 +1,227 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { savedObjectsRepositoryMock } from '../mocks'; +import { CORE_USAGE_STATS_TYPE, CORE_USAGE_STATS_ID } from './constants'; +import { + IncrementSavedObjectsImportOptions, + IncrementSavedObjectsResolveImportErrorsOptions, + IncrementSavedObjectsExportOptions, + IMPORT_STATS_PREFIX, + RESOLVE_IMPORT_STATS_PREFIX, + EXPORT_STATS_PREFIX, +} from './core_usage_stats_client'; +import { CoreUsageStatsClient } from '.'; + +describe('CoreUsageStatsClient', () => { + const setup = () => { + const debugLoggerMock = jest.fn(); + const repositoryMock = savedObjectsRepositoryMock.create(); + const usageStatsClient = new CoreUsageStatsClient( + debugLoggerMock, + Promise.resolve(repositoryMock) + ); + return { usageStatsClient, debugLoggerMock, repositoryMock }; + }; + + const firstPartyRequestHeaders = { 'kbn-version': 'a', origin: 'b', referer: 'c' }; // as long as these three header fields are truthy, this will be treated like a first-party request + const incrementOptions = { refresh: false }; + + describe('#getUsageStats', () => { + it('returns empty object when encountering a repository error', async () => { + const { usageStatsClient, repositoryMock } = setup(); + repositoryMock.get.mockRejectedValue(new Error('Oh no!')); + + const result = await usageStatsClient.getUsageStats(); + expect(result).toEqual({}); + }); + + it('returns object attributes when usage stats exist', async () => { + const { usageStatsClient, repositoryMock } = setup(); + const usageStats = { foo: 'bar' }; + repositoryMock.incrementCounter.mockResolvedValue({ + type: CORE_USAGE_STATS_TYPE, + id: CORE_USAGE_STATS_ID, + attributes: usageStats, + references: [], + }); + + const result = await usageStatsClient.getUsageStats(); + expect(result).toEqual(usageStats); + }); + }); + + describe('#incrementSavedObjectsImport', () => { + it('does not throw an error if repository incrementCounter operation fails', async () => { + const { usageStatsClient, repositoryMock } = setup(); + repositoryMock.incrementCounter.mockRejectedValue(new Error('Oh no!')); + + await expect( + usageStatsClient.incrementSavedObjectsImport({} as IncrementSavedObjectsImportOptions) + ).resolves.toBeUndefined(); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + }); + + it('handles falsy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsImport({} as IncrementSavedObjectsImportOptions); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${IMPORT_STATS_PREFIX}.total`, + `${IMPORT_STATS_PREFIX}.kibanaRequest.no`, + `${IMPORT_STATS_PREFIX}.createNewCopiesEnabled.no`, + `${IMPORT_STATS_PREFIX}.overwriteEnabled.no`, + ], + incrementOptions + ); + }); + + it('handles truthy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsImport({ + headers: firstPartyRequestHeaders, + createNewCopies: true, + overwrite: true, + } as IncrementSavedObjectsImportOptions); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${IMPORT_STATS_PREFIX}.total`, + `${IMPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${IMPORT_STATS_PREFIX}.createNewCopiesEnabled.yes`, + `${IMPORT_STATS_PREFIX}.overwriteEnabled.yes`, + ], + incrementOptions + ); + }); + }); + + describe('#incrementSavedObjectsResolveImportErrors', () => { + it('does not throw an error if repository incrementCounter operation fails', async () => { + const { usageStatsClient, repositoryMock } = setup(); + repositoryMock.incrementCounter.mockRejectedValue(new Error('Oh no!')); + + await expect( + usageStatsClient.incrementSavedObjectsResolveImportErrors( + {} as IncrementSavedObjectsResolveImportErrorsOptions + ) + ).resolves.toBeUndefined(); + expect(repositoryMock.incrementCounter).toHaveBeenCalled(); + }); + + it('handles falsy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsResolveImportErrors( + {} as IncrementSavedObjectsResolveImportErrorsOptions + ); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${RESOLVE_IMPORT_STATS_PREFIX}.total`, + `${RESOLVE_IMPORT_STATS_PREFIX}.kibanaRequest.no`, + `${RESOLVE_IMPORT_STATS_PREFIX}.createNewCopiesEnabled.no`, + ], + incrementOptions + ); + }); + + it('handles truthy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsResolveImportErrors({ + headers: firstPartyRequestHeaders, + createNewCopies: true, + } as IncrementSavedObjectsResolveImportErrorsOptions); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${RESOLVE_IMPORT_STATS_PREFIX}.total`, + `${RESOLVE_IMPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${RESOLVE_IMPORT_STATS_PREFIX}.createNewCopiesEnabled.yes`, + ], + incrementOptions + ); + }); + }); + + describe('#incrementSavedObjectsExport', () => { + it('does not throw an error if repository incrementCounter operation fails', async () => { + const { usageStatsClient, repositoryMock } = setup(); + repositoryMock.incrementCounter.mockRejectedValue(new Error('Oh no!')); + + await expect( + usageStatsClient.incrementSavedObjectsExport({} as IncrementSavedObjectsExportOptions) + ).resolves.toBeUndefined(); + expect(repositoryMock.incrementCounter).toHaveBeenCalled(); + }); + + it('handles falsy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsExport({ + types: undefined, + supportedTypes: ['foo', 'bar'], + } as IncrementSavedObjectsExportOptions); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${EXPORT_STATS_PREFIX}.total`, + `${EXPORT_STATS_PREFIX}.kibanaRequest.no`, + `${EXPORT_STATS_PREFIX}.allTypesSelected.no`, + ], + incrementOptions + ); + }); + + it('handles truthy options appropriately', async () => { + const { usageStatsClient, repositoryMock } = setup(); + + await usageStatsClient.incrementSavedObjectsExport({ + headers: firstPartyRequestHeaders, + types: ['foo', 'bar'], + supportedTypes: ['foo', 'bar'], + } as IncrementSavedObjectsExportOptions); + expect(repositoryMock.incrementCounter).toHaveBeenCalledTimes(1); + expect(repositoryMock.incrementCounter).toHaveBeenCalledWith( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + [ + `${EXPORT_STATS_PREFIX}.total`, + `${EXPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${EXPORT_STATS_PREFIX}.allTypesSelected.yes`, + ], + incrementOptions + ); + }); + }); +}); diff --git a/src/core/server/core_usage_data/core_usage_stats_client.ts b/src/core/server/core_usage_data/core_usage_stats_client.ts new file mode 100644 index 00000000000000..58356832d8b8af --- /dev/null +++ b/src/core/server/core_usage_data/core_usage_stats_client.ts @@ -0,0 +1,154 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CORE_USAGE_STATS_TYPE, CORE_USAGE_STATS_ID } from './constants'; +import { CoreUsageStats } from './types'; +import { + Headers, + ISavedObjectsRepository, + SavedObjectsImportOptions, + SavedObjectsResolveImportErrorsOptions, + SavedObjectsExportOptions, +} from '..'; + +interface BaseIncrementOptions { + headers?: Headers; +} +/** @internal */ +export type IncrementSavedObjectsImportOptions = BaseIncrementOptions & + Pick; +/** @internal */ +export type IncrementSavedObjectsResolveImportErrorsOptions = BaseIncrementOptions & + Pick; +/** @internal */ +export type IncrementSavedObjectsExportOptions = BaseIncrementOptions & + Pick & { supportedTypes: string[] }; + +export const IMPORT_STATS_PREFIX = 'apiCalls.savedObjectsImport'; +export const RESOLVE_IMPORT_STATS_PREFIX = 'apiCalls.savedObjectsResolveImportErrors'; +export const EXPORT_STATS_PREFIX = 'apiCalls.savedObjectsExport'; +const ALL_COUNTER_FIELDS = [ + `${IMPORT_STATS_PREFIX}.total`, + `${IMPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${IMPORT_STATS_PREFIX}.kibanaRequest.no`, + `${IMPORT_STATS_PREFIX}.createNewCopiesEnabled.yes`, + `${IMPORT_STATS_PREFIX}.createNewCopiesEnabled.no`, + `${IMPORT_STATS_PREFIX}.overwriteEnabled.yes`, + `${IMPORT_STATS_PREFIX}.overwriteEnabled.no`, + `${RESOLVE_IMPORT_STATS_PREFIX}.total`, + `${RESOLVE_IMPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${RESOLVE_IMPORT_STATS_PREFIX}.kibanaRequest.no`, + `${RESOLVE_IMPORT_STATS_PREFIX}.createNewCopiesEnabled.yes`, + `${RESOLVE_IMPORT_STATS_PREFIX}.createNewCopiesEnabled.no`, + `${EXPORT_STATS_PREFIX}.total`, + `${EXPORT_STATS_PREFIX}.kibanaRequest.yes`, + `${EXPORT_STATS_PREFIX}.kibanaRequest.no`, + `${EXPORT_STATS_PREFIX}.allTypesSelected.yes`, + `${EXPORT_STATS_PREFIX}.allTypesSelected.no`, +]; + +/** @internal */ +export class CoreUsageStatsClient { + constructor( + private readonly debugLogger: (message: string) => void, + private readonly repositoryPromise: Promise + ) {} + + public async getUsageStats() { + this.debugLogger('getUsageStats() called'); + let coreUsageStats: CoreUsageStats = {}; + try { + const repository = await this.repositoryPromise; + const result = await repository.incrementCounter( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + ALL_COUNTER_FIELDS, + { initialize: true } // set all counter fields to 0 if they don't exist + ); + coreUsageStats = result.attributes; + } catch (err) { + // do nothing + } + return coreUsageStats; + } + + public async incrementSavedObjectsImport({ + headers, + createNewCopies, + overwrite, + }: IncrementSavedObjectsImportOptions) { + const isKibanaRequest = getIsKibanaRequest(headers); + const counterFieldNames = [ + 'total', + `kibanaRequest.${isKibanaRequest ? 'yes' : 'no'}`, + `createNewCopiesEnabled.${createNewCopies ? 'yes' : 'no'}`, + `overwriteEnabled.${overwrite ? 'yes' : 'no'}`, + ]; + await this.updateUsageStats(counterFieldNames, IMPORT_STATS_PREFIX); + } + + public async incrementSavedObjectsResolveImportErrors({ + headers, + createNewCopies, + }: IncrementSavedObjectsResolveImportErrorsOptions) { + const isKibanaRequest = getIsKibanaRequest(headers); + const counterFieldNames = [ + 'total', + `kibanaRequest.${isKibanaRequest ? 'yes' : 'no'}`, + `createNewCopiesEnabled.${createNewCopies ? 'yes' : 'no'}`, + ]; + await this.updateUsageStats(counterFieldNames, RESOLVE_IMPORT_STATS_PREFIX); + } + + public async incrementSavedObjectsExport({ + headers, + types, + supportedTypes, + }: IncrementSavedObjectsExportOptions) { + const isKibanaRequest = getIsKibanaRequest(headers); + const isAllTypesSelected = !!types && supportedTypes.every((x) => types.includes(x)); + const counterFieldNames = [ + 'total', + `kibanaRequest.${isKibanaRequest ? 'yes' : 'no'}`, + `allTypesSelected.${isAllTypesSelected ? 'yes' : 'no'}`, + ]; + await this.updateUsageStats(counterFieldNames, EXPORT_STATS_PREFIX); + } + + private async updateUsageStats(counterFieldNames: string[], prefix: string) { + const options = { refresh: false }; + try { + const repository = await this.repositoryPromise; + await repository.incrementCounter( + CORE_USAGE_STATS_TYPE, + CORE_USAGE_STATS_ID, + counterFieldNames.map((x) => `${prefix}.${x}`), + options + ); + } catch (err) { + // do nothing + } + } +} + +function getIsKibanaRequest(headers?: Headers) { + // The presence of these three request headers gives us a good indication that this is a first-party request from the Kibana client. + // We can't be 100% certain, but this is a reasonable attempt. + return headers && headers['kbn-version'] && headers.origin && headers.referer; +} diff --git a/src/core/server/core_usage_data/index.ts b/src/core/server/core_usage_data/index.ts index b78c126657ef69..95d88f165a9768 100644 --- a/src/core/server/core_usage_data/index.ts +++ b/src/core/server/core_usage_data/index.ts @@ -16,16 +16,24 @@ * specific language governing permissions and limitations * under the License. */ -export { CoreUsageDataStart } from './types'; +export { CoreUsageDataSetup, CoreUsageDataStart } from './types'; export { CoreUsageDataService } from './core_usage_data_service'; +export { CoreUsageStatsClient } from './core_usage_stats_client'; // Because of #79265 we need to explicity import, then export these types for // scripts/telemetry_check.js to work as expected import { + CoreUsageStats, CoreUsageData, CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData, } from './types'; -export { CoreUsageData, CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData }; +export { + CoreUsageStats, + CoreUsageData, + CoreConfigUsageData, + CoreEnvironmentUsageData, + CoreServicesUsageData, +}; diff --git a/src/core/server/core_usage_data/types.ts b/src/core/server/core_usage_data/types.ts index 52d2eadcf13776..aa41d75e6f2d4f 100644 --- a/src/core/server/core_usage_data/types.ts +++ b/src/core/server/core_usage_data/types.ts @@ -17,11 +17,40 @@ * under the License. */ +import { CoreUsageStatsClient } from './core_usage_stats_client'; +import { ISavedObjectTypeRegistry, SavedObjectTypeRegistry } from '..'; + +/** + * @internal + * + * CoreUsageStats are collected over time while Kibana is running. This is related to CoreUsageData, which is a superset of this that also + * includes point-in-time configuration information. + * */ +export interface CoreUsageStats { + 'apiCalls.savedObjectsImport.total'?: number; + 'apiCalls.savedObjectsImport.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsImport.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.yes'?: number; + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.no'?: number; + 'apiCalls.savedObjectsImport.overwriteEnabled.yes'?: number; + 'apiCalls.savedObjectsImport.overwriteEnabled.no'?: number; + 'apiCalls.savedObjectsResolveImportErrors.total'?: number; + 'apiCalls.savedObjectsResolveImportErrors.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsResolveImportErrors.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes'?: number; + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no'?: number; + 'apiCalls.savedObjectsExport.total'?: number; + 'apiCalls.savedObjectsExport.kibanaRequest.yes'?: number; + 'apiCalls.savedObjectsExport.kibanaRequest.no'?: number; + 'apiCalls.savedObjectsExport.allTypesSelected.yes'?: number; + 'apiCalls.savedObjectsExport.allTypesSelected.no'?: number; +} + /** * Type describing Core's usage data payload * @internal */ -export interface CoreUsageData { +export interface CoreUsageData extends CoreUsageStats { config: CoreConfigUsageData; services: CoreServicesUsageData; environment: CoreEnvironmentUsageData; @@ -100,7 +129,7 @@ export interface CoreConfigUsageData { }; xsrf: { disableProtection: boolean; - whitelistConfigured: boolean; + allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; @@ -141,6 +170,14 @@ export interface CoreConfigUsageData { // }; } +/** @internal */ +export interface CoreUsageDataSetup { + registerType( + typeRegistry: ISavedObjectTypeRegistry & Pick + ): void; + getClient(): CoreUsageStatsClient; +} + /** * Internal API for getting Core's usage data payload. * diff --git a/src/core/server/elasticsearch/client/cluster_client.test.ts b/src/core/server/elasticsearch/client/cluster_client.test.ts index 429fea65704d87..1127619040fff3 100644 --- a/src/core/server/elasticsearch/client/cluster_client.test.ts +++ b/src/core/server/elasticsearch/client/cluster_client.test.ts @@ -419,7 +419,7 @@ describe('ClusterClient', () => { let closeScopedClient: () => void; internalClient.close.mockReturnValue( - new Promise((resolve) => { + new Promise((resolve) => { closeInternalClient = resolve; }).then(() => { expect(clusterClientClosed).toBe(false); @@ -427,7 +427,7 @@ describe('ClusterClient', () => { }) ); scopedClient.close.mockReturnValue( - new Promise((resolve) => { + new Promise((resolve) => { closeScopedClient = resolve; }).then(() => { expect(clusterClientClosed).toBe(false); diff --git a/src/core/server/elasticsearch/client/configure_client.test.ts b/src/core/server/elasticsearch/client/configure_client.test.ts index 614ec112e8f0b8..22cb7275b6a232 100644 --- a/src/core/server/elasticsearch/client/configure_client.test.ts +++ b/src/core/server/elasticsearch/client/configure_client.test.ts @@ -24,7 +24,7 @@ import { TransportRequestParams, RequestBody } from '@elastic/elasticsearch/lib/ import { parseClientOptionsMock, ClientMock } from './configure_client.test.mocks'; import { loggingSystemMock } from '../../logging/logging_system.mock'; -import EventEmitter from 'events'; +import { EventEmitter } from 'events'; import type { ElasticsearchClientConfig } from './client_config'; import { configureClient } from './configure_client'; diff --git a/src/core/server/elasticsearch/client/errors.ts b/src/core/server/elasticsearch/client/errors.ts index 31a27170e11559..ffbb21f530f2cd 100644 --- a/src/core/server/elasticsearch/client/errors.ts +++ b/src/core/server/elasticsearch/client/errors.ts @@ -23,10 +23,10 @@ export type UnauthorizedError = ResponseError & { statusCode: 401; }; -export function isResponseError(error: any): error is ResponseError { - return Boolean(error.body && error.statusCode && error.headers); +export function isResponseError(error: unknown): error is ResponseError { + return error instanceof ResponseError; } -export function isUnauthorizedError(error: any): error is UnauthorizedError { +export function isUnauthorizedError(error: unknown): error is UnauthorizedError { return isResponseError(error) && error.statusCode === 401; } diff --git a/src/core/server/elasticsearch/legacy/cluster_client.ts b/src/core/server/elasticsearch/legacy/cluster_client.ts index 00417e3bef4f45..e851b3a4db7116 100644 --- a/src/core/server/elasticsearch/legacy/cluster_client.ts +++ b/src/core/server/elasticsearch/legacy/cluster_client.ts @@ -140,6 +140,7 @@ export class LegacyClusterClient implements ILegacyClusterClient { * Calls specified endpoint with provided clientParams on behalf of the * Kibana internal user. * See {@link LegacyAPICaller}. + * @deprecated Use {@link IClusterClient.asInternalUser}. * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. diff --git a/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts b/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts index 65484f0927c9ed..e3f3d33d03766c 100644 --- a/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts +++ b/src/core/server/elasticsearch/legacy/scoped_cluster_client.ts @@ -56,6 +56,7 @@ export class LegacyScopedClusterClient implements ILegacyScopedClusterClient { * Calls specified `endpoint` with provided `clientParams` on behalf of the * Kibana internal user. * See {@link LegacyAPICaller}. + * @deprecated Use {@link IScopedClusterClient.asInternalUser}. * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. @@ -73,6 +74,7 @@ export class LegacyScopedClusterClient implements ILegacyScopedClusterClient { * Calls specified `endpoint` with provided `clientParams` on behalf of the * user initiated request to the Kibana server (via HTTP request headers). * See {@link LegacyAPICaller}. + * @deprecated Use {@link IScopedClusterClient.asCurrentUser}. * * @param endpoint - String descriptor of the endpoint e.g. `cluster.getSettings` or `ping`. * @param clientParams - A dictionary of parameters that will be passed directly to the Elasticsearch JS client. diff --git a/src/core/server/http/__snapshots__/http_config.test.ts.snap b/src/core/server/http/__snapshots__/http_config.test.ts.snap index 8e8891b8a73aa0..7020c5eee65012 100644 --- a/src/core/server/http/__snapshots__/http_config.test.ts.snap +++ b/src/core/server/http/__snapshots__/http_config.test.ts.snap @@ -24,6 +24,14 @@ Object { } `; +exports[`basePath throws if appends a slash 1`] = `"[basePath]: must start with a slash, don't end with one"`; + +exports[`basePath throws if is an empty string 1`] = `"[basePath]: must start with a slash, don't end with one"`; + +exports[`basePath throws if missing prepended slash 1`] = `"[basePath]: must start with a slash, don't end with one"`; + +exports[`basePath throws if not specified, but rewriteBasePath is set 1`] = `"cannot use [rewriteBasePath] when [basePath] is not specified"`; + exports[`has defaults for config 1`] = ` Object { "autoListen": true, @@ -83,20 +91,12 @@ Object { "truststore": Object {}, }, "xsrf": Object { + "allowlist": Array [], "disableProtection": false, - "whitelist": Array [], }, } `; -exports[`throws if basepath appends a slash 1`] = `"[basePath]: must start with a slash, don't end with one"`; - -exports[`throws if basepath is an empty string 1`] = `"[basePath]: must start with a slash, don't end with one"`; - -exports[`throws if basepath is missing prepended slash 1`] = `"[basePath]: must start with a slash, don't end with one"`; - -exports[`throws if basepath is not specified, but rewriteBasePath is set 1`] = `"cannot use [rewriteBasePath] when [basePath] is not specified"`; - exports[`throws if invalid hostname 1`] = `"[host]: value must be a valid hostname (see RFC 1123)."`; exports[`with TLS throws if TLS is enabled but \`redirectHttpFromPort\` is equal to \`port\` 1`] = `"Kibana does not accept http traffic to [port] when ssl is enabled (only https is allowed), so [ssl.redirectHttpFromPort] cannot be configured to the same value. Both are [1234]."`; diff --git a/src/core/server/http/base_path_proxy_server.ts b/src/core/server/http/base_path_proxy_server.ts index 42841377e73697..d461abe54ccbdd 100644 --- a/src/core/server/http/base_path_proxy_server.ts +++ b/src/core/server/http/base_path_proxy_server.ts @@ -52,6 +52,14 @@ export class BasePathProxyServer { return this.devConfig.basePathProxyTargetPort; } + public get host() { + return this.httpConfig.host; + } + + public get port() { + return this.httpConfig.port; + } + constructor( private readonly log: Logger, private readonly httpConfig: HttpConfig, @@ -92,7 +100,10 @@ export class BasePathProxyServer { await this.server.start(); this.log.info( - `basepath proxy server running at ${this.server.info.uri}${this.httpConfig.basePath}` + `basepath proxy server running at ${Url.format({ + host: this.server.info.uri, + pathname: this.httpConfig.basePath, + })}` ); } @@ -199,8 +210,13 @@ export class BasePathProxyServer { const isGet = request.method === 'get'; const isBasepathLike = oldBasePath.length === 3; + const newUrl = Url.format({ + pathname: `${this.httpConfig.basePath}/${kbnPath}`, + query: request.query, + }); + return isGet && isBasepathLike && shouldRedirectFromOldBasePath(kbnPath) - ? responseToolkit.redirect(`${this.httpConfig.basePath}/${kbnPath}`) + ? responseToolkit.redirect(newUrl) : responseToolkit.response('Not Found').code(404); }, method: '*', diff --git a/src/core/server/http/base_path_service.test.ts b/src/core/server/http/base_path_service.test.ts index 01790b7c77e064..62d395505866d6 100644 --- a/src/core/server/http/base_path_service.test.ts +++ b/src/core/server/http/base_path_service.test.ts @@ -34,6 +34,18 @@ describe('BasePath', () => { }); }); + describe('publicBaseUrl', () => { + it('defaults to an undefined', () => { + const basePath = new BasePath(); + expect(basePath.publicBaseUrl).toBe(undefined); + }); + + it('returns the publicBaseUrl', () => { + const basePath = new BasePath('/server', 'http://myhost.com/server'); + expect(basePath.publicBaseUrl).toBe('http://myhost.com/server'); + }); + }); + describe('#get()', () => { it('returns base path associated with an incoming Legacy.Request request', () => { const request = httpServerMock.createRawRequest(); diff --git a/src/core/server/http/base_path_service.ts b/src/core/server/http/base_path_service.ts index 059eb36f42dd5b..1269546d334cbb 100644 --- a/src/core/server/http/base_path_service.ts +++ b/src/core/server/http/base_path_service.ts @@ -34,10 +34,19 @@ export class BasePath { * See {@link BasePath.get} for getting the basePath value for a specific request */ public readonly serverBasePath: string; + /** + * The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the + * {@link BasePath.serverBasePath}. + * + * @remarks + * Should be used for generating external URL links back to this Kibana instance. + */ + public readonly publicBaseUrl?: string; /** @internal */ - constructor(serverBasePath: string = '') { + constructor(serverBasePath: string = '', publicBaseUrl?: string) { this.serverBasePath = serverBasePath; + this.publicBaseUrl = publicBaseUrl; } /** diff --git a/src/core/server/http/cookie_session_storage.test.ts b/src/core/server/http/cookie_session_storage.test.ts index b7ade0cbde0fcc..7ac7e4b9712d07 100644 --- a/src/core/server/http/cookie_session_storage.test.ts +++ b/src/core/server/http/cookie_session_storage.test.ts @@ -60,7 +60,7 @@ configService.atPath.mockReturnValue( compression: { enabled: true }, xsrf: { disableProtection: true, - whitelist: [], + allowlist: [], }, customResponseHeaders: {}, requestId: { diff --git a/src/core/server/http/http_config.test.ts b/src/core/server/http/http_config.test.ts index 58e6699582e138..6538c1ae973b72 100644 --- a/src/core/server/http/http_config.test.ts +++ b/src/core/server/http/http_config.test.ts @@ -119,36 +119,104 @@ test('can specify max payload as string', () => { expect(configValue.maxPayload.getValueInBytes()).toBe(2 * 1024 * 1024); }); -test('throws if basepath is missing prepended slash', () => { - const httpSchema = config.schema; - const obj = { - basePath: 'foo', - }; - expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); -}); +describe('basePath', () => { + test('throws if missing prepended slash', () => { + const httpSchema = config.schema; + const obj = { + basePath: 'foo', + }; + expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); + }); -test('throws if basepath appends a slash', () => { - const httpSchema = config.schema; - const obj = { - basePath: '/foo/', - }; - expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); -}); + test('throws if appends a slash', () => { + const httpSchema = config.schema; + const obj = { + basePath: '/foo/', + }; + expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); + }); -test('throws if basepath is an empty string', () => { - const httpSchema = config.schema; - const obj = { - basePath: '', - }; - expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); + test('throws if is an empty string', () => { + const httpSchema = config.schema; + const obj = { + basePath: '', + }; + expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); + }); + + test('throws if not specified, but rewriteBasePath is set', () => { + const httpSchema = config.schema; + const obj = { + rewriteBasePath: true, + }; + expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); + }); }); -test('throws if basepath is not specified, but rewriteBasePath is set', () => { - const httpSchema = config.schema; - const obj = { - rewriteBasePath: true, - }; - expect(() => httpSchema.validate(obj)).toThrowErrorMatchingSnapshot(); +describe('publicBaseUrl', () => { + test('throws if invalid HTTP(S) URL', () => { + const httpSchema = config.schema; + expect(() => + httpSchema.validate({ publicBaseUrl: 'myhost.com' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl]: expected URI with scheme [http|https]."` + ); + expect(() => + httpSchema.validate({ publicBaseUrl: '//myhost.com' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl]: expected URI with scheme [http|https]."` + ); + expect(() => + httpSchema.validate({ publicBaseUrl: 'ftp://myhost.com' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl]: expected URI with scheme [http|https]."` + ); + }); + + test('throws if includes hash, query, or auth', () => { + const httpSchema = config.schema; + expect(() => + httpSchema.validate({ publicBaseUrl: 'http://myhost.com/?a=b' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl] may only contain a protocol, host, port, and pathname"` + ); + expect(() => + httpSchema.validate({ publicBaseUrl: 'http://myhost.com/#a' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl] may only contain a protocol, host, port, and pathname"` + ); + expect(() => + httpSchema.validate({ publicBaseUrl: 'http://user:pass@myhost.com' }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl] may only contain a protocol, host, port, and pathname"` + ); + }); + + test('throws if basePath and publicBaseUrl are specified, but do not match', () => { + const httpSchema = config.schema; + expect(() => + httpSchema.validate({ + basePath: '/foo', + publicBaseUrl: 'https://myhost.com/', + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[publicBaseUrl] must contain the [basePath]: / !== /foo"` + ); + }); + + test('does not throw if valid URL and matches basePath', () => { + const httpSchema = config.schema; + expect(() => httpSchema.validate({ publicBaseUrl: 'http://myhost.com' })).not.toThrow(); + expect(() => httpSchema.validate({ publicBaseUrl: 'http://myhost.com/' })).not.toThrow(); + expect(() => httpSchema.validate({ publicBaseUrl: 'https://myhost.com' })).not.toThrow(); + expect(() => + httpSchema.validate({ publicBaseUrl: 'https://myhost.com/foo', basePath: '/foo' }) + ).not.toThrow(); + expect(() => httpSchema.validate({ publicBaseUrl: 'http://myhost.com:8080' })).not.toThrow(); + expect(() => + httpSchema.validate({ publicBaseUrl: 'http://myhost.com:4/foo', basePath: '/foo' }) + ).not.toThrow(); + }); }); test('accepts only valid uuids for server.uuid', () => { @@ -165,15 +233,15 @@ test('uses os.hostname() as default for server.name', () => { expect(validated.name).toEqual('kibana-hostname'); }); -test('throws if xsrf.whitelist element does not start with a slash', () => { +test('throws if xsrf.allowlist element does not start with a slash', () => { const httpSchema = config.schema; const obj = { xsrf: { - whitelist: ['/valid-path', 'invalid-path'], + allowlist: ['/valid-path', 'invalid-path'], }, }; expect(() => httpSchema.validate(obj)).toThrowErrorMatchingInlineSnapshot( - `"[xsrf.whitelist.1]: must start with a slash"` + `"[xsrf.allowlist.1]: must start with a slash"` ); }); diff --git a/src/core/server/http/http_config.ts b/src/core/server/http/http_config.ts index 7d41b4ea9e915b..9a425fa6455037 100644 --- a/src/core/server/http/http_config.ts +++ b/src/core/server/http/http_config.ts @@ -19,6 +19,7 @@ import { ByteSizeValue, schema, TypeOf } from '@kbn/config-schema'; import { hostname } from 'os'; +import url from 'url'; import { CspConfigType, CspConfig, ICspConfig } from '../csp'; import { SslConfig, sslSchema } from './ssl_config'; @@ -32,11 +33,12 @@ const match = (regex: RegExp, errorMsg: string) => (str: string) => // before update to make sure it's in sync with validation rules in Legacy // https://github.com/elastic/kibana/blob/master/src/legacy/server/config/schema.js export const config = { - path: 'server', + path: 'server' as const, schema: schema.object( { name: schema.string({ defaultValue: () => hostname() }), autoListen: schema.boolean({ defaultValue: true }), + publicBaseUrl: schema.maybe(schema.uri({ scheme: ['http', 'https'] })), basePath: schema.maybe( schema.string({ validate: match(validBasePathRegex, "must start with a slash, don't end with one"), @@ -82,7 +84,7 @@ export const config = { ), xsrf: schema.object({ disableProtection: schema.boolean({ defaultValue: false }), - whitelist: schema.arrayOf( + allowlist: schema.arrayOf( schema.string({ validate: match(/^\//, 'must start with a slash') }), { defaultValue: [] } ), @@ -106,6 +108,17 @@ export const config = { if (!rawConfig.basePath && rawConfig.rewriteBasePath) { return 'cannot use [rewriteBasePath] when [basePath] is not specified'; } + + if (rawConfig.publicBaseUrl) { + const parsedUrl = url.parse(rawConfig.publicBaseUrl); + if (parsedUrl.query || parsedUrl.hash || parsedUrl.auth) { + return `[publicBaseUrl] may only contain a protocol, host, port, and pathname`; + } + if (parsedUrl.path !== (rawConfig.basePath ?? '/')) { + return `[publicBaseUrl] must contain the [basePath]: ${parsedUrl.path} !== ${rawConfig.basePath}`; + } + } + if (!rawConfig.compression.enabled && rawConfig.compression.referrerWhitelist) { return 'cannot use [compression.referrerWhitelist] when [compression.enabled] is set to false'; } @@ -138,11 +151,12 @@ export class HttpConfig { public customResponseHeaders: Record; public maxPayload: ByteSizeValue; public basePath?: string; + public publicBaseUrl?: string; public rewriteBasePath: boolean; public ssl: SslConfig; public compression: { enabled: boolean; referrerWhitelist?: string[] }; public csp: ICspConfig; - public xsrf: { disableProtection: boolean; whitelist: string[] }; + public xsrf: { disableProtection: boolean; allowlist: string[] }; public requestId: { allowFromAnyIp: boolean; ipAllowlist: string[] }; /** @@ -165,6 +179,7 @@ export class HttpConfig { this.maxPayload = rawHttpConfig.maxPayload; this.name = rawHttpConfig.name; this.basePath = rawHttpConfig.basePath; + this.publicBaseUrl = rawHttpConfig.publicBaseUrl; this.keepaliveTimeout = rawHttpConfig.keepaliveTimeout; this.socketTimeout = rawHttpConfig.socketTimeout; this.rewriteBasePath = rawHttpConfig.rewriteBasePath; diff --git a/src/core/server/http/http_server.ts b/src/core/server/http/http_server.ts index 892396b8e2ad79..43f5264ff22e31 100644 --- a/src/core/server/http/http_server.ts +++ b/src/core/server/http/http_server.ts @@ -119,7 +119,7 @@ export class HttpServer { await this.server.register([HapiStaticFiles]); this.config = config; - const basePathService = new BasePath(config.basePath); + const basePathService = new BasePath(config.basePath, config.publicBaseUrl); this.setupBasePathRewrite(config, basePathService); this.setupConditionalCompression(config); this.setupRequestStateAssignment(config); diff --git a/src/core/server/http/http_service.mock.ts b/src/core/server/http/http_service.mock.ts index 4fc972c9679bbf..552f41d9124177 100644 --- a/src/core/server/http/http_service.mock.ts +++ b/src/core/server/http/http_service.mock.ts @@ -60,8 +60,12 @@ export type InternalHttpServiceStartMock = jest.Mocked basePath: BasePathMocked; }; -const createBasePathMock = (serverBasePath = '/mock-server-basepath'): BasePathMocked => ({ +const createBasePathMock = ( + serverBasePath = '/mock-server-basepath', + publicBaseUrl = 'http://myhost.com/mock-server-basepath' +): BasePathMocked => ({ serverBasePath, + publicBaseUrl, get: jest.fn().mockReturnValue(serverBasePath), set: jest.fn(), prepend: jest.fn(), diff --git a/src/core/server/http/http_service.test.ts b/src/core/server/http/http_service.test.ts index 11cea88fa0dd2f..3d553224612888 100644 --- a/src/core/server/http/http_service.test.ts +++ b/src/core/server/http/http_service.test.ts @@ -264,7 +264,7 @@ test('does not start http server if process is dev cluster master', async () => const service = new HttpService({ coreId, configService, - env: Env.createDefault(REPO_ROOT, getEnvOptions({ isDevClusterMaster: true })), + env: Env.createDefault(REPO_ROOT, getEnvOptions({ isDevCliParent: true })), logger, }); diff --git a/src/core/server/http/http_service.ts b/src/core/server/http/http_service.ts index 0127a6493e7fd1..171a20160d26d4 100644 --- a/src/core/server/http/http_service.ts +++ b/src/core/server/http/http_service.ts @@ -158,7 +158,7 @@ export class HttpService * @internal * */ private shouldListen(config: HttpConfig) { - return !this.coreContext.env.isDevClusterMaster && config.autoListen; + return !this.coreContext.env.isDevCliParent && config.autoListen; } public async stop() { diff --git a/src/core/server/http/integration_tests/lifecycle_handlers.test.ts b/src/core/server/http/integration_tests/lifecycle_handlers.test.ts index a964130550bf55..7df35b04c66cf1 100644 --- a/src/core/server/http/integration_tests/lifecycle_handlers.test.ts +++ b/src/core/server/http/integration_tests/lifecycle_handlers.test.ts @@ -36,7 +36,7 @@ const actualVersion = pkg.version; const versionHeader = 'kbn-version'; const xsrfHeader = 'kbn-xsrf'; const nameHeader = 'kbn-name'; -const whitelistedTestPath = '/xsrf/test/route/whitelisted'; +const allowlistedTestPath = '/xsrf/test/route/whitelisted'; const xsrfDisabledTestPath = '/xsrf/test/route/disabled'; const kibanaName = 'my-kibana-name'; const setupDeps = { @@ -63,7 +63,7 @@ describe('core lifecycle handlers', () => { customResponseHeaders: { 'some-header': 'some-value', }, - xsrf: { disableProtection: false, whitelist: [whitelistedTestPath] }, + xsrf: { disableProtection: false, allowlist: [allowlistedTestPath] }, requestId: { allowFromAnyIp: true, ipAllowlist: [], @@ -179,7 +179,7 @@ describe('core lifecycle handlers', () => { } ); ((router as any)[method.toLowerCase()] as RouteRegistrar)( - { path: whitelistedTestPath, validate: false }, + { path: allowlistedTestPath, validate: false }, (context, req, res) => { return res.ok({ body: 'ok' }); } @@ -235,7 +235,7 @@ describe('core lifecycle handlers', () => { }); it('accepts whitelisted requests without either an xsrf or version header', async () => { - await getSupertest(method.toLowerCase(), whitelistedTestPath).expect(200, 'ok'); + await getSupertest(method.toLowerCase(), allowlistedTestPath).expect(200, 'ok'); }); it('accepts requests on a route with disabled xsrf protection', async () => { diff --git a/src/core/server/http/lifecycle_handlers.test.ts b/src/core/server/http/lifecycle_handlers.test.ts index fdcf2a173b906a..8ad823b3a69441 100644 --- a/src/core/server/http/lifecycle_handlers.test.ts +++ b/src/core/server/http/lifecycle_handlers.test.ts @@ -58,7 +58,7 @@ describe('xsrf post-auth handler', () => { describe('non destructive methods', () => { it('accepts requests without version or xsrf header', () => { - const config = createConfig({ xsrf: { whitelist: [], disableProtection: false } }); + const config = createConfig({ xsrf: { allowlist: [], disableProtection: false } }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'get', headers: {} }); @@ -74,7 +74,7 @@ describe('xsrf post-auth handler', () => { describe('destructive methods', () => { it('accepts requests with xsrf header', () => { - const config = createConfig({ xsrf: { whitelist: [], disableProtection: false } }); + const config = createConfig({ xsrf: { allowlist: [], disableProtection: false } }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'post', headers: { 'kbn-xsrf': 'xsrf' } }); @@ -88,7 +88,7 @@ describe('xsrf post-auth handler', () => { }); it('accepts requests with version header', () => { - const config = createConfig({ xsrf: { whitelist: [], disableProtection: false } }); + const config = createConfig({ xsrf: { allowlist: [], disableProtection: false } }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'post', headers: { 'kbn-version': 'some-version' } }); @@ -102,7 +102,7 @@ describe('xsrf post-auth handler', () => { }); it('returns a bad request if called without xsrf or version header', () => { - const config = createConfig({ xsrf: { whitelist: [], disableProtection: false } }); + const config = createConfig({ xsrf: { allowlist: [], disableProtection: false } }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'post' }); @@ -121,7 +121,7 @@ describe('xsrf post-auth handler', () => { }); it('accepts requests if protection is disabled', () => { - const config = createConfig({ xsrf: { whitelist: [], disableProtection: true } }); + const config = createConfig({ xsrf: { allowlist: [], disableProtection: true } }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'post', headers: {} }); @@ -134,9 +134,9 @@ describe('xsrf post-auth handler', () => { expect(result).toEqual('next'); }); - it('accepts requests if path is whitelisted', () => { + it('accepts requests if path is allowlisted', () => { const config = createConfig({ - xsrf: { whitelist: ['/some-path'], disableProtection: false }, + xsrf: { allowlist: ['/some-path'], disableProtection: false }, }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ method: 'post', headers: {}, path: '/some-path' }); @@ -152,7 +152,7 @@ describe('xsrf post-auth handler', () => { it('accepts requests if xsrf protection on a route is disabled', () => { const config = createConfig({ - xsrf: { whitelist: [], disableProtection: false }, + xsrf: { allowlist: [], disableProtection: false }, }); const handler = createXsrfPostAuthHandler(config); const request = forgeRequest({ diff --git a/src/core/server/http/lifecycle_handlers.ts b/src/core/server/http/lifecycle_handlers.ts index 7ef7e863260391..4060284b5b56ae 100644 --- a/src/core/server/http/lifecycle_handlers.ts +++ b/src/core/server/http/lifecycle_handlers.ts @@ -29,12 +29,12 @@ const XSRF_HEADER = 'kbn-xsrf'; const KIBANA_NAME_HEADER = 'kbn-name'; export const createXsrfPostAuthHandler = (config: HttpConfig): OnPostAuthHandler => { - const { whitelist, disableProtection } = config.xsrf; + const { allowlist, disableProtection } = config.xsrf; return (request, response, toolkit) => { if ( disableProtection || - whitelist.includes(request.route.path) || + allowlist.includes(request.route.path) || request.route.options.xsrfRequired === false ) { return toolkit.next(); diff --git a/src/core/server/http/test_utils.ts b/src/core/server/http/test_utils.ts index 412396644648e1..cdcbe513e1224a 100644 --- a/src/core/server/http/test_utils.ts +++ b/src/core/server/http/test_utils.ts @@ -43,7 +43,7 @@ configService.atPath.mockReturnValue( compression: { enabled: true }, xsrf: { disableProtection: true, - whitelist: [], + allowlist: [], }, customResponseHeaders: {}, requestId: { diff --git a/src/core/server/http/types.ts b/src/core/server/http/types.ts index 4345783e46e110..afd7b0174d1588 100644 --- a/src/core/server/http/types.ts +++ b/src/core/server/http/types.ts @@ -316,7 +316,12 @@ export interface InternalHttpServiceStart extends HttpServiceStart { isListening: () => boolean; } -/** @public */ +/** + * Information about what hostname, port, and protocol the server process is + * running on. Note that this may not match the URL that end-users access + * Kibana at. For the public URL, see {@link BasePath.publicBaseUrl}. + * @public + */ export interface HttpServerInfo { /** The name of the Kibana server */ name: string; diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 7b19c3a6867579..6abe067f24c8c7 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -69,13 +69,20 @@ import { I18nServiceSetup } from './i18n'; // Because of #79265 we need to explicity import, then export these types for // scripts/telemetry_check.js to work as expected import { + CoreUsageStats, CoreUsageData, CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData, } from './core_usage_data'; -export { CoreUsageData, CoreConfigUsageData, CoreEnvironmentUsageData, CoreServicesUsageData }; +export { + CoreUsageStats, + CoreUsageData, + CoreConfigUsageData, + CoreEnvironmentUsageData, + CoreServicesUsageData, +}; export { bootstrap } from './bootstrap'; export { Capabilities, CapabilitiesProvider, CapabilitiesSwitcher } from './capabilities'; @@ -295,6 +302,7 @@ export { SavedObjectsRepository, SavedObjectsDeleteByNamespaceOptions, SavedObjectsIncrementCounterOptions, + SavedObjectsIncrementCounterField, SavedObjectsComplexFieldMapping, SavedObjectsCoreFieldMapping, SavedObjectsFieldMapping, @@ -394,6 +402,9 @@ export interface RequestHandlerContext { elasticsearch: { client: IScopedClusterClient; legacy: { + /* + * @deprecated Use {@link IScopedClusterClient}. + */ client: ILegacyScopedClusterClient; }; }; diff --git a/src/core/server/kibana_config.test.ts b/src/core/server/kibana_config.test.ts new file mode 100644 index 00000000000000..804c02ae99e4b0 --- /dev/null +++ b/src/core/server/kibana_config.test.ts @@ -0,0 +1,66 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { config } from './kibana_config'; +import { applyDeprecations, configDeprecationFactory } from '@kbn/config'; + +const CONFIG_PATH = 'kibana'; + +const applyKibanaDeprecations = (settings: Record = {}) => { + const deprecations = config.deprecations!(configDeprecationFactory); + const deprecationMessages: string[] = []; + const _config: any = {}; + _config[CONFIG_PATH] = settings; + const migrated = applyDeprecations( + _config, + deprecations.map((deprecation) => ({ + deprecation, + path: CONFIG_PATH, + })), + (msg) => deprecationMessages.push(msg) + ); + return { + messages: deprecationMessages, + migrated, + }; +}; + +it('set correct defaults ', () => { + const configValue = config.schema.validate({}); + expect(configValue).toMatchInlineSnapshot(` + Object { + "autocompleteTerminateAfter": "PT1M40S", + "autocompleteTimeout": "PT1S", + "enabled": true, + "index": ".kibana", + } + `); +}); + +describe('deprecations', () => { + ['.foo', '.kibana'].forEach((index) => { + it('logs a warning if index is set', () => { + const { messages } = applyKibanaDeprecations({ index }); + expect(messages).toMatchInlineSnapshot(` + Array [ + "\\"kibana.index\\" is deprecated. Multitenancy by changing \\"kibana.index\\" will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy for more details", + ] + `); + }); + }); +}); diff --git a/src/core/server/kibana_config.ts b/src/core/server/kibana_config.ts index 17f77a6e9328f3..ae6897b6a6ad36 100644 --- a/src/core/server/kibana_config.ts +++ b/src/core/server/kibana_config.ts @@ -18,9 +18,22 @@ */ import { schema, TypeOf } from '@kbn/config-schema'; +import { ConfigDeprecationProvider } from '@kbn/config'; export type KibanaConfigType = TypeOf; +const deprecations: ConfigDeprecationProvider = () => [ + (settings, fromPath, log) => { + const kibana = settings[fromPath]; + if (kibana?.index) { + log( + `"kibana.index" is deprecated. Multitenancy by changing "kibana.index" will not be supported starting in 8.0. See https://ela.st/kbn-remove-legacy-multitenancy for more details` + ); + } + return settings; + }, +]; + export const config = { path: 'kibana', schema: schema.object({ @@ -29,4 +42,5 @@ export const config = { autocompleteTerminateAfter: schema.duration({ defaultValue: 100000 }), autocompleteTimeout: schema.duration({ defaultValue: 1000 }), }), + deprecations, }; diff --git a/src/core/server/legacy/cli.js b/src/core/server/legacy/cli.js deleted file mode 100644 index 28e14d28eecd37..00000000000000 --- a/src/core/server/legacy/cli.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { startRepl } from '../../../cli/repl'; diff --git a/src/core/server/legacy/cli_dev_mode.js b/src/core/server/legacy/cli_dev_mode.js new file mode 100644 index 00000000000000..05a13bc55f97eb --- /dev/null +++ b/src/core/server/legacy/cli_dev_mode.js @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { CliDevMode } from '../../../dev/cli_dev_mode'; diff --git a/src/core/server/legacy/cluster_manager.js b/src/core/server/legacy/cluster_manager.js deleted file mode 100644 index 3c51fd6869a093..00000000000000 --- a/src/core/server/legacy/cluster_manager.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { ClusterManager } from '../../../cli/cluster/cluster_manager'; diff --git a/src/core/server/legacy/legacy_service.test.ts b/src/core/server/legacy/legacy_service.test.ts index 5cc6fcb1335072..98532d720c3100 100644 --- a/src/core/server/legacy/legacy_service.test.ts +++ b/src/core/server/legacy/legacy_service.test.ts @@ -18,13 +18,13 @@ */ jest.mock('../../../legacy/server/kbn_server'); -jest.mock('./cluster_manager'); +jest.mock('./cli_dev_mode'); import { BehaviorSubject, throwError } from 'rxjs'; import { REPO_ROOT } from '@kbn/dev-utils'; // @ts-expect-error js file to remove TS dependency on cli -import { ClusterManager as MockClusterManager } from './cluster_manager'; +import { CliDevMode as MockCliDevMode } from './cli_dev_mode'; import KbnServer from '../../../legacy/server/kbn_server'; import { Config, Env, ObjectToConfigAdapter } from '../config'; import { BasePathProxyServer } from '../http'; @@ -239,7 +239,7 @@ describe('once LegacyService is set up with connection info', () => { ); expect(MockKbnServer).not.toHaveBeenCalled(); - expect(MockClusterManager).not.toHaveBeenCalled(); + expect(MockCliDevMode).not.toHaveBeenCalled(); }); test('reconfigures logging configuration if new config is received.', async () => { @@ -355,14 +355,14 @@ describe('once LegacyService is set up in `devClusterMaster` mode', () => { }); }); - test('creates ClusterManager without base path proxy.', async () => { + test('creates CliDevMode without base path proxy.', async () => { const devClusterLegacyService = new LegacyService({ coreId, env: Env.createDefault( REPO_ROOT, getEnvOptions({ cliArgs: { silent: true, basePath: false }, - isDevClusterMaster: true, + isDevCliParent: true, }) ), logger, @@ -373,8 +373,8 @@ describe('once LegacyService is set up in `devClusterMaster` mode', () => { await devClusterLegacyService.setup(setupDeps); await devClusterLegacyService.start(startDeps); - expect(MockClusterManager).toHaveBeenCalledTimes(1); - expect(MockClusterManager).toHaveBeenCalledWith( + expect(MockCliDevMode.fromCoreServices).toHaveBeenCalledTimes(1); + expect(MockCliDevMode.fromCoreServices).toHaveBeenCalledWith( expect.objectContaining({ silent: true, basePath: false }), expect.objectContaining({ get: expect.any(Function), @@ -384,14 +384,14 @@ describe('once LegacyService is set up in `devClusterMaster` mode', () => { ); }); - test('creates ClusterManager with base path proxy.', async () => { + test('creates CliDevMode with base path proxy.', async () => { const devClusterLegacyService = new LegacyService({ coreId, env: Env.createDefault( REPO_ROOT, getEnvOptions({ cliArgs: { quiet: true, basePath: true }, - isDevClusterMaster: true, + isDevCliParent: true, }) ), logger, @@ -402,8 +402,8 @@ describe('once LegacyService is set up in `devClusterMaster` mode', () => { await devClusterLegacyService.setup(setupDeps); await devClusterLegacyService.start(startDeps); - expect(MockClusterManager).toHaveBeenCalledTimes(1); - expect(MockClusterManager).toHaveBeenCalledWith( + expect(MockCliDevMode.fromCoreServices).toHaveBeenCalledTimes(1); + expect(MockCliDevMode.fromCoreServices).toHaveBeenCalledWith( expect.objectContaining({ quiet: true, basePath: true }), expect.objectContaining({ get: expect.any(Function), diff --git a/src/core/server/legacy/legacy_service.ts b/src/core/server/legacy/legacy_service.ts index 3111c8daf79815..6da5d548698013 100644 --- a/src/core/server/legacy/legacy_service.ts +++ b/src/core/server/legacy/legacy_service.ts @@ -144,8 +144,8 @@ export class LegacyService implements CoreService { this.log.debug('starting legacy service'); // Receive initial config and create kbnServer/ClusterManager. - if (this.coreContext.env.isDevClusterMaster) { - await this.createClusterManager(this.legacyRawConfig!); + if (this.coreContext.env.isDevCliParent) { + await this.setupCliDevMode(this.legacyRawConfig!); } else { this.kbnServer = await this.createKbnServer( this.settings!, @@ -170,7 +170,7 @@ export class LegacyService implements CoreService { } } - private async createClusterManager(config: LegacyConfig) { + private async setupCliDevMode(config: LegacyConfig) { const basePathProxy$ = this.coreContext.env.cliArgs.basePath ? combineLatest([this.devConfig$, this.httpConfig$]).pipe( first(), @@ -182,8 +182,8 @@ export class LegacyService implements CoreService { : EMPTY; // eslint-disable-next-line @typescript-eslint/no-var-requires - const { ClusterManager } = require('./cluster_manager'); - return new ClusterManager( + const { CliDevMode } = require('./cli_dev_mode'); + CliDevMode.fromCoreServices( this.coreContext.env.cliArgs, config, await basePathProxy$.toPromise() @@ -310,14 +310,6 @@ export class LegacyService implements CoreService { logger: this.coreContext.logger, }); - // The kbnWorkerType check is necessary to prevent the repl - // from being started multiple times in different processes. - // We only want one REPL. - if (this.coreContext.env.cliArgs.repl && process.env.kbnWorkerType === 'server') { - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('./cli').startRepl(kbnServer); - } - const { autoListen } = await this.httpConfig$.pipe(first()).toPromise(); if (autoListen) { diff --git a/src/core/server/logging/appenders/file/file_appender.ts b/src/core/server/logging/appenders/file/file_appender.ts index c86ea4972324cf..2d9ac121480687 100644 --- a/src/core/server/logging/appenders/file/file_appender.ts +++ b/src/core/server/logging/appenders/file/file_appender.ts @@ -71,7 +71,7 @@ export class FileAppender implements DisposableAppender { * Disposes `FileAppender`. Waits for the underlying file stream to be completely flushed and closed. */ public async dispose() { - await new Promise((resolve) => { + await new Promise((resolve) => { if (this.outputStream === undefined) { return resolve(); } diff --git a/src/core/server/metrics/collectors/process.test.ts b/src/core/server/metrics/collectors/process.test.ts index a437d799371f11..0ce1b9e8e350e6 100644 --- a/src/core/server/metrics/collectors/process.test.ts +++ b/src/core/server/metrics/collectors/process.test.ts @@ -62,6 +62,7 @@ describe('ProcessMetricsCollector', () => { heapTotal, heapUsed, external: 0, + arrayBuffers: 0, })); jest.spyOn(v8, 'getHeapStatistics').mockImplementation( diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 02b82c17ed4fc0..601e0038b0cf0c 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -102,7 +102,7 @@ const createPlugin = ( }); }; -async function testSetup(options: { isDevClusterMaster?: boolean } = {}) { +async function testSetup(options: { isDevCliParent?: boolean } = {}) { mockPackage.raw = { branch: 'feature-v1', version: 'v1', @@ -116,7 +116,7 @@ async function testSetup(options: { isDevClusterMaster?: boolean } = {}) { coreId = Symbol('core'); env = Env.createDefault(REPO_ROOT, { ...getEnvOptions(), - isDevClusterMaster: options.isDevClusterMaster ?? false, + isDevCliParent: options.isDevCliParent ?? false, }); config$ = new BehaviorSubject>({ plugins: { initialize: true } }); @@ -638,10 +638,10 @@ describe('PluginsService', () => { }); }); -describe('PluginService when isDevClusterMaster is true', () => { +describe('PluginService when isDevCliParent is true', () => { beforeEach(async () => { await testSetup({ - isDevClusterMaster: true, + isDevCliParent: true, }); }); diff --git a/src/core/server/plugins/plugins_service.ts b/src/core/server/plugins/plugins_service.ts index 5967e6d5358dec..e1622b1e192311 100644 --- a/src/core/server/plugins/plugins_service.ts +++ b/src/core/server/plugins/plugins_service.ts @@ -90,7 +90,7 @@ export class PluginsService implements CoreService(); - const initialize = config.initialize && !this.coreContext.env.isDevClusterMaster; + const initialize = config.initialize && !this.coreContext.env.isDevCliParent; if (initialize) { contracts = await this.pluginsSystem.setupPlugins(deps); this.registerPluginStaticDirs(deps); diff --git a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap index 07ca59a48c6b05..a3f6b27f135bec 100644 --- a/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap +++ b/src/core/server/rendering/__snapshots__/rendering_service.test.ts.snap @@ -36,6 +36,7 @@ Object { "user": Object {}, }, }, + "publicBaseUrl": "http://myhost.com/mock-server-basepath", "serverBasePath": "/mock-server-basepath", "uiPlugins": Array [], "vars": Object {}, @@ -79,6 +80,7 @@ Object { "user": Object {}, }, }, + "publicBaseUrl": "http://myhost.com/mock-server-basepath", "serverBasePath": "/mock-server-basepath", "uiPlugins": Array [], "vars": Object {}, @@ -126,6 +128,7 @@ Object { }, }, }, + "publicBaseUrl": "http://myhost.com/mock-server-basepath", "serverBasePath": "/mock-server-basepath", "uiPlugins": Array [], "vars": Object {}, @@ -169,6 +172,7 @@ Object { "user": Object {}, }, }, + "publicBaseUrl": "http://myhost.com/mock-server-basepath", "serverBasePath": "/mock-server-basepath", "uiPlugins": Array [], "vars": Object {}, @@ -212,6 +216,7 @@ Object { "user": Object {}, }, }, + "publicBaseUrl": "http://myhost.com/mock-server-basepath", "serverBasePath": "/mock-server-basepath", "uiPlugins": Array [], "vars": Object {}, diff --git a/src/core/server/rendering/rendering_service.tsx b/src/core/server/rendering/rendering_service.tsx index 738787f9409055..4bbb2bd4811cbf 100644 --- a/src/core/server/rendering/rendering_service.tsx +++ b/src/core/server/rendering/rendering_service.tsx @@ -52,7 +52,7 @@ export class RenderingService { packageInfo: this.coreContext.env.packageInfo, }; const basePath = http.basePath.get(request); - const serverBasePath = http.basePath.serverBasePath; + const { serverBasePath, publicBaseUrl } = http.basePath; const settings = { defaults: uiSettings.getRegistered(), user: includeUserSettings ? await uiSettings.getUserProvided() : {}, @@ -72,6 +72,7 @@ export class RenderingService { branch: env.packageInfo.branch, basePath, serverBasePath, + publicBaseUrl, env, anonymousStatusPage: status.isStatusPageAnonymous(), i18n: { diff --git a/src/core/server/rendering/types.ts b/src/core/server/rendering/types.ts index 75bbac1a243e9d..1954fc1c79e559 100644 --- a/src/core/server/rendering/types.ts +++ b/src/core/server/rendering/types.ts @@ -40,6 +40,7 @@ export interface RenderingMetadata { branch: string; basePath: string; serverBasePath: string; + publicBaseUrl?: string; env: { mode: EnvironmentMode; packageInfo: PackageInfo; diff --git a/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts b/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts index c26467f4b931ca..8f397c01ffa719 100644 --- a/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts +++ b/src/core/server/saved_objects/export/get_sorted_objects_for_export.test.ts @@ -20,7 +20,7 @@ import { exportSavedObjectsToStream } from './get_sorted_objects_for_export'; import { savedObjectsClientMock } from '../service/saved_objects_client.mock'; import { Readable } from 'stream'; -import { createPromiseFromStreams, createConcatStream } from '../../utils/streams'; +import { createPromiseFromStreams, createConcatStream } from '@kbn/utils'; async function readStreamToCompletion(stream: Readable) { return createPromiseFromStreams([stream, createConcatStream([])]); diff --git a/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts b/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts index 7965b12eb874e7..84b14d0a5f02cd 100644 --- a/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts +++ b/src/core/server/saved_objects/export/get_sorted_objects_for_export.ts @@ -18,7 +18,7 @@ */ import Boom from '@hapi/boom'; -import { createListStream } from '../../utils/streams'; +import { createListStream } from '@kbn/utils'; import { SavedObjectsClientContract, SavedObject, diff --git a/src/core/server/saved_objects/import/collect_saved_objects.ts b/src/core/server/saved_objects/import/collect_saved_objects.ts index 8e84f864cf4490..8f09e69f6c7278 100644 --- a/src/core/server/saved_objects/import/collect_saved_objects.ts +++ b/src/core/server/saved_objects/import/collect_saved_objects.ts @@ -23,7 +23,8 @@ import { createFilterStream, createMapStream, createPromiseFromStreams, -} from '../../utils/streams'; +} from '@kbn/utils'; + import { SavedObject } from '../types'; import { createLimitStream } from './create_limit_stream'; import { SavedObjectsImportError } from './types'; diff --git a/src/core/server/saved_objects/import/create_limit_stream.test.ts b/src/core/server/saved_objects/import/create_limit_stream.test.ts index a7e689710a564f..0070a52fdd1c89 100644 --- a/src/core/server/saved_objects/import/create_limit_stream.test.ts +++ b/src/core/server/saved_objects/import/create_limit_stream.test.ts @@ -17,11 +17,7 @@ * under the License. */ -import { - createConcatStream, - createListStream, - createPromiseFromStreams, -} from '../../utils/streams'; +import { createConcatStream, createListStream, createPromiseFromStreams } from '@kbn/utils'; import { createLimitStream } from './create_limit_stream'; describe('createLimitStream()', () => { diff --git a/src/core/server/saved_objects/index.ts b/src/core/server/saved_objects/index.ts index f2bae29c4743b5..7a0088094e841a 100644 --- a/src/core/server/saved_objects/index.ts +++ b/src/core/server/saved_objects/index.ts @@ -48,6 +48,7 @@ export { export { ISavedObjectsRepository, SavedObjectsIncrementCounterOptions, + SavedObjectsIncrementCounterField, SavedObjectsDeleteByNamespaceOptions, } from './service/lib/repository'; diff --git a/src/core/server/saved_objects/routes/export.ts b/src/core/server/saved_objects/routes/export.ts index 5b4fd57e11256d..387280d777eaae 100644 --- a/src/core/server/saved_objects/routes/export.ts +++ b/src/core/server/saved_objects/routes/export.ts @@ -19,13 +19,23 @@ import { schema } from '@kbn/config-schema'; import stringify from 'json-stable-stringify'; -import { createPromiseFromStreams, createMapStream, createConcatStream } from '../../utils/streams'; +import { createPromiseFromStreams, createMapStream, createConcatStream } from '@kbn/utils'; + import { IRouter } from '../../http'; +import { CoreUsageDataSetup } from '../../core_usage_data'; import { SavedObjectConfig } from '../saved_objects_config'; import { exportSavedObjectsToStream } from '../export'; import { validateTypes, validateObjects } from './utils'; -export const registerExportRoute = (router: IRouter, config: SavedObjectConfig) => { +interface RouteDependencies { + config: SavedObjectConfig; + coreUsageData: CoreUsageDataSetup; +} + +export const registerExportRoute = ( + router: IRouter, + { config, coreUsageData }: RouteDependencies +) => { const { maxImportExportSize } = config; const referenceSchema = schema.object({ @@ -94,6 +104,12 @@ export const registerExportRoute = (router: IRouter, config: SavedObjectConfig) } } + const { headers } = req; + const usageStatsClient = coreUsageData.getClient(); + usageStatsClient + .incrementSavedObjectsExport({ headers, types, supportedTypes }) + .catch(() => {}); + const exportStream = await exportSavedObjectsToStream({ savedObjectsClient, types, diff --git a/src/core/server/saved_objects/routes/import.ts b/src/core/server/saved_objects/routes/import.ts index 291da5a5f01837..27be710c0a92a5 100644 --- a/src/core/server/saved_objects/routes/import.ts +++ b/src/core/server/saved_objects/routes/import.ts @@ -21,17 +21,26 @@ import { Readable } from 'stream'; import { extname } from 'path'; import { schema } from '@kbn/config-schema'; import { IRouter } from '../../http'; +import { CoreUsageDataSetup } from '../../core_usage_data'; import { importSavedObjectsFromStream } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; +interface RouteDependencies { + config: SavedObjectConfig; + coreUsageData: CoreUsageDataSetup; +} + interface FileStream extends Readable { hapi: { filename: string; }; } -export const registerImportRoute = (router: IRouter, config: SavedObjectConfig) => { +export const registerImportRoute = ( + router: IRouter, + { config, coreUsageData }: RouteDependencies +) => { const { maxImportExportSize, maxImportPayloadBytes } = config; router.post( @@ -65,6 +74,13 @@ export const registerImportRoute = (router: IRouter, config: SavedObjectConfig) }, router.handleLegacyErrors(async (context, req, res) => { const { overwrite, createNewCopies } = req.query; + + const { headers } = req; + const usageStatsClient = coreUsageData.getClient(); + usageStatsClient + .incrementSavedObjectsImport({ headers, createNewCopies, overwrite }) + .catch(() => {}); + const file = req.body.file as FileStream; const fileExtension = extname(file.hapi.filename).toLowerCase(); if (fileExtension !== '.ndjson') { diff --git a/src/core/server/saved_objects/routes/index.ts b/src/core/server/saved_objects/routes/index.ts index fd57a9f3059e33..19154b85836546 100644 --- a/src/core/server/saved_objects/routes/index.ts +++ b/src/core/server/saved_objects/routes/index.ts @@ -18,6 +18,7 @@ */ import { InternalHttpServiceSetup } from '../../http'; +import { CoreUsageDataSetup } from '../../core_usage_data'; import { Logger } from '../../logging'; import { SavedObjectConfig } from '../saved_objects_config'; import { IKibanaMigrator } from '../migrations'; @@ -37,11 +38,13 @@ import { registerMigrateRoute } from './migrate'; export function registerRoutes({ http, + coreUsageData, logger, config, migratorPromise, }: { http: InternalHttpServiceSetup; + coreUsageData: CoreUsageDataSetup; logger: Logger; config: SavedObjectConfig; migratorPromise: Promise; @@ -57,9 +60,9 @@ export function registerRoutes({ registerBulkCreateRoute(router); registerBulkUpdateRoute(router); registerLogLegacyImportRoute(router, logger); - registerExportRoute(router, config); - registerImportRoute(router, config); - registerResolveImportErrorsRoute(router, config); + registerExportRoute(router, { config, coreUsageData }); + registerImportRoute(router, { config, coreUsageData }); + registerResolveImportErrorsRoute(router, { config, coreUsageData }); const internalRouter = http.createRouter('/internal/saved_objects/'); diff --git a/src/core/server/saved_objects/routes/integration_tests/export.test.ts b/src/core/server/saved_objects/routes/integration_tests/export.test.ts index d0fcd4b8b66df3..c37ed2da976813 100644 --- a/src/core/server/saved_objects/routes/integration_tests/export.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/export.test.ts @@ -22,9 +22,12 @@ jest.mock('../../export', () => ({ })); import * as exportMock from '../../export'; -import { createListStream } from '../../../utils/streams'; import supertest from 'supertest'; -import { UnwrapPromise } from '@kbn/utility-types'; +import type { UnwrapPromise } from '@kbn/utility-types'; +import { createListStream } from '@kbn/utils'; +import { CoreUsageStatsClient } from '../../../core_usage_data'; +import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; +import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { SavedObjectConfig } from '../../saved_objects_config'; import { registerExportRoute } from '../export'; import { setupServer, createExportableType } from '../test_utils'; @@ -36,6 +39,7 @@ const config = { maxImportPayloadBytes: 26214400, maxImportExportSize: 10000, } as SavedObjectConfig; +let coreUsageStatsClient: jest.Mocked; describe('POST /api/saved_objects/_export', () => { let server: SetupServerReturn['server']; @@ -49,7 +53,10 @@ describe('POST /api/saved_objects/_export', () => { ); const router = httpSetup.createRouter('/api/saved_objects/'); - registerExportRoute(router, config); + coreUsageStatsClient = coreUsageStatsClientMock.create(); + coreUsageStatsClient.incrementSavedObjectsExport.mockRejectedValue(new Error('Oh no!')); // this error is intentionally swallowed so the export does not fail + const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient); + registerExportRoute(router, { config, coreUsageData }); await server.start(); }); @@ -59,7 +66,7 @@ describe('POST /api/saved_objects/_export', () => { await server.stop(); }); - it('formats successful response', async () => { + it('formats successful response and records usage stats', async () => { const sortedObjects = [ { id: '1', @@ -110,5 +117,10 @@ describe('POST /api/saved_objects/_export', () => { types: ['search'], }) ); + expect(coreUsageStatsClient.incrementSavedObjectsExport).toHaveBeenCalledWith({ + headers: expect.anything(), + types: ['search'], + supportedTypes: ['index-pattern', 'search'], + }); }); }); diff --git a/src/core/server/saved_objects/routes/integration_tests/import.test.ts b/src/core/server/saved_objects/routes/integration_tests/import.test.ts index 34cd449f31963f..9dfb7f79a925d7 100644 --- a/src/core/server/saved_objects/routes/integration_tests/import.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/import.test.ts @@ -22,6 +22,9 @@ import supertest from 'supertest'; import { UnwrapPromise } from '@kbn/utility-types'; import { registerImportRoute } from '../import'; import { savedObjectsClientMock } from '../../../../../core/server/mocks'; +import { CoreUsageStatsClient } from '../../../core_usage_data'; +import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; +import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { SavedObjectConfig } from '../../saved_objects_config'; import { setupServer, createExportableType } from '../test_utils'; import { SavedObjectsErrorHelpers } from '../..'; @@ -31,6 +34,7 @@ type SetupServerReturn = UnwrapPromise>; const { v4: uuidv4 } = jest.requireActual('uuid'); const allowedTypes = ['index-pattern', 'visualization', 'dashboard']; const config = { maxImportPayloadBytes: 26214400, maxImportExportSize: 10000 } as SavedObjectConfig; +let coreUsageStatsClient: jest.Mocked; const URL = '/internal/saved_objects/_import'; describe(`POST ${URL}`, () => { @@ -71,7 +75,10 @@ describe(`POST ${URL}`, () => { savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); const router = httpSetup.createRouter('/internal/saved_objects/'); - registerImportRoute(router, config); + coreUsageStatsClient = coreUsageStatsClientMock.create(); + coreUsageStatsClient.incrementSavedObjectsImport.mockRejectedValue(new Error('Oh no!')); // this error is intentionally swallowed so the import does not fail + const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient); + registerImportRoute(router, { config, coreUsageData }); await server.start(); }); @@ -80,7 +87,7 @@ describe(`POST ${URL}`, () => { await server.stop(); }); - it('formats successful response', async () => { + it('formats successful response and records usage stats', async () => { const result = await supertest(httpSetup.server.listener) .post(URL) .set('content-Type', 'multipart/form-data; boundary=BOUNDARY') @@ -98,6 +105,11 @@ describe(`POST ${URL}`, () => { expect(result.body).toEqual({ success: true, successCount: 0 }); expect(savedObjectsClient.bulkCreate).not.toHaveBeenCalled(); // no objects were created + expect(coreUsageStatsClient.incrementSavedObjectsImport).toHaveBeenCalledWith({ + headers: expect.anything(), + createNewCopies: false, + overwrite: false, + }); }); it('defaults migrationVersion to empty object', async () => { diff --git a/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts b/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts index 0e8fb0e563dbc1..46f4d2435bf67f 100644 --- a/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts +++ b/src/core/server/saved_objects/routes/integration_tests/resolve_import_errors.test.ts @@ -22,6 +22,9 @@ import supertest from 'supertest'; import { UnwrapPromise } from '@kbn/utility-types'; import { registerResolveImportErrorsRoute } from '../resolve_import_errors'; import { savedObjectsClientMock } from '../../../../../core/server/mocks'; +import { CoreUsageStatsClient } from '../../../core_usage_data'; +import { coreUsageStatsClientMock } from '../../../core_usage_data/core_usage_stats_client.mock'; +import { coreUsageDataServiceMock } from '../../../core_usage_data/core_usage_data_service.mock'; import { setupServer, createExportableType } from '../test_utils'; import { SavedObjectConfig } from '../../saved_objects_config'; @@ -30,6 +33,7 @@ type SetupServerReturn = UnwrapPromise>; const { v4: uuidv4 } = jest.requireActual('uuid'); const allowedTypes = ['index-pattern', 'visualization', 'dashboard']; const config = { maxImportPayloadBytes: 26214400, maxImportExportSize: 10000 } as SavedObjectConfig; +let coreUsageStatsClient: jest.Mocked; const URL = '/api/saved_objects/_resolve_import_errors'; describe(`POST ${URL}`, () => { @@ -76,7 +80,12 @@ describe(`POST ${URL}`, () => { savedObjectsClient.checkConflicts.mockResolvedValue({ errors: [] }); const router = httpSetup.createRouter('/api/saved_objects/'); - registerResolveImportErrorsRoute(router, config); + coreUsageStatsClient = coreUsageStatsClientMock.create(); + coreUsageStatsClient.incrementSavedObjectsResolveImportErrors.mockRejectedValue( + new Error('Oh no!') // this error is intentionally swallowed so the export does not fail + ); + const coreUsageData = coreUsageDataServiceMock.createSetupContract(coreUsageStatsClient); + registerResolveImportErrorsRoute(router, { config, coreUsageData }); await server.start(); }); @@ -85,7 +94,7 @@ describe(`POST ${URL}`, () => { await server.stop(); }); - it('formats successful response', async () => { + it('formats successful response and records usage stats', async () => { const result = await supertest(httpSetup.server.listener) .post(URL) .set('content-Type', 'multipart/form-data; boundary=BOUNDARY') @@ -107,6 +116,10 @@ describe(`POST ${URL}`, () => { expect(result.body).toEqual({ success: true, successCount: 0 }); expect(savedObjectsClient.bulkCreate).not.toHaveBeenCalled(); // no objects were created + expect(coreUsageStatsClient.incrementSavedObjectsResolveImportErrors).toHaveBeenCalledWith({ + headers: expect.anything(), + createNewCopies: false, + }); }); it('defaults migrationVersion to empty object', async () => { diff --git a/src/core/server/saved_objects/routes/resolve_import_errors.ts b/src/core/server/saved_objects/routes/resolve_import_errors.ts index 03b4322b27cbc7..34c178a975304d 100644 --- a/src/core/server/saved_objects/routes/resolve_import_errors.ts +++ b/src/core/server/saved_objects/routes/resolve_import_errors.ts @@ -21,17 +21,26 @@ import { extname } from 'path'; import { Readable } from 'stream'; import { schema } from '@kbn/config-schema'; import { IRouter } from '../../http'; +import { CoreUsageDataSetup } from '../../core_usage_data'; import { resolveSavedObjectsImportErrors } from '../import'; import { SavedObjectConfig } from '../saved_objects_config'; import { createSavedObjectsStreamFromNdJson } from './utils'; +interface RouteDependencies { + config: SavedObjectConfig; + coreUsageData: CoreUsageDataSetup; +} + interface FileStream extends Readable { hapi: { filename: string; }; } -export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedObjectConfig) => { +export const registerResolveImportErrorsRoute = ( + router: IRouter, + { config, coreUsageData }: RouteDependencies +) => { const { maxImportExportSize, maxImportPayloadBytes } = config; router.post( @@ -72,6 +81,14 @@ export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedO }, }, router.handleLegacyErrors(async (context, req, res) => { + const { createNewCopies } = req.query; + + const { headers } = req; + const usageStatsClient = coreUsageData.getClient(); + usageStatsClient + .incrementSavedObjectsResolveImportErrors({ headers, createNewCopies }) + .catch(() => {}); + const file = req.body.file as FileStream; const fileExtension = extname(file.hapi.filename).toLowerCase(); if (fileExtension !== '.ndjson') { @@ -93,7 +110,7 @@ export const registerResolveImportErrorsRoute = (router: IRouter, config: SavedO readStream, retries: req.body.retries, objectLimit: maxImportExportSize, - createNewCopies: req.query.createNewCopies, + createNewCopies, }); return res.ok({ body: result }); diff --git a/src/core/server/saved_objects/routes/utils.test.ts b/src/core/server/saved_objects/routes/utils.test.ts index 693513dfc7c408..eaa9a42821e489 100644 --- a/src/core/server/saved_objects/routes/utils.test.ts +++ b/src/core/server/saved_objects/routes/utils.test.ts @@ -19,7 +19,7 @@ import { createSavedObjectsStreamFromNdJson, validateTypes, validateObjects } from './utils'; import { Readable } from 'stream'; -import { createPromiseFromStreams, createConcatStream } from '../../utils/streams'; +import { createPromiseFromStreams, createConcatStream } from '@kbn/utils'; async function readStreamToCompletion(stream: Readable) { return createPromiseFromStreams([stream, createConcatStream([])]); diff --git a/src/core/server/saved_objects/routes/utils.ts b/src/core/server/saved_objects/routes/utils.ts index 6536406d116d7d..83cb2ef75bd552 100644 --- a/src/core/server/saved_objects/routes/utils.ts +++ b/src/core/server/saved_objects/routes/utils.ts @@ -26,7 +26,7 @@ import { createPromiseFromStreams, createListStream, createConcatStream, -} from '../../utils/streams'; +} from '@kbn/utils'; export async function createSavedObjectsStreamFromNdJson(ndJsonStream: Readable) { const savedObjects = await createPromiseFromStreams([ diff --git a/src/core/server/saved_objects/saved_objects_service.test.ts b/src/core/server/saved_objects/saved_objects_service.test.ts index 8e4c73137033dd..c90f564ce33d7d 100644 --- a/src/core/server/saved_objects/saved_objects_service.test.ts +++ b/src/core/server/saved_objects/saved_objects_service.test.ts @@ -33,6 +33,7 @@ import { Env } from '../config'; import { configServiceMock } from '../mocks'; import { elasticsearchServiceMock } from '../elasticsearch/elasticsearch_service.mock'; import { elasticsearchClientMock } from '../elasticsearch/client/mocks'; +import { coreUsageDataServiceMock } from '../core_usage_data/core_usage_data_service.mock'; import { httpServiceMock } from '../http/http_service.mock'; import { httpServerMock } from '../http/http_server.mocks'; import { SavedObjectsClientFactoryProvider } from './service/lib'; @@ -64,6 +65,7 @@ describe('SavedObjectsService', () => { return { http: httpServiceMock.createInternalSetupContract(), elasticsearch: elasticsearchMock, + coreUsageData: coreUsageDataServiceMock.createSetupContract(), }; }; diff --git a/src/core/server/saved_objects/saved_objects_service.ts b/src/core/server/saved_objects/saved_objects_service.ts index 5cc59d55a254ec..400d3157bd00d3 100644 --- a/src/core/server/saved_objects/saved_objects_service.ts +++ b/src/core/server/saved_objects/saved_objects_service.ts @@ -27,6 +27,7 @@ import { } from './'; import { KibanaMigrator, IKibanaMigrator } from './migrations'; import { CoreContext } from '../core_context'; +import { CoreUsageDataSetup } from '../core_usage_data'; import { ElasticsearchClient, IClusterClient, @@ -253,6 +254,7 @@ export interface SavedObjectsRepositoryFactory { export interface SavedObjectsSetupDeps { http: InternalHttpServiceSetup; elasticsearch: InternalElasticsearchServiceSetup; + coreUsageData: CoreUsageDataSetup; } interface WrappedClientFactoryWrapper { @@ -288,6 +290,7 @@ export class SavedObjectsService this.logger.debug('Setting up SavedObjects service'); this.setupDeps = setupDeps; + const { http, elasticsearch, coreUsageData } = setupDeps; const savedObjectsConfig = await this.coreContext.configService .atPath('savedObjects') @@ -299,8 +302,11 @@ export class SavedObjectsService .toPromise(); this.config = new SavedObjectConfig(savedObjectsConfig, savedObjectsMigrationConfig); + coreUsageData.registerType(this.typeRegistry); + registerRoutes({ - http: setupDeps.http, + http, + coreUsageData, logger: this.logger, config: this.config, migratorPromise: this.migrator$.pipe(first()).toPromise(), @@ -309,7 +315,7 @@ export class SavedObjectsService return { status$: calculateStatus$( this.migrator$.pipe(switchMap((migrator) => migrator.getStatus$())), - setupDeps.elasticsearch.status$ + elasticsearch.status$ ), setClientFactoryProvider: (provider) => { if (this.started) { diff --git a/src/core/server/saved_objects/serialization/serializer.test.ts b/src/core/server/saved_objects/serialization/serializer.test.ts index e5f0e8abd3b715..561f9bc001e30a 100644 --- a/src/core/server/saved_objects/serialization/serializer.test.ts +++ b/src/core/server/saved_objects/serialization/serializer.test.ts @@ -573,24 +573,10 @@ describe('#savedObjectToRaw', () => { }); describe('single-namespace type without a namespace', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = singleNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - attributes: { bar: true }, - } as any); - - const v2 = singleNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`doesn't specify _source.namespace`, () => { const actual = singleNamespaceSerializer.savedObjectToRaw({ type: '', + id: 'mock-saved-object-id', attributes: {}, } as any); @@ -599,23 +585,6 @@ describe('#savedObjectToRaw', () => { }); describe('single-namespace type with a namespace', () => { - test('generates an id prefixed with namespace and type, if no id is specified', () => { - const v1 = singleNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - const v2 = singleNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^bar\:foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`it copies namespace to _source.namespace`, () => { const actual = singleNamespaceSerializer.savedObjectToRaw({ type: 'foo', @@ -628,23 +597,6 @@ describe('#savedObjectToRaw', () => { }); describe('single-namespace type with namespaces', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - const v2 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`doesn't specify _source.namespaces`, () => { const actual = namespaceAgnosticSerializer.savedObjectToRaw({ type: 'foo', @@ -657,23 +609,6 @@ describe('#savedObjectToRaw', () => { }); describe('namespace-agnostic type with a namespace', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - const v2 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`doesn't specify _source.namespace`, () => { const actual = namespaceAgnosticSerializer.savedObjectToRaw({ type: 'foo', @@ -686,23 +621,6 @@ describe('#savedObjectToRaw', () => { }); describe('namespace-agnostic type with namespaces', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - const v2 = namespaceAgnosticSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`doesn't specify _source.namespaces`, () => { const actual = namespaceAgnosticSerializer.savedObjectToRaw({ type: 'foo', @@ -715,23 +633,6 @@ describe('#savedObjectToRaw', () => { }); describe('multi-namespace type with a namespace', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = multiNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - const v2 = multiNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespace: 'bar', - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`doesn't specify _source.namespace`, () => { const actual = multiNamespaceSerializer.savedObjectToRaw({ type: 'foo', @@ -744,23 +645,6 @@ describe('#savedObjectToRaw', () => { }); describe('multi-namespace type with namespaces', () => { - test('generates an id prefixed with type, if no id is specified', () => { - const v1 = multiNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - const v2 = multiNamespaceSerializer.savedObjectToRaw({ - type: 'foo', - namespaces: ['bar'], - attributes: { bar: true }, - } as any); - - expect(v1._id).toMatch(/^foo\:[\w-]+$/); - expect(v1._id).not.toEqual(v2._id); - }); - test(`it copies namespaces to _source.namespaces`, () => { const actual = multiNamespaceSerializer.savedObjectToRaw({ type: 'foo', @@ -1064,11 +948,6 @@ describe('#isRawSavedObject', () => { describe('#generateRawId', () => { describe('single-namespace type without a namespace', () => { - test('generates an id if none is specified', () => { - const id = singleNamespaceSerializer.generateRawId('', 'goodbye'); - expect(id).toMatch(/^goodbye\:[\w-]+$/); - }); - test('uses the id that is specified', () => { const id = singleNamespaceSerializer.generateRawId('', 'hello', 'world'); expect(id).toEqual('hello:world'); @@ -1076,11 +955,6 @@ describe('#generateRawId', () => { }); describe('single-namespace type with a namespace', () => { - test('generates an id if none is specified and prefixes namespace', () => { - const id = singleNamespaceSerializer.generateRawId('foo', 'goodbye'); - expect(id).toMatch(/^foo:goodbye\:[\w-]+$/); - }); - test('uses the id that is specified and prefixes the namespace', () => { const id = singleNamespaceSerializer.generateRawId('foo', 'hello', 'world'); expect(id).toEqual('foo:hello:world'); @@ -1088,11 +962,6 @@ describe('#generateRawId', () => { }); describe('namespace-agnostic type with a namespace', () => { - test(`generates an id if none is specified and doesn't prefix namespace`, () => { - const id = namespaceAgnosticSerializer.generateRawId('foo', 'goodbye'); - expect(id).toMatch(/^goodbye\:[\w-]+$/); - }); - test(`uses the id that is specified and doesn't prefix the namespace`, () => { const id = namespaceAgnosticSerializer.generateRawId('foo', 'hello', 'world'); expect(id).toEqual('hello:world'); diff --git a/src/core/server/saved_objects/serialization/serializer.ts b/src/core/server/saved_objects/serialization/serializer.ts index 145dd286c1ca8d..82999eeceb8875 100644 --- a/src/core/server/saved_objects/serialization/serializer.ts +++ b/src/core/server/saved_objects/serialization/serializer.ts @@ -17,7 +17,6 @@ * under the License. */ -import uuid from 'uuid'; import { decodeVersion, encodeVersion } from '../version'; import { ISavedObjectTypeRegistry } from '../saved_objects_type_registry'; import { SavedObjectsRawDoc, SavedObjectSanitizedDoc } from './types'; @@ -127,10 +126,10 @@ export class SavedObjectsSerializer { * @param {string} type - The saved object type * @param {string} id - The id of the saved object */ - public generateRawId(namespace: string | undefined, type: string, id?: string) { + public generateRawId(namespace: string | undefined, type: string, id: string) { const namespacePrefix = namespace && this.registry.isSingleNamespace(type) ? `${namespace}:` : ''; - return `${namespacePrefix}${type}:${id || uuid.v1()}`; + return `${namespacePrefix}${type}:${id}`; } private trimIdPrefix(namespace: string | undefined, type: string, id: string) { diff --git a/src/core/server/saved_objects/serialization/types.ts b/src/core/server/saved_objects/serialization/types.ts index 8b3eebceb2c5a8..e59b1a68e1ad1b 100644 --- a/src/core/server/saved_objects/serialization/types.ts +++ b/src/core/server/saved_objects/serialization/types.ts @@ -50,7 +50,7 @@ export interface SavedObjectsRawDocSource { */ interface SavedObjectDoc { attributes: T; - id?: string; // NOTE: SavedObjectDoc is used for uncreated objects where `id` is optional + id: string; type: string; namespace?: string; namespaces?: string[]; diff --git a/src/core/server/saved_objects/service/lib/integration_tests/repository.test.ts b/src/core/server/saved_objects/service/lib/integration_tests/repository.test.ts new file mode 100644 index 00000000000000..2f64776501df06 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/integration_tests/repository.test.ts @@ -0,0 +1,152 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { InternalCoreStart } from 'src/core/server/internal_types'; +import * as kbnTestServer from '../../../../../test_helpers/kbn_server'; +import { Root } from '../../../../root'; + +const { startES } = kbnTestServer.createTestServers({ + adjustTimeout: (t: number) => jest.setTimeout(t), +}); +let esServer: kbnTestServer.TestElasticsearchUtils; + +describe('SavedObjectsRepository', () => { + let root: Root; + let start: InternalCoreStart; + + beforeAll(async () => { + esServer = await startES(); + root = kbnTestServer.createRootWithCorePlugins({ + server: { + basePath: '/hello', + }, + }); + + const setup = await root.setup(); + setup.savedObjects.registerType({ + hidden: false, + mappings: { + dynamic: false, + properties: {}, + }, + name: 'test_counter_type', + namespaceType: 'single', + }); + start = await root.start(); + }); + + afterAll(async () => { + await esServer.stop(); + await root.shutdown(); + }); + + describe('#incrementCounter', () => { + describe('initialize=false', () => { + it('creates a new document if none exists and sets all counter fields set to 1', async () => { + const now = new Date().getTime(); + const repository = start.savedObjects.createInternalRepository(); + await repository.incrementCounter('test_counter_type', 'counter_1', [ + 'stats.api.count', + 'stats.api.count2', + 'stats.total', + ]); + const result = await repository.get('test_counter_type', 'counter_1'); + expect(result.attributes).toMatchInlineSnapshot(` + Object { + "stats.api.count": 1, + "stats.api.count2": 1, + "stats.total": 1, + } + `); + expect(Date.parse(result.updated_at!)).toBeGreaterThanOrEqual(now); + }); + it('increments the specified counters of an existing document', async () => { + const repository = start.savedObjects.createInternalRepository(); + // Create document + await repository.incrementCounter('test_counter_type', 'counter_2', [ + 'stats.api.count', + 'stats.api.count2', + 'stats.total', + ]); + + const now = new Date().getTime(); + // Increment counters + await repository.incrementCounter('test_counter_type', 'counter_2', [ + 'stats.api.count', + 'stats.api.count2', + 'stats.total', + ]); + const result = await repository.get('test_counter_type', 'counter_2'); + expect(result.attributes).toMatchInlineSnapshot(` + Object { + "stats.api.count": 2, + "stats.api.count2": 2, + "stats.total": 2, + } + `); + expect(Date.parse(result.updated_at!)).toBeGreaterThanOrEqual(now); + }); + }); + describe('initialize=true', () => { + it('creates a new document if none exists and sets all counter fields to 0', async () => { + const now = new Date().getTime(); + const repository = start.savedObjects.createInternalRepository(); + await repository.incrementCounter( + 'test_counter_type', + 'counter_3', + ['stats.api.count', 'stats.api.count2', 'stats.total'], + { initialize: true } + ); + const result = await repository.get('test_counter_type', 'counter_3'); + expect(result.attributes).toMatchInlineSnapshot(` + Object { + "stats.api.count": 0, + "stats.api.count2": 0, + "stats.total": 0, + } + `); + expect(Date.parse(result.updated_at!)).toBeGreaterThanOrEqual(now); + }); + it('sets any undefined counter fields to 0 but does not alter existing fields of an existing document', async () => { + const repository = start.savedObjects.createInternalRepository(); + // Create document + await repository.incrementCounter('test_counter_type', 'counter_4', [ + 'stats.existing_field', + ]); + + const now = new Date().getTime(); + // Initialize counters + await repository.incrementCounter( + 'test_counter_type', + 'counter_4', + ['stats.existing_field', 'stats.new_field'], + { initialize: true } + ); + const result = await repository.get('test_counter_type', 'counter_4'); + expect(result.attributes).toMatchInlineSnapshot(` + Object { + "stats.existing_field": 1, + "stats.new_field": 0, + } + `); + expect(Date.parse(result.updated_at!)).toBeGreaterThanOrEqual(now); + }); + }); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/repository.test.js b/src/core/server/saved_objects/service/lib/repository.test.js index 6f885f17fd82b2..a19b4cc01db8ed 100644 --- a/src/core/server/saved_objects/service/lib/repository.test.js +++ b/src/core/server/saved_objects/service/lib/repository.test.js @@ -1831,21 +1831,16 @@ describe('SavedObjectsRepository', () => { }; describe('client calls', () => { - it(`should use the ES create action if ID is undefined and overwrite=true`, async () => { + it(`should use the ES index action if overwrite=true`, async () => { await createSuccess(type, attributes, { overwrite: true }); - expect(client.create).toHaveBeenCalled(); + expect(client.index).toHaveBeenCalled(); }); - it(`should use the ES create action if ID is undefined and overwrite=false`, async () => { + it(`should use the ES create action if overwrite=false`, async () => { await createSuccess(type, attributes); expect(client.create).toHaveBeenCalled(); }); - it(`should use the ES index action if ID is defined and overwrite=true`, async () => { - await createSuccess(type, attributes, { id, overwrite: true }); - expect(client.index).toHaveBeenCalled(); - }); - it(`should use the ES index with version if ID and version are defined and overwrite=true`, async () => { await createSuccess(type, attributes, { id, overwrite: true, version: mockVersion }); expect(client.index).toHaveBeenCalled(); @@ -3272,11 +3267,11 @@ describe('SavedObjectsRepository', () => { describe('#incrementCounter', () => { const type = 'config'; const id = 'one'; - const field = 'buildNum'; + const counterFields = ['buildNum', 'apiCallsCount']; const namespace = 'foo-namespace'; const originId = 'some-origin-id'; - const incrementCounterSuccess = async (type, id, field, options) => { + const incrementCounterSuccess = async (type, id, fields, options) => { const isMultiNamespace = registry.isMultiNamespace(type); if (isMultiNamespace) { const response = getMockGetResponse({ type, id }, options?.namespace); @@ -3295,7 +3290,10 @@ describe('SavedObjectsRepository', () => { type, ...mockTimestampFields, [type]: { - [field]: 8468, + ...fields.reduce((acc, field) => { + acc[field] = 8468; + return acc; + }, {}), defaultIndex: 'logstash-*', }, }, @@ -3303,25 +3301,25 @@ describe('SavedObjectsRepository', () => { }) ); - const result = await savedObjectsRepository.incrementCounter(type, id, field, options); + const result = await savedObjectsRepository.incrementCounter(type, id, fields, options); expect(client.get).toHaveBeenCalledTimes(isMultiNamespace ? 1 : 0); return result; }; describe('client calls', () => { it(`should use the ES update action if type is not multi-namespace`, async () => { - await incrementCounterSuccess(type, id, field, { namespace }); + await incrementCounterSuccess(type, id, counterFields, { namespace }); expect(client.update).toHaveBeenCalledTimes(1); }); it(`should use the ES get action then update action if type is multi-namespace, ID is defined, and overwrite=true`, async () => { - await incrementCounterSuccess(MULTI_NAMESPACE_TYPE, id, field, { namespace }); + await incrementCounterSuccess(MULTI_NAMESPACE_TYPE, id, counterFields, { namespace }); expect(client.get).toHaveBeenCalledTimes(1); expect(client.update).toHaveBeenCalledTimes(1); }); it(`defaults to a refresh setting of wait_for`, async () => { - await incrementCounterSuccess(type, id, field, { namespace }); + await incrementCounterSuccess(type, id, counterFields, { namespace }); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ refresh: 'wait_for', @@ -3331,7 +3329,7 @@ describe('SavedObjectsRepository', () => { }); it(`prepends namespace to the id when providing namespace for single-namespace type`, async () => { - await incrementCounterSuccess(type, id, field, { namespace }); + await incrementCounterSuccess(type, id, counterFields, { namespace }); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ id: `${namespace}:${type}:${id}`, @@ -3341,7 +3339,7 @@ describe('SavedObjectsRepository', () => { }); it(`doesn't prepend namespace to the id when providing no namespace for single-namespace type`, async () => { - await incrementCounterSuccess(type, id, field); + await incrementCounterSuccess(type, id, counterFields); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ id: `${type}:${id}`, @@ -3351,7 +3349,7 @@ describe('SavedObjectsRepository', () => { }); it(`normalizes options.namespace from 'default' to undefined`, async () => { - await incrementCounterSuccess(type, id, field, { namespace: 'default' }); + await incrementCounterSuccess(type, id, counterFields, { namespace: 'default' }); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ id: `${type}:${id}`, @@ -3361,7 +3359,7 @@ describe('SavedObjectsRepository', () => { }); it(`doesn't prepend namespace to the id when not using single-namespace type`, async () => { - await incrementCounterSuccess(NAMESPACE_AGNOSTIC_TYPE, id, field, { namespace }); + await incrementCounterSuccess(NAMESPACE_AGNOSTIC_TYPE, id, counterFields, { namespace }); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ id: `${NAMESPACE_AGNOSTIC_TYPE}:${id}`, @@ -3370,7 +3368,7 @@ describe('SavedObjectsRepository', () => { ); client.update.mockClear(); - await incrementCounterSuccess(MULTI_NAMESPACE_TYPE, id, field, { namespace }); + await incrementCounterSuccess(MULTI_NAMESPACE_TYPE, id, counterFields, { namespace }); expect(client.update).toHaveBeenCalledWith( expect.objectContaining({ id: `${MULTI_NAMESPACE_TYPE}:${id}`, @@ -3389,7 +3387,7 @@ describe('SavedObjectsRepository', () => { it(`throws when options.namespace is '*'`, async () => { await expect( - savedObjectsRepository.incrementCounter(type, id, field, { + savedObjectsRepository.incrementCounter(type, id, counterFields, { namespace: ALL_NAMESPACES_STRING, }) ).rejects.toThrowError(createBadRequestError('"options.namespace" cannot be "*"')); @@ -3398,7 +3396,7 @@ describe('SavedObjectsRepository', () => { it(`throws when type is not a string`, async () => { const test = async (type) => { await expect( - savedObjectsRepository.incrementCounter(type, id, field) + savedObjectsRepository.incrementCounter(type, id, counterFields) ).rejects.toThrowError(`"type" argument must be a string`); expect(client.update).not.toHaveBeenCalled(); }; @@ -3409,27 +3407,31 @@ describe('SavedObjectsRepository', () => { await test({}); }); - it(`throws when counterFieldName is not a string`, async () => { + it(`throws when counterField is not CounterField type`, async () => { const test = async (field) => { await expect( savedObjectsRepository.incrementCounter(type, id, field) - ).rejects.toThrowError(`"counterFieldName" argument must be a string`); + ).rejects.toThrowError( + `"counterFields" argument must be of type Array` + ); expect(client.update).not.toHaveBeenCalled(); }; - await test(null); - await test(42); - await test(false); - await test({}); + await test([null]); + await test([42]); + await test([false]); + await test([{}]); + await test([{}, false, 42, null, 'string']); + await test([{ fieldName: 'string' }, false, null, 'string']); }); it(`throws when type is invalid`, async () => { - await expectUnsupportedTypeError('unknownType', id, field); + await expectUnsupportedTypeError('unknownType', id, counterFields); expect(client.update).not.toHaveBeenCalled(); }); it(`throws when type is hidden`, async () => { - await expectUnsupportedTypeError(HIDDEN_TYPE, id, field); + await expectUnsupportedTypeError(HIDDEN_TYPE, id, counterFields); expect(client.update).not.toHaveBeenCalled(); }); @@ -3439,7 +3441,9 @@ describe('SavedObjectsRepository', () => { elasticsearchClientMock.createSuccessTransportRequestPromise(response) ); await expect( - savedObjectsRepository.incrementCounter(MULTI_NAMESPACE_TYPE, id, field, { namespace }) + savedObjectsRepository.incrementCounter(MULTI_NAMESPACE_TYPE, id, counterFields, { + namespace, + }) ).rejects.toThrowError(createConflictError(MULTI_NAMESPACE_TYPE, id)); expect(client.get).toHaveBeenCalledTimes(1); }); @@ -3452,8 +3456,8 @@ describe('SavedObjectsRepository', () => { it(`migrates a document and serializes the migrated doc`, async () => { const migrationVersion = mockMigrationVersion; - await incrementCounterSuccess(type, id, field, { migrationVersion }); - const attributes = { buildNum: 1 }; // this is added by the incrementCounter function + await incrementCounterSuccess(type, id, counterFields, { migrationVersion }); + const attributes = { buildNum: 1, apiCallsCount: 1 }; // this is added by the incrementCounter function const doc = { type, id, attributes, migrationVersion, ...mockTimestampFields }; expectMigrationArgs(doc); @@ -3476,6 +3480,7 @@ describe('SavedObjectsRepository', () => { ...mockTimestampFields, config: { buildNum: 8468, + apiCallsCount: 100, defaultIndex: 'logstash-*', }, originId, @@ -3487,7 +3492,7 @@ describe('SavedObjectsRepository', () => { const response = await savedObjectsRepository.incrementCounter( 'config', '6.0.0-alpha1', - 'buildNum', + ['buildNum', 'apiCallsCount'], { namespace: 'foo-namespace', } @@ -3500,11 +3505,31 @@ describe('SavedObjectsRepository', () => { version: mockVersion, attributes: { buildNum: 8468, + apiCallsCount: 100, defaultIndex: 'logstash-*', }, originId, }); }); + + it('increments counter by incrementBy config', async () => { + await incrementCounterSuccess(type, id, [{ fieldName: counterFields[0], incrementBy: 3 }]); + + expect(client.update).toBeCalledTimes(1); + expect(client.update).toBeCalledWith( + expect.objectContaining({ + body: expect.objectContaining({ + script: expect.objectContaining({ + params: expect.objectContaining({ + counterFieldNames: [counterFields[0]], + counts: [3], + }), + }), + }), + }), + expect.anything() + ); + }); }); }); diff --git a/src/core/server/saved_objects/service/lib/repository.ts b/src/core/server/saved_objects/service/lib/repository.ts index d362c02de49153..587a0e51ef9b9c 100644 --- a/src/core/server/saved_objects/service/lib/repository.ts +++ b/src/core/server/saved_objects/service/lib/repository.ts @@ -17,8 +17,7 @@ * under the License. */ -import { omit } from 'lodash'; -import uuid from 'uuid'; +import { omit, isObject } from 'lodash'; import { ElasticsearchClient, DeleteDocumentResponse, @@ -101,8 +100,17 @@ export interface SavedObjectsRepositoryOptions { * @public */ export interface SavedObjectsIncrementCounterOptions extends SavedObjectsBaseOptions { + /** + * (default=false) If true, sets all the counter fields to 0 if they don't + * already exist. Existing fields will be left as-is and won't be incremented. + */ + initialize?: boolean; + /** {@link SavedObjectsMigrationVersion} */ migrationVersion?: SavedObjectsMigrationVersion; - /** The Elasticsearch Refresh setting for this operation */ + /** + * (default='wait_for') The Elasticsearch refresh setting for this + * operation. See {@link MutatingOperationRefreshSetting} + */ refresh?: MutatingOperationRefreshSetting; } @@ -124,6 +132,16 @@ const DEFAULT_REFRESH_SETTING = 'wait_for'; */ export type ISavedObjectsRepository = Pick; +/** + * @public + */ +export interface SavedObjectsIncrementCounterField { + /** The field name to increment the counter by.*/ + fieldName: string; + /** The number to increment the field by (defaults to 1).*/ + incrementBy?: number; +} + /** * @public */ @@ -226,7 +244,7 @@ export class SavedObjectsRepository { options: SavedObjectsCreateOptions = {} ): Promise> { const { - id, + id = SavedObjectsUtils.generateId(), migrationVersion, overwrite = false, references = [], @@ -347,7 +365,9 @@ export class SavedObjectsRepository { const method = object.id && overwrite ? 'index' : 'create'; const requiresNamespacesCheck = object.id && this._registry.isMultiNamespace(object.type); - if (object.id == null) object.id = uuid.v1(); + if (object.id == null) { + object.id = SavedObjectsUtils.generateId(); + } return { tag: 'Right' as 'Right', @@ -1515,32 +1535,81 @@ export class SavedObjectsRepository { } /** - * Increases a counter field by one. Creates the document if one doesn't exist for the given id. + * Increments all the specified counter fields (by one by default). Creates the document + * if one doesn't exist for the given id. * - * @param {string} type - * @param {string} id - * @param {string} counterFieldName - * @param {object} [options={}] - * @property {object} [options.migrationVersion=undefined] - * @returns {promise} + * @remarks + * When supplying a field name like `stats.api.counter` the field name will + * be used as-is to create a document like: + * `{attributes: {'stats.api.counter': 1}}` + * It will not create a nested structure like: + * `{attributes: {stats: {api: {counter: 1}}}}` + * + * When using incrementCounter for collecting usage data, you need to ensure + * that usage collection happens on a best-effort basis and doesn't + * negatively affect your plugin or users. See https://github.com/elastic/kibana/blob/master/src/plugins/usage_collection/README.md#tracking-interactions-with-incrementcounter) + * + * @example + * ```ts + * const repository = coreStart.savedObjects.createInternalRepository(); + * + * // Initialize all fields to 0 + * repository + * .incrementCounter('dashboard_counter_type', 'counter_id', [ + * 'stats.apiCalls', + * 'stats.sampleDataInstalled', + * ], {initialize: true}); + * + * // Increment the apiCalls field counter + * repository + * .incrementCounter('dashboard_counter_type', 'counter_id', [ + * 'stats.apiCalls', + * ]) + * ``` + * + * @param type - The type of saved object whose fields should be incremented + * @param id - The id of the document whose fields should be incremented + * @param counterFields - An array of field names to increment or an array of {@link SavedObjectsIncrementCounterField} + * @param options - {@link SavedObjectsIncrementCounterOptions} + * @returns The saved object after the specified fields were incremented */ - async incrementCounter( + async incrementCounter( type: string, id: string, - counterFieldName: string, + counterFields: Array, options: SavedObjectsIncrementCounterOptions = {} - ): Promise { + ): Promise> { if (typeof type !== 'string') { throw new Error('"type" argument must be a string'); } - if (typeof counterFieldName !== 'string') { - throw new Error('"counterFieldName" argument must be a string'); + + const isArrayOfCounterFields = + Array.isArray(counterFields) && + counterFields.every( + (field) => + typeof field === 'string' || (isObject(field) && typeof field.fieldName === 'string') + ); + + if (!isArrayOfCounterFields) { + throw new Error( + '"counterFields" argument must be of type Array' + ); } if (!this._allowedTypes.includes(type)) { throw SavedObjectsErrorHelpers.createUnsupportedTypeError(type); } - const { migrationVersion, refresh = DEFAULT_REFRESH_SETTING } = options; + const { migrationVersion, refresh = DEFAULT_REFRESH_SETTING, initialize = false } = options; + + const normalizedCounterFields = counterFields.map((counterField) => { + const fieldName = typeof counterField === 'string' ? counterField : counterField.fieldName; + const incrementBy = typeof counterField === 'string' ? 1 : counterField.incrementBy || 1; + + return { + fieldName, + incrementBy: initialize ? 0 : incrementBy, + }; + }); const namespace = normalizeNamespace(options.namespace); const time = this._getCurrentTime(); @@ -1553,12 +1622,17 @@ export class SavedObjectsRepository { savedObjectNamespaces = await this.preflightGetNamespaces(type, id, namespace); } + // attributes: { [counterFieldName]: incrementBy }, const migrated = this._migrator.migrateDocument({ id, type, ...(savedObjectNamespace && { namespace: savedObjectNamespace }), ...(savedObjectNamespaces && { namespaces: savedObjectNamespaces }), - attributes: { [counterFieldName]: 1 }, + attributes: normalizedCounterFields.reduce((acc, counterField) => { + const { fieldName, incrementBy } = counterField; + acc[fieldName] = incrementBy; + return acc; + }, {} as Record), migrationVersion, updated_at: time, }); @@ -1573,20 +1647,29 @@ export class SavedObjectsRepository { body: { script: { source: ` - if (ctx._source[params.type][params.counterFieldName] == null) { - ctx._source[params.type][params.counterFieldName] = params.count; - } - else { - ctx._source[params.type][params.counterFieldName] += params.count; + for (int i = 0; i < params.counterFieldNames.length; i++) { + def counterFieldName = params.counterFieldNames[i]; + def count = params.counts[i]; + + if (ctx._source[params.type][counterFieldName] == null) { + ctx._source[params.type][counterFieldName] = count; + } + else { + ctx._source[params.type][counterFieldName] += count; + } } ctx._source.updated_at = params.time; `, lang: 'painless', params: { - count: 1, + counts: normalizedCounterFields.map( + (normalizedCounterField) => normalizedCounterField.incrementBy + ), + counterFieldNames: normalizedCounterFields.map( + (normalizedCounterField) => normalizedCounterField.fieldName + ), time, type, - counterFieldName, }, }, upsert: raw._source, diff --git a/src/core/server/saved_objects/service/lib/utils.test.ts b/src/core/server/saved_objects/service/lib/utils.test.ts index ac06ca92757831..062a68e2dca28a 100644 --- a/src/core/server/saved_objects/service/lib/utils.test.ts +++ b/src/core/server/saved_objects/service/lib/utils.test.ts @@ -17,11 +17,22 @@ * under the License. */ +import uuid from 'uuid'; import { SavedObjectsFindOptions } from '../../types'; import { SavedObjectsUtils } from './utils'; +jest.mock('uuid', () => ({ + v1: jest.fn().mockReturnValue('mock-uuid'), +})); + describe('SavedObjectsUtils', () => { - const { namespaceIdToString, namespaceStringToId, createEmptyFindResponse } = SavedObjectsUtils; + const { + namespaceIdToString, + namespaceStringToId, + createEmptyFindResponse, + generateId, + isRandomId, + } = SavedObjectsUtils; describe('#namespaceIdToString', () => { it('converts `undefined` to default namespace string', () => { @@ -77,4 +88,20 @@ describe('SavedObjectsUtils', () => { expect(createEmptyFindResponse(options).per_page).toEqual(42); }); }); + + describe('#generateId', () => { + it('returns a valid uuid', () => { + expect(generateId()).toBe('mock-uuid'); + expect(uuid.v1).toHaveBeenCalled(); + }); + }); + + describe('#isRandomId', () => { + it('validates uuid correctly', () => { + expect(isRandomId('c4d82f66-3046-11eb-adc1-0242ac120002')).toBe(true); + expect(isRandomId('invalid')).toBe(false); + expect(isRandomId('')).toBe(false); + expect(isRandomId(undefined)).toBe(false); + }); + }); }); diff --git a/src/core/server/saved_objects/service/lib/utils.ts b/src/core/server/saved_objects/service/lib/utils.ts index 69abc370892184..b59829cb4978aa 100644 --- a/src/core/server/saved_objects/service/lib/utils.ts +++ b/src/core/server/saved_objects/service/lib/utils.ts @@ -17,6 +17,7 @@ * under the License. */ +import uuid from 'uuid'; import { SavedObjectsFindOptions } from '../../types'; import { SavedObjectsFindResponse } from '..'; @@ -24,6 +25,7 @@ export const DEFAULT_NAMESPACE_STRING = 'default'; export const ALL_NAMESPACES_STRING = '*'; export const FIND_DEFAULT_PAGE = 1; export const FIND_DEFAULT_PER_PAGE = 20; +const UUID_REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; /** * @public @@ -69,4 +71,21 @@ export class SavedObjectsUtils { total: 0, saved_objects: [], }); + + /** + * Generates a random ID for a saved objects. + */ + public static generateId() { + return uuid.v1(); + } + + /** + * Validates that a saved object ID has been randomly generated. + * + * @param {string} id The ID of a saved object. + * @todo Use `uuid.validate` once upgraded to v5.3+ + */ + public static isRandomId(id: string | undefined) { + return typeof id === 'string' && UUID_REGEX.test(id); + } } diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index a03e5ec9acd275..b65ba329cec1e8 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -160,7 +160,7 @@ import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { Type } from '@kbn/config-schema'; import { TypeOf } from '@kbn/config-schema'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { UpdateDocumentByQueryParams } from 'elasticsearch'; import { UpdateDocumentParams } from 'elasticsearch'; import { URL } from 'url'; @@ -269,9 +269,10 @@ export interface AuthToolkit { // @public export class BasePath { // @internal - constructor(serverBasePath?: string); + constructor(serverBasePath?: string, publicBaseUrl?: string); get: (request: KibanaRequest | LegacyRequest) => string; prepend: (path: string) => string; + readonly publicBaseUrl?: string; remove: (path: string) => string; readonly serverBasePath: string; set: (request: KibanaRequest | LegacyRequest, requestSpecificBasePath: string) => void; @@ -409,7 +410,7 @@ export interface CoreConfigUsageData { }; xsrf: { disableProtection: boolean; - whitelistConfigured: boolean; + allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; @@ -521,7 +522,7 @@ export interface CoreStatus { } // @internal -export interface CoreUsageData { +export interface CoreUsageData extends CoreUsageStats { // (undocumented) config: CoreConfigUsageData; // (undocumented) @@ -535,6 +536,44 @@ export interface CoreUsageDataStart { getCoreUsageData(): Promise; } +// @internal +export interface CoreUsageStats { + // (undocumented) + 'apiCalls.savedObjectsExport.allTypesSelected.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsExport.allTypesSelected.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsExport.kibanaRequest.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsExport.kibanaRequest.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsExport.total'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.createNewCopiesEnabled.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.kibanaRequest.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.kibanaRequest.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.overwriteEnabled.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.overwriteEnabled.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsImport.total'?: number; + // (undocumented) + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsResolveImportErrors.kibanaRequest.no'?: number; + // (undocumented) + 'apiCalls.savedObjectsResolveImportErrors.kibanaRequest.yes'?: number; + // (undocumented) + 'apiCalls.savedObjectsResolveImportErrors.total'?: number; +} + // @public (undocumented) export interface CountResponse { // (undocumented) @@ -824,7 +863,7 @@ export interface HttpResponseOptions { // @public export type HttpResponsePayload = undefined | string | Record | Buffer | Stream; -// @public (undocumented) +// @public export interface HttpServerInfo { hostname: string; name: string; @@ -1324,6 +1363,7 @@ export interface LegacyCallAPIOptions { export class LegacyClusterClient implements ILegacyClusterClient { constructor(config: LegacyElasticsearchClientConfig, log: Logger, getAuthHeaders?: GetAuthHeaders); asScoped(request?: ScopeableRequest): ILegacyScopedClusterClient; + // @deprecated callAsInternalUser: LegacyAPICaller; close(): void; } @@ -1371,7 +1411,9 @@ export interface LegacyRequest extends Request { // @public @deprecated export class LegacyScopedClusterClient implements ILegacyScopedClusterClient { constructor(internalAPICaller: LegacyAPICaller, scopedAPICaller: LegacyAPICaller, headers?: Headers | undefined); + // @deprecated callAsCurrentUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; + // @deprecated callAsInternalUser(endpoint: string, clientParams?: Record, options?: LegacyCallAPIOptions): Promise; } @@ -2364,8 +2406,15 @@ export interface SavedObjectsImportUnsupportedTypeError { type: 'unsupported_type'; } +// @public (undocumented) +export interface SavedObjectsIncrementCounterField { + fieldName: string; + incrementBy?: number; +} + // @public (undocumented) export interface SavedObjectsIncrementCounterOptions extends SavedObjectsBaseOptions { + initialize?: boolean; // (undocumented) migrationVersion?: SavedObjectsMigrationVersion; refresh?: MutatingOperationRefreshSetting; @@ -2444,7 +2493,7 @@ export class SavedObjectsRepository { // (undocumented) find(options: SavedObjectsFindOptions): Promise>; get(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; - incrementCounter(type: string, id: string, counterFieldName: string, options?: SavedObjectsIncrementCounterOptions): Promise; + incrementCounter(type: string, id: string, counterFields: Array, options?: SavedObjectsIncrementCounterOptions): Promise>; removeReferencesTo(type: string, id: string, options?: SavedObjectsRemoveReferencesToOptions): Promise; update(type: string, id: string, attributes: Partial, options?: SavedObjectsUpdateOptions): Promise>; } @@ -2470,7 +2519,7 @@ export interface SavedObjectsResolveImportErrorsOptions { export class SavedObjectsSerializer { // @internal constructor(registry: ISavedObjectTypeRegistry); - generateRawId(namespace: string | undefined, type: string, id?: string): string; + generateRawId(namespace: string | undefined, type: string, id: string): string; isRawSavedObject(rawDoc: SavedObjectsRawDoc): boolean; rawToSavedObject(doc: SavedObjectsRawDoc): SavedObjectSanitizedDoc; savedObjectToRaw(savedObj: SavedObjectSanitizedDoc): SavedObjectsRawDoc; @@ -2552,6 +2601,8 @@ export interface SavedObjectsUpdateResponse extends Omit({ page, perPage, }: SavedObjectsFindOptions) => SavedObjectsFindResponse; + static generateId(): string; + static isRandomId(id: string | undefined): boolean; static namespaceIdToString: (namespace?: string | undefined) => string; static namespaceStringToId: (namespace: string) => string | undefined; } @@ -2749,7 +2800,7 @@ export interface UiSettingsParams { description?: string; // @deprecated metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; name?: string; diff --git a/src/core/server/server.test.ts b/src/core/server/server.test.ts index 0c7ebbcb527ec2..7cc6d108b4cf41 100644 --- a/src/core/server/server.test.ts +++ b/src/core/server/server.test.ts @@ -185,6 +185,7 @@ test(`doesn't setup core services if config validation fails`, async () => { expect(mockElasticsearchService.setup).not.toHaveBeenCalled(); expect(mockPluginsService.setup).not.toHaveBeenCalled(); expect(mockLegacyService.setup).not.toHaveBeenCalled(); + expect(mockSavedObjectsService.stop).not.toHaveBeenCalled(); expect(mockUiSettingsService.setup).not.toHaveBeenCalled(); expect(mockRenderingService.setup).not.toHaveBeenCalled(); expect(mockMetricsService.setup).not.toHaveBeenCalled(); @@ -216,10 +217,10 @@ test(`doesn't setup core services if legacy config validation fails`, async () = expect(mockI18nService.setup).not.toHaveBeenCalled(); }); -test(`doesn't validate config if env.isDevClusterMaster is true`, async () => { +test(`doesn't validate config if env.isDevCliParent is true`, async () => { const devParentEnv = Env.createDefault(REPO_ROOT, { ...getEnvOptions(), - isDevClusterMaster: true, + isDevCliParent: true, }); const server = new Server(rawConfigService, devParentEnv, logger); diff --git a/src/core/server/server.ts b/src/core/server/server.ts index 0f7e8cced999c0..0b3249ad587507 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -31,7 +31,7 @@ import { LegacyService, ensureValidConfiguration } from './legacy'; import { Logger, LoggerFactory, LoggingService, ILoggingSystem } from './logging'; import { UiSettingsService } from './ui_settings'; import { PluginsService, config as pluginsConfig } from './plugins'; -import { SavedObjectsService } from './saved_objects'; +import { SavedObjectsService, SavedObjectsServiceStart } from './saved_objects'; import { MetricsService, opsConfig } from './metrics'; import { CapabilitiesService } from './capabilities'; import { EnvironmentService, config as pidConfig } from './environment'; @@ -78,6 +78,9 @@ export class Server { private readonly coreUsageData: CoreUsageDataService; private readonly i18n: I18nService; + private readonly savedObjectsStartPromise: Promise; + private resolveSavedObjectsStartPromise?: (value: SavedObjectsServiceStart) => void; + #pluginsInitialized?: boolean; private coreStart?: InternalCoreStart; private readonly logger: LoggerFactory; @@ -109,6 +112,10 @@ export class Server { this.logging = new LoggingService(core); this.coreUsageData = new CoreUsageDataService(core); this.i18n = new I18nService(core); + + this.savedObjectsStartPromise = new Promise((resolve) => { + this.resolveSavedObjectsStartPromise = resolve; + }); } public async setup() { @@ -124,7 +131,7 @@ export class Server { const legacyConfigSetup = await this.legacy.setupLegacyConfig(); // rely on dev server to validate config, don't validate in the parent process - if (!this.env.isDevClusterMaster) { + if (!this.env.isDevCliParent) { // Immediately terminate in case of invalid configuration // This needs to be done after plugin discovery await this.configService.validate(); @@ -155,9 +162,17 @@ export class Server { http: httpSetup, }); + const metricsSetup = await this.metrics.setup({ http: httpSetup }); + + const coreUsageDataSetup = this.coreUsageData.setup({ + metrics: metricsSetup, + savedObjectsStartPromise: this.savedObjectsStartPromise, + }); + const savedObjectsSetup = await this.savedObjects.setup({ http: httpSetup, elasticsearch: elasticsearchServiceSetup, + coreUsageData: coreUsageDataSetup, }); const uiSettingsSetup = await this.uiSettings.setup({ @@ -165,8 +180,6 @@ export class Server { savedObjects: savedObjectsSetup, }); - const metricsSetup = await this.metrics.setup({ http: httpSetup }); - const statusSetup = await this.status.setup({ elasticsearch: elasticsearchServiceSetup, pluginDependencies: pluginTree.asNames, @@ -191,8 +204,6 @@ export class Server { loggingSystem: this.loggingSystem, }); - this.coreUsageData.setup({ metrics: metricsSetup }); - const coreSetup: InternalCoreSetup = { capabilities: capabilitiesSetup, context: contextServiceSetup, @@ -235,6 +246,8 @@ export class Server { elasticsearch: elasticsearchStart, pluginsInitialized: this.#pluginsInitialized, }); + await this.resolveSavedObjectsStartPromise!(savedObjectsStart); + soStartSpan?.end(); const capabilitiesStart = this.capabilities.start(); const uiSettingsStart = await this.uiSettings.start(); diff --git a/src/core/server/ui_settings/cache.test.ts b/src/core/server/ui_settings/cache.test.ts new file mode 100644 index 00000000000000..ea375751fe4372 --- /dev/null +++ b/src/core/server/ui_settings/cache.test.ts @@ -0,0 +1,50 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { Cache } from './cache'; + +describe('Cache', () => { + beforeEach(() => { + jest.useFakeTimers(); + }); + + afterEach(() => { + jest.clearAllTimers(); + }); + it('stores value for maxAge ms', async () => { + const cache = new Cache(500); + cache.set(42); + expect(cache.get()).toBe(42); + jest.advanceTimersByTime(100); + expect(cache.get()).toBe(42); + }); + it('invalidates cache after maxAge ms', async () => { + const cache = new Cache(500); + cache.set(42); + expect(cache.get()).toBe(42); + jest.advanceTimersByTime(1000); + expect(cache.get()).toBe(null); + }); + it('del invalidates cache immediately', async () => { + const cache = new Cache(10); + cache.set(42); + expect(cache.get()).toBe(42); + cache.del(); + expect(cache.get()).toBe(null); + }); +}); diff --git a/src/core/server/ui_settings/cache.ts b/src/core/server/ui_settings/cache.ts new file mode 100644 index 00000000000000..697cf2b284c785 --- /dev/null +++ b/src/core/server/ui_settings/cache.ts @@ -0,0 +1,48 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +const oneSec = 1000; +const defMaxAge = 5 * oneSec; +/** + * @internal + */ +export class Cache> { + private value: T | null; + private timer?: NodeJS.Timeout; + + /** + * Delete cached value after maxAge ms. + */ + constructor(private readonly maxAge: number = defMaxAge) { + this.value = null; + } + get() { + return this.value; + } + set(value: T) { + this.del(); + this.value = value; + this.timer = setTimeout(() => this.del(), this.maxAge); + } + del() { + if (this.timer) { + clearTimeout(this.timer); + } + this.value = null; + } +} diff --git a/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts b/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts index 10a30db038174d..3f61db42926040 100644 --- a/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts +++ b/src/core/server/ui_settings/create_or_upgrade_saved_config/create_or_upgrade_saved_config.test.ts @@ -19,10 +19,10 @@ import Chance from 'chance'; +import { getUpgradeableConfigMock } from './get_upgradeable_config.test.mock'; import { SavedObjectsErrorHelpers } from '../../saved_objects'; import { savedObjectsClientMock } from '../../saved_objects/service/saved_objects_client.mock'; import { loggingSystemMock } from '../../logging/logging_system.mock'; -import { getUpgradeableConfigMock } from './get_upgradeable_config.test.mock'; import { createOrUpgradeSavedConfig } from './create_or_upgrade_saved_config'; diff --git a/src/core/server/ui_settings/ui_settings_client.test.ts b/src/core/server/ui_settings/ui_settings_client.test.ts index a38fb2ab7e06c6..8238511e27ed9e 100644 --- a/src/core/server/ui_settings/ui_settings_client.test.ts +++ b/src/core/server/ui_settings/ui_settings_client.test.ts @@ -676,4 +676,111 @@ describe('ui settings', () => { expect(uiSettings.isOverridden('bar')).toBe(true); }); }); + + describe('caching', () => { + describe('read operations cache user config', () => { + beforeEach(() => { + jest.useFakeTimers(); + }); + + afterEach(() => { + jest.clearAllTimers(); + }); + + it('get', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.get('any'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime(10000); + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + + it('getAll', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.getAll(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.getAll(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime(10000); + await uiSettings.getAll(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + + it('getUserProvided', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.getUserProvided(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.getUserProvided(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + jest.advanceTimersByTime(10000); + await uiSettings.getUserProvided(); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + }); + + describe('write operations invalidate user config cache', () => { + it('set', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.get('any'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.set('foo', 'bar'); + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + + it('setMany', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.get('any'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.setMany({ foo: 'bar' }); + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + + it('remove', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.get('any'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.remove('foo'); + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + + it('removeMany', async () => { + const esDocSource = {}; + const { uiSettings, savedObjectsClient } = setup({ esDocSource }); + + await uiSettings.get('any'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(1); + + await uiSettings.removeMany(['foo', 'bar']); + await uiSettings.get('foo'); + expect(savedObjectsClient.get).toHaveBeenCalledTimes(2); + }); + }); + }); }); diff --git a/src/core/server/ui_settings/ui_settings_client.ts b/src/core/server/ui_settings/ui_settings_client.ts index f168784a933305..ab5fca9f810310 100644 --- a/src/core/server/ui_settings/ui_settings_client.ts +++ b/src/core/server/ui_settings/ui_settings_client.ts @@ -24,6 +24,7 @@ import { Logger } from '../logging'; import { createOrUpgradeSavedConfig } from './create_or_upgrade_saved_config'; import { IUiSettingsClient, UiSettingsParams, PublicUiSettingsParams } from './types'; import { CannotOverrideError } from './ui_settings_errors'; +import { Cache } from './cache'; export interface UiSettingsServiceOptions { type: string; @@ -36,7 +37,6 @@ export interface UiSettingsServiceOptions { } interface ReadOptions { - ignore401Errors?: boolean; autoCreateOrUpgradeIfMissing?: boolean; } @@ -58,6 +58,7 @@ export class UiSettingsClient implements IUiSettingsClient { private readonly overrides: NonNullable; private readonly defaults: NonNullable; private readonly log: Logger; + private readonly cache: Cache; constructor(options: UiSettingsServiceOptions) { const { type, id, buildNum, savedObjectsClient, log, defaults = {}, overrides = {} } = options; @@ -69,6 +70,7 @@ export class UiSettingsClient implements IUiSettingsClient { this.defaults = defaults; this.overrides = overrides; this.log = log; + this.cache = new Cache(); } getRegistered() { @@ -95,7 +97,12 @@ export class UiSettingsClient implements IUiSettingsClient { } async getUserProvided(): Promise> { - const userProvided: UserProvided = this.onReadHook(await this.read()); + const cachedValue = this.cache.get(); + if (cachedValue) { + return cachedValue; + } + + const userProvided: UserProvided = this.onReadHook(await this.read()); // write all overridden keys, dropping the userValue is override is null and // adding keys for overrides that are not in saved object @@ -104,10 +111,13 @@ export class UiSettingsClient implements IUiSettingsClient { value === null ? { isOverridden: true } : { isOverridden: true, userValue: value }; } + this.cache.set(userProvided); + return userProvided; } async setMany(changes: Record) { + this.cache.del(); this.onWriteHook(changes); await this.write({ changes }); } @@ -140,7 +150,7 @@ export class UiSettingsClient implements IUiSettingsClient { private async getRaw(): Promise { const userProvided = await this.getUserProvided(); - return defaultsDeep(userProvided, this.defaults); + return defaultsDeep({}, userProvided, this.defaults); } private validateKey(key: string, value: unknown) { @@ -209,10 +219,9 @@ export class UiSettingsClient implements IUiSettingsClient { } } - private async read({ - ignore401Errors = false, - autoCreateOrUpgradeIfMissing = true, - }: ReadOptions = {}): Promise> { + private async read({ autoCreateOrUpgradeIfMissing = true }: ReadOptions = {}): Promise< + Record + > { try { const resp = await this.savedObjectsClient.get>(this.type, this.id); return resp.attributes; @@ -227,16 +236,13 @@ export class UiSettingsClient implements IUiSettingsClient { }); if (!failedUpgradeAttributes) { - return await this.read({ - ignore401Errors, - autoCreateOrUpgradeIfMissing: false, - }); + return await this.read({ autoCreateOrUpgradeIfMissing: false }); } return failedUpgradeAttributes; } - if (this.isIgnorableError(error, ignore401Errors)) { + if (this.isIgnorableError(error)) { return {}; } @@ -244,17 +250,9 @@ export class UiSettingsClient implements IUiSettingsClient { } } - private isIgnorableError(error: Error, ignore401Errors: boolean) { - const { - isForbiddenError, - isEsUnavailableError, - isNotAuthorizedError, - } = this.savedObjectsClient.errors; - - return ( - isForbiddenError(error) || - isEsUnavailableError(error) || - (ignore401Errors && isNotAuthorizedError(error)) - ); + private isIgnorableError(error: Error) { + const { isForbiddenError, isEsUnavailableError } = this.savedObjectsClient.errors; + + return isForbiddenError(error) || isEsUnavailableError(error); } } diff --git a/src/core/server/utils/index.ts b/src/core/server/utils/index.ts index d9c4217c4117f7..b01a4c4e048998 100644 --- a/src/core/server/utils/index.ts +++ b/src/core/server/utils/index.ts @@ -20,4 +20,3 @@ export * from './crypto'; export * from './from_root'; export * from './package_json'; -export * from './streams'; diff --git a/src/core/server/utils/streams/index.ts b/src/core/server/utils/streams/index.ts deleted file mode 100644 index 447d1ed5b1c535..00000000000000 --- a/src/core/server/utils/streams/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { concatStreamProviders } from './concat_stream_providers'; -export { createIntersperseStream } from './intersperse_stream'; -export { createSplitStream } from './split_stream'; -export { createListStream } from './list_stream'; -export { createReduceStream } from './reduce_stream'; -export { createPromiseFromStreams } from './promise_from_streams'; -export { createConcatStream } from './concat_stream'; -export { createMapStream } from './map_stream'; -export { createReplaceStream } from './replace_stream'; -export { createFilterStream } from './filter_stream'; diff --git a/src/core/test_helpers/kbn_server.ts b/src/core/test_helpers/kbn_server.ts index 93a173cdbdece4..4ff845596f741d 100644 --- a/src/core/test_helpers/kbn_server.ts +++ b/src/core/test_helpers/kbn_server.ts @@ -70,11 +70,9 @@ export function createRootWithSettings( configs: [], cliArgs: { dev: false, - open: false, quiet: false, silent: false, watch: false, - repl: false, basePath: false, runExamples: false, oss: true, @@ -83,7 +81,7 @@ export function createRootWithSettings( dist: false, ...cliArgs, }, - isDevClusterMaster: false, + isDevCliParent: false, }); return new Root( diff --git a/src/core/tsconfig.json b/src/core/tsconfig.json index 4281559c9aa140..e8a82ee533f11f 100644 --- a/src/core/tsconfig.json +++ b/src/core/tsconfig.json @@ -14,8 +14,5 @@ "test_helpers/**/*", "utils/**/*", "index.ts" - ], - "references": [ - { "path": "../test_utils/" } ] } diff --git a/src/core/types/ui_settings.ts b/src/core/types/ui_settings.ts index 0b7a8e1efd9df7..3f230d04e4d60d 100644 --- a/src/core/types/ui_settings.ts +++ b/src/core/types/ui_settings.ts @@ -17,7 +17,7 @@ * under the License. */ import { Type } from '@kbn/config-schema'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; /** * UI element type to represent the settings. @@ -87,7 +87,7 @@ export interface UiSettingsParams { * Temporary measure until https://github.com/elastic/kibana/issues/83084 is in place */ metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; } diff --git a/src/dev/build/lib/watch_stdio_for_line.ts b/src/dev/build/lib/watch_stdio_for_line.ts index c97b1c3b26db55..38e0a93ae131fc 100644 --- a/src/dev/build/lib/watch_stdio_for_line.ts +++ b/src/dev/build/lib/watch_stdio_for_line.ts @@ -20,11 +20,7 @@ import { Transform } from 'stream'; import { ExecaChildProcess } from 'execa'; -import { - createPromiseFromStreams, - createSplitStream, - createMapStream, -} from '../../../core/server/utils'; +import { createPromiseFromStreams, createSplitStream, createMapStream } from '@kbn/utils'; // creates a stream that skips empty lines unless they are followed by // another line, preventing the empty lines produced by splitStream diff --git a/src/dev/build/tasks/bin/scripts/kibana-keystore.bat b/src/dev/build/tasks/bin/scripts/kibana-keystore.bat index 2214769efc410f..c40145e7d68171 100755 --- a/src/dev/build/tasks/bin/scripts/kibana-keystore.bat +++ b/src/dev/build/tasks/bin/scripts/kibana-keystore.bat @@ -14,11 +14,11 @@ If Not Exist "%NODE%" ( set CONFIG_DIR=%KBN_PATH_CONF% If [%KBN_PATH_CONF%] == [] ( - set CONFIG_DIR=%DIR%\config + set "CONFIG_DIR=%DIR%\config" ) IF EXIST "%CONFIG_DIR%\node.options" ( - for /F "eol=# tokens=*" %%i in (%CONFIG_DIR%\node.options) do ( + for /F "usebackq eol=# tokens=*" %%i in ("%CONFIG_DIR%\node.options") do ( If [!NODE_OPTIONS!] == [] ( set "NODE_OPTIONS=%%i" ) Else ( diff --git a/src/dev/build/tasks/bin/scripts/kibana-plugin.bat b/src/dev/build/tasks/bin/scripts/kibana-plugin.bat index 0a6d135565e500..d1282f8cf32ac5 100755 --- a/src/dev/build/tasks/bin/scripts/kibana-plugin.bat +++ b/src/dev/build/tasks/bin/scripts/kibana-plugin.bat @@ -15,11 +15,11 @@ If Not Exist "%NODE%" ( set CONFIG_DIR=%KBN_PATH_CONF% If [%KBN_PATH_CONF%] == [] ( - set CONFIG_DIR=%DIR%\config + set "CONFIG_DIR=%DIR%\config" ) IF EXIST "%CONFIG_DIR%\node.options" ( - for /F "eol=# tokens=*" %%i in (%CONFIG_DIR%\node.options) do ( + for /F "usebackq eol=# tokens=*" %%i in ("%CONFIG_DIR%\node.options") do ( If [!NODE_OPTIONS!] == [] ( set "NODE_OPTIONS=%%i" ) Else ( diff --git a/src/dev/build/tasks/bin/scripts/kibana.bat b/src/dev/build/tasks/bin/scripts/kibana.bat index 19bf8157ed7c8a..4fc62804ca9a13 100755 --- a/src/dev/build/tasks/bin/scripts/kibana.bat +++ b/src/dev/build/tasks/bin/scripts/kibana.bat @@ -16,11 +16,11 @@ If Not Exist "%NODE%" ( set CONFIG_DIR=%KBN_PATH_CONF% If [%KBN_PATH_CONF%] == [] ( - set CONFIG_DIR=%DIR%\config + set "CONFIG_DIR=%DIR%\config" ) IF EXIST "%CONFIG_DIR%\node.options" ( - for /F "eol=# tokens=*" %%i in (%CONFIG_DIR%\node.options) do ( + for /F "usebackq eol=# tokens=*" %%i in ("%CONFIG_DIR%\node.options") do ( If [!NODE_OPTIONS!] == [] ( set "NODE_OPTIONS=%%i" ) Else ( diff --git a/src/dev/build/tasks/copy_source_task.ts b/src/dev/build/tasks/copy_source_task.ts index b0ace3c63d82ed..710e504e588685 100644 --- a/src/dev/build/tasks/copy_source_task.ts +++ b/src/dev/build/tasks/copy_source_task.ts @@ -33,7 +33,6 @@ export const CopySource: Task = { '!src/**/{target,__tests__,__snapshots__,__mocks__}/**', '!src/test_utils/**', '!src/fixtures/**', - '!src/cli/cluster/**', '!src/cli/repl/**', '!src/cli/dev.js', '!src/functional_test_runner/**', diff --git a/src/dev/build/tasks/nodejs/download_node_builds_task.ts b/src/dev/build/tasks/nodejs/download_node_builds_task.ts index ad42ea11436f55..93ad599e41e404 100644 --- a/src/dev/build/tasks/nodejs/download_node_builds_task.ts +++ b/src/dev/build/tasks/nodejs/download_node_builds_task.ts @@ -25,7 +25,7 @@ export const DownloadNodeBuilds: GlobalTask = { global: true, description: 'Downloading node.js builds for all platforms', async run(config, log) { - const shasums = await getNodeShasums(config.getNodeVersion()); + const shasums = await getNodeShasums(log, config.getNodeVersion()); await Promise.all( config.getNodePlatforms().map(async (platform) => { const { url, downloadPath, downloadName } = getNodeDownloadInfo(config, platform); diff --git a/src/dev/build/tasks/nodejs/node_shasums.test.ts b/src/dev/build/tasks/nodejs/node_shasums.test.ts index 08ac823c7ebf03..53d073afd64991 100644 --- a/src/dev/build/tasks/nodejs/node_shasums.test.ts +++ b/src/dev/build/tasks/nodejs/node_shasums.test.ts @@ -70,11 +70,12 @@ jest.mock('axios', () => ({ }, })); +import { ToolingLog } from '@kbn/dev-utils'; import { getNodeShasums } from './node_shasums'; describe('src/dev/build/tasks/nodejs/node_shasums', () => { it('resolves to an object with shasums for node downloads for version', async () => { - const shasums = await getNodeShasums('8.9.4'); + const shasums = await getNodeShasums(new ToolingLog(), '8.9.4'); expect(shasums).toEqual( expect.objectContaining({ 'node-v8.9.4.tar.gz': '729b44b32b2f82ecd5befac4f7518de0c4e3add34e8fe878f745740a66cbbc01', diff --git a/src/dev/build/tasks/nodejs/node_shasums.ts b/src/dev/build/tasks/nodejs/node_shasums.ts index e0926aa3e49e4b..0f506dff4fd884 100644 --- a/src/dev/build/tasks/nodejs/node_shasums.ts +++ b/src/dev/build/tasks/nodejs/node_shasums.ts @@ -18,10 +18,13 @@ */ import axios from 'axios'; +import { ToolingLog } from '@kbn/dev-utils'; -export async function getNodeShasums(nodeVersion: string) { +export async function getNodeShasums(log: ToolingLog, nodeVersion: string) { const url = `https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v${nodeVersion}/SHASUMS256.txt`; + log.debug('Downloading shasum values for node version', nodeVersion, 'from', url); + const { status, data } = await axios.get(url); if (status !== 200) { diff --git a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts index 9b03dcd828cf9c..5b3c1bad749300 100644 --- a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts @@ -45,6 +45,7 @@ const testWriter = new ToolingLogCollectingWriter(); log.setWriters([testWriter]); expect.addSnapshotSerializer(createAnyInstanceSerializer(Config)); +expect.addSnapshotSerializer(createAnyInstanceSerializer(ToolingLog)); const nodeVersion = Fs.readFileSync(Path.resolve(REPO_ROOT, '.node-version'), 'utf8').trim(); expect.addSnapshotSerializer( @@ -100,6 +101,7 @@ it('checks shasums for each downloaded node build', async () => { [MockFunction] { "calls": Array [ Array [ + , "", ], ], diff --git a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.ts b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.ts index 9ce0778d2d1f08..50684d866cbf51 100644 --- a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.ts +++ b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.ts @@ -25,7 +25,7 @@ export const VerifyExistingNodeBuilds: GlobalTask = { global: true, description: 'Verifying previously downloaded node.js build for all platforms', async run(config, log) { - const shasums = await getNodeShasums(config.getNodeVersion()); + const shasums = await getNodeShasums(log, config.getNodeVersion()); await Promise.all( config.getNodePlatforms().map(async (platform) => { diff --git a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts index 4580b95423d3d7..0e554162bca862 100644 --- a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts +++ b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts @@ -25,12 +25,19 @@ export const CreateDebPackage: Task = { description: 'Creating deb package', async run(config, log, build) { - await runFpm(config, log, build, 'deb', [ + await runFpm(config, log, build, 'deb', 'x64', [ '--architecture', 'amd64', '--deb-priority', 'optional', ]); + + await runFpm(config, log, build, 'deb', 'arm64', [ + '--architecture', + 'arm64', + '--deb-priority', + 'optional', + ]); }, }; @@ -38,7 +45,18 @@ export const CreateRpmPackage: Task = { description: 'Creating rpm package', async run(config, log, build) { - await runFpm(config, log, build, 'rpm', ['--architecture', 'x86_64', '--rpm-os', 'linux']); + await runFpm(config, log, build, 'rpm', 'x64', [ + '--architecture', + 'x86_64', + '--rpm-os', + 'linux', + ]); + await runFpm(config, log, build, 'rpm', 'arm64', [ + '--architecture', + 'aarch64', + '--rpm-os', + 'linux', + ]); }, }; diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker index 4c833f5be6c5b6..3e440c89b82d88 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/bin/kibana-docker @@ -166,6 +166,9 @@ kibana_vars=( xpack.code.security.gitProtocolWhitelist xpack.encryptedSavedObjects.encryptionKey xpack.encryptedSavedObjects.keyRotation.decryptionOnlyKeys + xpack.fleet.agents.elasticsearch.host + xpack.fleet.agents.kibana.host + xpack.fleet.agents.tlsCheckDisabled xpack.graph.enabled xpack.graph.canEditDrillDownUrls xpack.graph.savePolicy diff --git a/src/dev/build/tasks/os_packages/run_fpm.ts b/src/dev/build/tasks/os_packages/run_fpm.ts index def0289f536417..15606e40259c60 100644 --- a/src/dev/build/tasks/os_packages/run_fpm.ts +++ b/src/dev/build/tasks/os_packages/run_fpm.ts @@ -28,9 +28,10 @@ export async function runFpm( log: ToolingLog, build: Build, type: 'rpm' | 'deb', + architecture: 'arm64' | 'x64', pkgSpecificFlags: string[] ) { - const linux = config.getPlatform('linux', 'x64'); + const linux = config.getPlatform('linux', architecture); const version = config.getBuildVersion(); const resolveWithTrailingSlash = (...paths: string[]) => `${resolve(...paths)}/`; diff --git a/src/dev/build/tasks/os_packages/service_templates/systemd/etc/systemd/system/kibana.service b/src/dev/build/tasks/os_packages/service_templates/systemd/usr/lib/systemd/system/kibana.service similarity index 100% rename from src/dev/build/tasks/os_packages/service_templates/systemd/etc/systemd/system/kibana.service rename to src/dev/build/tasks/os_packages/service_templates/systemd/usr/lib/systemd/system/kibana.service diff --git a/src/dev/build/tasks/patch_native_modules_task.ts b/src/dev/build/tasks/patch_native_modules_task.ts index c3011fa80988c4..0819123138d0f3 100644 --- a/src/dev/build/tasks/patch_native_modules_task.ts +++ b/src/dev/build/tasks/patch_native_modules_task.ts @@ -46,17 +46,32 @@ const packages: Package[] = [ destinationPath: 'node_modules/re2/build/Release/re2.node', extractMethod: 'gunzip', archives: { - darwin: { - url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/darwin-x64-72.gz', - sha256: '983106049bb86e21b7f823144b2b83e3f1408217401879b3cde0312c803512c9', + 'darwin-x64': { + url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/darwin-x64-83.gz', + sha256: 'b45cd8296fd6eb2a091399c20111af43093ba30c99ed9e5d969278f5ff69ba8f', }, - linux: { - url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/linux-x64-72.gz', - sha256: '8b6692037f7b0df24dabc9c9b039038d1c3a3110f62121616b406c482169710a', + 'linux-x64': { + url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/linux-x64-83.gz', + sha256: '1bbc3f90f0ba105772b37c04e3a718f69544b4df01dda00435c2b8e50b2ad0d9', }, - win32: { - url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/win32-x64-72.gz', - sha256: '0a6991e693577160c3e9a3f196bd2518368c52d920af331a1a183313e0175604', + + // ARM build is currently done manually as Github Actions used in upstream project + // do not natively support an ARM target. + + // From a AWS Graviton instance: + // * checkout the node-re2 project, + // * install Node using the same minor used by Kibana + // * npm install, which will also create a build + // * gzip -c build/Release/re2.node > linux-arm64-83.gz + // * upload to kibana-ci-proxy-cache bucket + 'linux-arm64': { + url: + 'https://storage.googleapis.com/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.15.4/linux-arm64-83.gz', + sha256: '4eb524ca9a79dea9c07342e487fbe91591166fdbc022ae987104840df948a4e9', + }, + 'win32-x64': { + url: 'https://github.com/uhop/node-re2/releases/download/1.15.4/win32-x64-83.gz', + sha256: 'efe939d3cda1d64ee3ee3e60a20613b95166d55632e702c670763ea7e69fca06', }, }, }, @@ -84,7 +99,7 @@ async function patchModule( `Can't patch ${pkg.name}'s native module, we were expecting version ${pkg.version} and found ${installedVersion}` ); } - const platformName = platform.getName(); + const platformName = platform.getNodeArch(); const archive = pkg.archives[platformName]; const archiveName = path.basename(archive.url); const downloadPath = config.resolveFromRepo(DOWNLOAD_DIRECTORY, pkg.name, archiveName); diff --git a/src/dev/ci_setup/setup.sh b/src/dev/ci_setup/setup.sh index aabc1e75b90255..61f578ba339715 100755 --- a/src/dev/ci_setup/setup.sh +++ b/src/dev/ci_setup/setup.sh @@ -14,7 +14,7 @@ echo " -- TEST_ES_SNAPSHOT_VERSION='$TEST_ES_SNAPSHOT_VERSION'" ### install dependencies ### echo " -- installing node.js dependencies" -yarn kbn bootstrap --prefer-offline +yarn kbn bootstrap ### ### Download es snapshots diff --git a/src/dev/cli_dev_mode/README.md b/src/dev/cli_dev_mode/README.md new file mode 100644 index 00000000000000..397017027a52f1 --- /dev/null +++ b/src/dev/cli_dev_mode/README.md @@ -0,0 +1,33 @@ +# `CliDevMode` + +A class that manages the alternate behavior of the Kibana cli when using the `--dev` flag. This mode provides several useful features in a single CLI for a nice developer experience: + + - automatic server restarts when code changes + - runs the `@kbn/optimizer` to build browser bundles + - runs a base path proxy which helps developers test that they are writing code which is compatible with custom basePath settings while they work + - pauses requests when the server or optimizer are not ready to handle requests so that when users load Kibana in the browser it's always using the code as it exists on disk + +To accomplish this, and to make it easier to test, the `CliDevMode` class manages several objects: + +## `Watcher` + +The `Watcher` manages a [chokidar](https://github.com/paulmillr/chokidar) instance to watch the server files, logs about file changes observed and provides an observable to the `DevServer` via its `serverShouldRestart$()` method. + +## `DevServer` + +The `DevServer` object is responsible for everything related to running and restarting the Kibana server process: + - listens to restart notifications from the `Watcher` object, sending `SIGKILL` to the existing server and launching a new instance with the current code + - writes the stdout/stderr logs from the Kibana server to the parent process + - gracefully kills the process if the SIGINT signal is sent + - kills the server if the SIGTERM signal is sent, process.exit() is used, a second SIGINT is sent, or the gracefull shutdown times out + - proxies SIGHUP notifications to the child process, though the core team is working on migrating this functionality to the KP and making this unnecessary + +## `Optimizer` + +The `Optimizer` object manages a `@kbn/optimizer` instance, adapting its configuration and logging to the data available to the CLI. + +## `BasePathProxyServer` (currently passed from core) + +The `BasePathProxyServer` is passed to the `CliDevMode` from core when the dev mode is trigged by the `--dev` flag. This proxy injects a random three character base path in the URL that Kibana is served from to help ensure that Kibana features are written to adapt to custom base path configurations from users. + +The basePathProxy also has another important job, ensuring that requests don't fail because the server is restarting and that the browser receives front-end assets containing all saved changes. We accomplish this by observing the ready state of the `Optimizer` and `DevServer` objects and pausing all requests through the proxy until both objects report that they aren't building/restarting based on recently saved changes. \ No newline at end of file diff --git a/src/dev/cli_dev_mode/cli_dev_mode.test.ts b/src/dev/cli_dev_mode/cli_dev_mode.test.ts new file mode 100644 index 00000000000000..a6905df8d0c27f --- /dev/null +++ b/src/dev/cli_dev_mode/cli_dev_mode.test.ts @@ -0,0 +1,404 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Path from 'path'; + +import { + REPO_ROOT, + createAbsolutePathSerializer, + createAnyInstanceSerializer, +} from '@kbn/dev-utils'; +import * as Rx from 'rxjs'; + +import { TestLog } from './log'; +import { CliDevMode } from './cli_dev_mode'; + +expect.addSnapshotSerializer(createAbsolutePathSerializer()); +expect.addSnapshotSerializer(createAnyInstanceSerializer(Rx.Observable, 'Rx.Observable')); +expect.addSnapshotSerializer(createAnyInstanceSerializer(TestLog)); + +jest.mock('./watcher'); +const { Watcher } = jest.requireMock('./watcher'); + +jest.mock('./optimizer'); +const { Optimizer } = jest.requireMock('./optimizer'); + +jest.mock('./dev_server'); +const { DevServer } = jest.requireMock('./dev_server'); + +jest.mock('./get_server_watch_paths', () => ({ + getServerWatchPaths: jest.fn(() => ({ + watchPaths: [''], + ignorePaths: [''], + })), +})); + +beforeEach(() => { + process.argv = ['node', './script', 'foo', 'bar', 'baz']; + jest.clearAllMocks(); +}); + +const log = new TestLog(); + +const mockBasePathProxy = { + targetPort: 9999, + basePath: '/foo/bar', + start: jest.fn(), + stop: jest.fn(), +}; + +const defaultOptions = { + cache: true, + disableOptimizer: false, + dist: true, + oss: true, + pluginPaths: [], + pluginScanDirs: [Path.resolve(REPO_ROOT, 'src/plugins')], + quiet: false, + silent: false, + runExamples: false, + watch: true, + log, +}; + +afterEach(() => { + log.messages.length = 0; +}); + +it('passes correct args to sub-classes', () => { + new CliDevMode(defaultOptions); + + expect(DevServer.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Object { + "argv": Array [ + "foo", + "bar", + "baz", + ], + "gracefulTimeout": 5000, + "log": , + "mapLogLine": [Function], + "script": /scripts/kibana, + "watcher": Watcher { + "serverShouldRestart$": [MockFunction], + }, + }, + ], + ] + `); + expect(Optimizer.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Object { + "cache": true, + "dist": true, + "enabled": true, + "oss": true, + "pluginPaths": Array [], + "quiet": false, + "repoRoot": , + "runExamples": false, + "silent": false, + "watch": true, + }, + ], + ] + `); + expect(Watcher.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Object { + "cwd": , + "enabled": true, + "ignore": Array [ + "", + ], + "log": , + "paths": Array [ + "", + ], + }, + ], + ] + `); + expect(log.messages).toMatchInlineSnapshot(`Array []`); +}); + +it('disables the optimizer', () => { + new CliDevMode({ + ...defaultOptions, + disableOptimizer: true, + }); + + expect(Optimizer.mock.calls[0][0]).toHaveProperty('enabled', false); +}); + +it('disables the watcher', () => { + new CliDevMode({ + ...defaultOptions, + watch: false, + }); + + expect(Optimizer.mock.calls[0][0]).toHaveProperty('watch', false); + expect(Watcher.mock.calls[0][0]).toHaveProperty('enabled', false); +}); + +it('overrides the basePath of the server when basePathProxy is defined', () => { + new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }); + + expect(DevServer.mock.calls[0][0].argv).toMatchInlineSnapshot(` + Array [ + "foo", + "bar", + "baz", + "--server.port=9999", + "--server.basePath=/foo/bar", + "--server.rewriteBasePath=true", + ] + `); +}); + +describe('#start()/#stop()', () => { + let optimizerRun$: Rx.Subject; + let optimizerReady$: Rx.Subject; + let watcherRun$: Rx.Subject; + let devServerRun$: Rx.Subject; + let devServerReady$: Rx.Subject; + let processExitMock: jest.SpyInstance; + + beforeAll(() => { + processExitMock = jest.spyOn(process, 'exit').mockImplementation( + // @ts-expect-error process.exit isn't supposed to return + () => {} + ); + }); + + beforeEach(() => { + Optimizer.mockImplementation(() => { + optimizerRun$ = new Rx.Subject(); + optimizerReady$ = new Rx.Subject(); + return { + isReady$: jest.fn(() => optimizerReady$), + run$: optimizerRun$, + }; + }); + Watcher.mockImplementation(() => { + watcherRun$ = new Rx.Subject(); + return { + run$: watcherRun$, + }; + }); + DevServer.mockImplementation(() => { + devServerRun$ = new Rx.Subject(); + devServerReady$ = new Rx.Subject(); + return { + isReady$: jest.fn(() => devServerReady$), + run$: devServerRun$, + }; + }); + }); + + afterEach(() => { + Optimizer.mockReset(); + Watcher.mockReset(); + DevServer.mockReset(); + }); + + afterAll(() => { + processExitMock.mockRestore(); + }); + + it('logs a warning if basePathProxy is not passed', () => { + new CliDevMode({ + ...defaultOptions, + }).start(); + + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "no-base-path", + "====================================================================================================", + ], + "type": "warn", + }, + Object { + "args": Array [ + "no-base-path", + "Running Kibana in dev mode with --no-base-path disables several useful features and is not recommended", + ], + "type": "warn", + }, + Object { + "args": Array [ + "no-base-path", + "====================================================================================================", + ], + "type": "warn", + }, + ] + `); + }); + + it('calls start on BasePathProxy if enabled', () => { + const basePathProxy: any = { + start: jest.fn(), + }; + + new CliDevMode({ + ...defaultOptions, + basePathProxy, + }).start(); + + expect(basePathProxy.start.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Object { + "delayUntil": [Function], + "shouldRedirectFromOldBasePath": [Function], + }, + ], + ] + `); + }); + + it('subscribes to Optimizer#run$, Watcher#run$, and DevServer#run$', () => { + new CliDevMode(defaultOptions).start(); + + expect(optimizerRun$.observers).toHaveLength(1); + expect(watcherRun$.observers).toHaveLength(1); + expect(devServerRun$.observers).toHaveLength(1); + }); + + it('logs an error and exits the process if Optimizer#run$ errors', () => { + new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }).start(); + + expect(processExitMock).not.toHaveBeenCalled(); + optimizerRun$.error({ stack: 'Error: foo bar' }); + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "[@kbn/optimizer] fatal error", + "Error: foo bar", + ], + "type": "bad", + }, + ] + `); + expect(processExitMock.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + 1, + ], + ] + `); + }); + + it('logs an error and exits the process if Watcher#run$ errors', () => { + new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }).start(); + + expect(processExitMock).not.toHaveBeenCalled(); + watcherRun$.error({ stack: 'Error: foo bar' }); + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "[watcher] fatal error", + "Error: foo bar", + ], + "type": "bad", + }, + ] + `); + expect(processExitMock.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + 1, + ], + ] + `); + }); + + it('logs an error and exits the process if DevServer#run$ errors', () => { + new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }).start(); + + expect(processExitMock).not.toHaveBeenCalled(); + devServerRun$.error({ stack: 'Error: foo bar' }); + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "[dev server] fatal error", + "Error: foo bar", + ], + "type": "bad", + }, + ] + `); + expect(processExitMock.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + 1, + ], + ] + `); + }); + + it('throws if start() has already been called', () => { + expect(() => { + const devMode = new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }); + + devMode.start(); + devMode.start(); + }).toThrowErrorMatchingInlineSnapshot(`"CliDevMode already started"`); + }); + + it('unsubscribes from all observables and stops basePathProxy when stopped', () => { + const devMode = new CliDevMode({ + ...defaultOptions, + basePathProxy: mockBasePathProxy as any, + }); + + devMode.start(); + devMode.stop(); + + expect(optimizerRun$.observers).toHaveLength(0); + expect(watcherRun$.observers).toHaveLength(0); + expect(devServerRun$.observers).toHaveLength(0); + expect(mockBasePathProxy.stop).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/dev/cli_dev_mode/cli_dev_mode.ts b/src/dev/cli_dev_mode/cli_dev_mode.ts new file mode 100644 index 00000000000000..58d5e499f189b7 --- /dev/null +++ b/src/dev/cli_dev_mode/cli_dev_mode.ts @@ -0,0 +1,254 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Path from 'path'; + +import { REPO_ROOT } from '@kbn/dev-utils'; +import * as Rx from 'rxjs'; +import { mapTo, filter, take, tap, distinctUntilChanged, switchMap } from 'rxjs/operators'; + +import { CliArgs } from '../../core/server/config'; +import { LegacyConfig } from '../../core/server/legacy'; +import { BasePathProxyServer } from '../../core/server/http'; + +import { Log, CliLog } from './log'; +import { Optimizer } from './optimizer'; +import { DevServer } from './dev_server'; +import { Watcher } from './watcher'; +import { shouldRedirectFromOldBasePath } from './should_redirect_from_old_base_path'; +import { getServerWatchPaths } from './get_server_watch_paths'; + +// timeout where the server is allowed to exit gracefully +const GRACEFUL_TIMEOUT = 5000; + +export type SomeCliArgs = Pick< + CliArgs, + 'quiet' | 'silent' | 'disableOptimizer' | 'watch' | 'oss' | 'runExamples' | 'cache' | 'dist' +>; + +export interface CliDevModeOptions { + basePathProxy?: BasePathProxyServer; + log?: Log; + + // cli flags + dist: boolean; + oss: boolean; + runExamples: boolean; + pluginPaths: string[]; + pluginScanDirs: string[]; + disableOptimizer: boolean; + quiet: boolean; + silent: boolean; + watch: boolean; + cache: boolean; +} + +const firstAllTrue = (...sources: Array>) => + Rx.combineLatest(sources).pipe( + filter((values) => values.every((v) => v === true)), + take(1), + mapTo(undefined) + ); + +/** + * setup and manage the parent process of the dev server: + * + * - runs the Kibana server in a child process + * - watches for changes to the server source code, restart the server on changes. + * - run the kbn/optimizer + * - run the basePathProxy + * - delay requests received by the basePathProxy when either the server isn't ready + * or the kbn/optimizer isn't ready + * + */ +export class CliDevMode { + static fromCoreServices( + cliArgs: SomeCliArgs, + config: LegacyConfig, + basePathProxy?: BasePathProxyServer + ) { + new CliDevMode({ + quiet: !!cliArgs.quiet, + silent: !!cliArgs.silent, + cache: !!cliArgs.cache, + disableOptimizer: !!cliArgs.disableOptimizer, + dist: !!cliArgs.dist, + oss: !!cliArgs.oss, + runExamples: !!cliArgs.runExamples, + pluginPaths: config.get('plugins.paths'), + pluginScanDirs: config.get('plugins.scanDirs'), + watch: !!cliArgs.watch, + basePathProxy, + }).start(); + } + private readonly log: Log; + private readonly basePathProxy?: BasePathProxyServer; + private readonly watcher: Watcher; + private readonly devServer: DevServer; + private readonly optimizer: Optimizer; + + private subscription?: Rx.Subscription; + + constructor(options: CliDevModeOptions) { + this.basePathProxy = options.basePathProxy; + this.log = options.log || new CliLog(!!options.quiet, !!options.silent); + + const { watchPaths, ignorePaths } = getServerWatchPaths({ + pluginPaths: options.pluginPaths ?? [], + pluginScanDirs: [ + ...(options.pluginScanDirs ?? []), + Path.resolve(REPO_ROOT, 'src/plugins'), + Path.resolve(REPO_ROOT, 'x-pack/plugins'), + ], + }); + + this.watcher = new Watcher({ + enabled: !!options.watch, + log: this.log, + cwd: REPO_ROOT, + paths: watchPaths, + ignore: ignorePaths, + }); + + this.devServer = new DevServer({ + log: this.log, + watcher: this.watcher, + gracefulTimeout: GRACEFUL_TIMEOUT, + + script: Path.resolve(REPO_ROOT, 'scripts/kibana'), + argv: [ + ...process.argv.slice(2).filter((v) => v !== '--no-watch'), + ...(options.basePathProxy + ? [ + `--server.port=${options.basePathProxy.targetPort}`, + `--server.basePath=${options.basePathProxy.basePath}`, + '--server.rewriteBasePath=true', + ] + : []), + ], + mapLogLine: (line) => { + if (!this.basePathProxy) { + return line; + } + + return line + .split(`${this.basePathProxy.host}:${this.basePathProxy.targetPort}`) + .join(`${this.basePathProxy.host}:${this.basePathProxy.port}`); + }, + }); + + this.optimizer = new Optimizer({ + enabled: !options.disableOptimizer, + repoRoot: REPO_ROOT, + oss: options.oss, + pluginPaths: options.pluginPaths, + runExamples: options.runExamples, + cache: options.cache, + dist: options.dist, + quiet: options.quiet, + silent: options.silent, + watch: options.watch, + }); + } + + public start() { + const { basePathProxy } = this; + + if (this.subscription) { + throw new Error('CliDevMode already started'); + } + + this.subscription = new Rx.Subscription(); + + if (basePathProxy) { + const serverReady$ = new Rx.BehaviorSubject(false); + const optimizerReady$ = new Rx.BehaviorSubject(false); + const userWaiting$ = new Rx.BehaviorSubject(false); + + this.subscription.add( + Rx.merge( + this.devServer.isReady$().pipe(tap(serverReady$)), + this.optimizer.isReady$().pipe(tap(optimizerReady$)), + userWaiting$.pipe( + distinctUntilChanged(), + switchMap((waiting) => + !waiting + ? Rx.EMPTY + : Rx.timer(1000).pipe( + tap(() => { + this.log.warn( + 'please hold', + !optimizerReady$.getValue() + ? 'optimizer is still bundling so requests have been paused' + : 'server is not ready so requests have been paused' + ); + }) + ) + ) + ) + ).subscribe(this.observer('readiness checks')) + ); + + basePathProxy.start({ + delayUntil: () => { + userWaiting$.next(true); + return firstAllTrue(serverReady$, optimizerReady$).pipe( + tap(() => userWaiting$.next(false)) + ); + }, + shouldRedirectFromOldBasePath, + }); + + this.subscription.add(() => basePathProxy.stop()); + } else { + this.log.warn('no-base-path', '='.repeat(100)); + this.log.warn( + 'no-base-path', + 'Running Kibana in dev mode with --no-base-path disables several useful features and is not recommended' + ); + this.log.warn('no-base-path', '='.repeat(100)); + } + + this.subscription.add(this.optimizer.run$.subscribe(this.observer('@kbn/optimizer'))); + this.subscription.add(this.watcher.run$.subscribe(this.observer('watcher'))); + this.subscription.add(this.devServer.run$.subscribe(this.observer('dev server'))); + } + + public stop() { + if (!this.subscription) { + throw new Error('CliDevMode has not been started'); + } + + this.subscription.unsubscribe(); + this.subscription = undefined; + } + + private observer = (title: string): Rx.Observer => ({ + next: () => { + // noop + }, + error: (error) => { + this.log.bad(`[${title}] fatal error`, error.stack); + process.exit(1); + }, + complete: () => { + // noop + }, + }); +} diff --git a/src/dev/cli_dev_mode/dev_server.test.ts b/src/dev/cli_dev_mode/dev_server.test.ts new file mode 100644 index 00000000000000..792125f4f85b15 --- /dev/null +++ b/src/dev/cli_dev_mode/dev_server.test.ts @@ -0,0 +1,319 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { EventEmitter } from 'events'; +import { PassThrough } from 'stream'; + +import * as Rx from 'rxjs'; + +import { extendedEnvSerializer } from './test_helpers'; +import { DevServer, Options } from './dev_server'; +import { TestLog } from './log'; + +class MockProc extends EventEmitter { + public readonly signalsSent: string[] = []; + + stdout = new PassThrough(); + stderr = new PassThrough(); + + kill = jest.fn((signal) => { + this.signalsSent.push(signal); + }); + + mockExit(code: number) { + this.emit('exit', code, undefined); + // close stdio streams + this.stderr.end(); + this.stdout.end(); + } + + mockListening() { + this.emit('message', ['SERVER_LISTENING'], undefined); + } +} + +jest.mock('execa'); +const execa = jest.requireMock('execa'); + +let currentProc: MockProc | undefined; +execa.node.mockImplementation(() => { + const proc = new MockProc(); + currentProc = proc; + return proc; +}); +function isProc(proc: MockProc | undefined): asserts proc is MockProc { + expect(proc).toBeInstanceOf(MockProc); +} + +const restart$ = new Rx.Subject(); +const mockWatcher = { + enabled: true, + serverShouldRestart$: jest.fn(() => restart$), +}; + +const processExit$ = new Rx.Subject(); +const sigint$ = new Rx.Subject(); +const sigterm$ = new Rx.Subject(); + +const log = new TestLog(); +const defaultOptions: Options = { + log, + watcher: mockWatcher as any, + script: 'some/script', + argv: ['foo', 'bar'], + gracefulTimeout: 100, + processExit$, + sigint$, + sigterm$, +}; + +expect.addSnapshotSerializer(extendedEnvSerializer); + +beforeEach(() => { + jest.clearAllMocks(); + log.messages.length = 0; + currentProc = undefined; +}); + +const subscriptions: Rx.Subscription[] = []; +const run = (server: DevServer) => { + const subscription = server.run$.subscribe({ + error(e) { + throw e; + }, + }); + subscriptions.push(subscription); + return subscription; +}; + +afterEach(() => { + if (currentProc) { + currentProc.removeAllListeners(); + currentProc = undefined; + } + + for (const sub of subscriptions) { + sub.unsubscribe(); + } + subscriptions.length = 0; +}); + +describe('#run$', () => { + it('starts the dev server with the right options', () => { + run(new DevServer(defaultOptions)).unsubscribe(); + + expect(execa.node.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + "some/script", + Array [ + "foo", + "bar", + "--logging.json=false", + ], + Object { + "env": Object { + "": true, + "ELASTIC_APM_SERVICE_NAME": "kibana", + "isDevCliChild": "true", + }, + "nodeOptions": Array [], + "stdio": "pipe", + }, + ], + ] + `); + }); + + it('writes stdout and stderr lines to logger', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + currentProc.stdout.write('hello '); + currentProc.stderr.write('something '); + currentProc.stdout.write('world\n'); + currentProc.stderr.write('went wrong\n'); + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "hello world", + ], + "type": "write", + }, + Object { + "args": Array [ + "something went wrong", + ], + "type": "write", + }, + ] + `); + }); + + it('is ready when message sends SERVER_LISTENING message', () => { + const server = new DevServer(defaultOptions); + run(server); + isProc(currentProc); + + let ready; + subscriptions.push( + server.isReady$().subscribe((_ready) => { + ready = _ready; + }) + ); + + expect(ready).toBe(false); + currentProc.mockListening(); + expect(ready).toBe(true); + }); + + it('is not ready when process exits', () => { + const server = new DevServer(defaultOptions); + run(server); + isProc(currentProc); + + const ready$ = new Rx.BehaviorSubject(undefined); + subscriptions.push(server.isReady$().subscribe(ready$)); + + currentProc.mockListening(); + expect(ready$.getValue()).toBe(true); + currentProc.mockExit(0); + expect(ready$.getValue()).toBe(false); + }); + + it('logs about crashes when process exits with non-zero code', () => { + const server = new DevServer(defaultOptions); + run(server); + isProc(currentProc); + + currentProc.mockExit(1); + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "server crashed", + "with status code", + 1, + ], + "type": "bad", + }, + ] + `); + }); + + it('does not restart the server when process exits with 0 and stdio streams complete', async () => { + const server = new DevServer(defaultOptions); + run(server); + isProc(currentProc); + const initialProc = currentProc; + + const ready$ = new Rx.BehaviorSubject(undefined); + subscriptions.push(server.isReady$().subscribe(ready$)); + + currentProc.mockExit(0); + + expect(ready$.getValue()).toBe(false); + expect(initialProc).toBe(currentProc); // no restart or the proc would have been updated + }); + + it('kills server and restarts when watcher says to', () => { + run(new DevServer(defaultOptions)); + + const initialProc = currentProc; + isProc(initialProc); + + restart$.next(); + expect(initialProc.signalsSent).toEqual(['SIGKILL']); + + isProc(currentProc); + expect(currentProc).not.toBe(initialProc); + }); + + it('subscribes to sigint$, sigterm$, and processExit$ options', () => { + run(new DevServer(defaultOptions)); + + expect(sigint$.observers).toHaveLength(1); + expect(sigterm$.observers).toHaveLength(1); + expect(processExit$.observers).toHaveLength(1); + }); + + it('kills the server on sigint$ before listening', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + expect(currentProc.signalsSent).toEqual([]); + sigint$.next(); + expect(currentProc.signalsSent).toEqual(['SIGKILL']); + }); + + it('kills the server on processExit$', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + expect(currentProc.signalsSent).toEqual([]); + processExit$.next(); + expect(currentProc.signalsSent).toEqual(['SIGKILL']); + }); + + it('kills the server on sigterm$', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + expect(currentProc.signalsSent).toEqual([]); + sigterm$.next(); + expect(currentProc.signalsSent).toEqual(['SIGKILL']); + }); + + it('sends SIGINT to child process on sigint$ after listening', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + currentProc.mockListening(); + + expect(currentProc.signalsSent).toEqual([]); + sigint$.next(); + expect(currentProc.signalsSent).toEqual(['SIGINT']); + }); + + it('sends SIGKILL to child process on double sigint$ after listening', () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + currentProc.mockListening(); + + expect(currentProc.signalsSent).toEqual([]); + sigint$.next(); + sigint$.next(); + expect(currentProc.signalsSent).toEqual(['SIGINT', 'SIGKILL']); + }); + + it('kills the server after sending SIGINT and gracefulTimeout is passed after listening', async () => { + run(new DevServer(defaultOptions)); + isProc(currentProc); + + currentProc.mockListening(); + + expect(currentProc.signalsSent).toEqual([]); + sigint$.next(); + expect(currentProc.signalsSent).toEqual(['SIGINT']); + await new Promise((resolve) => setTimeout(resolve, 1000)); + expect(currentProc.signalsSent).toEqual(['SIGINT', 'SIGKILL']); + }); +}); diff --git a/src/dev/cli_dev_mode/dev_server.ts b/src/dev/cli_dev_mode/dev_server.ts new file mode 100644 index 00000000000000..f832acd38c6419 --- /dev/null +++ b/src/dev/cli_dev_mode/dev_server.ts @@ -0,0 +1,228 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { EventEmitter } from 'events'; + +import * as Rx from 'rxjs'; +import { + map, + tap, + take, + share, + mergeMap, + switchMap, + takeUntil, + ignoreElements, +} from 'rxjs/operators'; +import { observeLines } from '@kbn/dev-utils'; + +import { usingServerProcess } from './using_server_process'; +import { Watcher } from './watcher'; +import { Log } from './log'; + +export interface Options { + log: Log; + watcher: Watcher; + script: string; + argv: string[]; + gracefulTimeout: number; + processExit$?: Rx.Observable; + sigint$?: Rx.Observable; + sigterm$?: Rx.Observable; + mapLogLine?: DevServer['mapLogLine']; +} + +export class DevServer { + private readonly log: Log; + private readonly watcher: Watcher; + + private readonly processExit$: Rx.Observable; + private readonly sigint$: Rx.Observable; + private readonly sigterm$: Rx.Observable; + private readonly ready$ = new Rx.BehaviorSubject(false); + + private readonly script: string; + private readonly argv: string[]; + private readonly gracefulTimeout: number; + private readonly mapLogLine?: (line: string) => string | null; + + constructor(options: Options) { + this.log = options.log; + this.watcher = options.watcher; + + this.script = options.script; + this.argv = options.argv; + this.gracefulTimeout = options.gracefulTimeout; + this.processExit$ = options.processExit$ ?? Rx.fromEvent(process as EventEmitter, 'exit'); + this.sigint$ = options.sigint$ ?? Rx.fromEvent(process as EventEmitter, 'SIGINT'); + this.sigterm$ = options.sigterm$ ?? Rx.fromEvent(process as EventEmitter, 'SIGTERM'); + this.mapLogLine = options.mapLogLine; + } + + isReady$() { + return this.ready$.asObservable(); + } + + /** + * Run the Kibana server + * + * The observable will error if the child process failes to spawn for some reason, but if + * the child process is successfully spawned then the server will be run until it completes + * and restart when the watcher indicates it should. In order to restart the server as + * quickly as possible we kill it with SIGKILL and spawn the process again. + * + * While the process is running we also observe SIGINT signals and forward them to the child + * process. If the process doesn't exit within options.gracefulTimeout we kill the process + * with SIGKILL and complete our observable which should allow the parent process to exit. + * + * When the global 'exit' event or SIGTERM is observed we send the SIGKILL signal to the + * child process to make sure that it's immediately gone. + */ + run$ = new Rx.Observable((subscriber) => { + // listen for SIGINT and forward to process if it's running, otherwise unsub + const gracefulShutdown$ = new Rx.Subject(); + subscriber.add( + this.sigint$ + .pipe( + map((_, index) => { + if (this.ready$.getValue() && index === 0) { + gracefulShutdown$.next(); + } else { + subscriber.complete(); + } + }) + ) + .subscribe({ + error(error) { + subscriber.error(error); + }, + }) + ); + + // force unsubscription/kill on process.exit or SIGTERM + subscriber.add( + Rx.merge(this.processExit$, this.sigterm$).subscribe(() => { + subscriber.complete(); + }) + ); + + const runServer = () => + usingServerProcess(this.script, this.argv, (proc) => { + // observable which emits devServer states containing lines + // logged to stdout/stderr, completes when stdio streams complete + const log$ = Rx.merge(observeLines(proc.stdout!), observeLines(proc.stderr!)).pipe( + tap((observedLine) => { + const line = this.mapLogLine ? this.mapLogLine(observedLine) : observedLine; + if (line !== null) { + this.log.write(line); + } + }) + ); + + // observable which emits exit states and is the switch which + // ends all other merged observables + const exit$ = Rx.fromEvent<[number]>(proc, 'exit').pipe( + tap(([code]) => { + this.ready$.next(false); + + if (code != null && code !== 0) { + if (this.watcher.enabled) { + this.log.bad(`server crashed`, 'with status code', code); + } else { + throw new Error(`server crashed with exit code [${code}]`); + } + } + }), + take(1), + share() + ); + + // throw errors if spawn fails + const error$ = Rx.fromEvent(proc, 'error').pipe( + map((error) => { + throw error; + }), + takeUntil(exit$) + ); + + // handles messages received from the child process + const msg$ = Rx.fromEvent<[any]>(proc, 'message').pipe( + tap(([received]) => { + if (!Array.isArray(received)) { + return; + } + + const msg = received[0]; + + if (msg === 'SERVER_LISTENING') { + this.ready$.next(true); + } + + // TODO: remove this once Pier is done migrating log rotation to KP + if (msg === 'RELOAD_LOGGING_CONFIG_FROM_SERVER_WORKER') { + // When receive that event from server worker + // forward a reloadLoggingConfig message to parent + // and child proc. This is only used by LogRotator service + // when the cluster mode is enabled + process.emit('message' as any, { reloadLoggingConfig: true } as any); + proc.send({ reloadLoggingConfig: true }); + } + }), + takeUntil(exit$) + ); + + // handle graceful shutdown requests + const triggerGracefulShutdown$ = gracefulShutdown$.pipe( + mergeMap(() => { + // signal to the process that it should exit + proc.kill('SIGINT'); + + // if the timer fires before exit$ we will send SIGINT + return Rx.timer(this.gracefulTimeout).pipe( + tap(() => { + this.log.warn( + `server didnt exit`, + `sent [SIGINT] to the server but it didn't exit within ${this.gracefulTimeout}ms, killing with SIGKILL` + ); + + proc.kill('SIGKILL'); + }) + ); + }), + + // if exit$ emits before the gracefulTimeout then this + // will unsub and cancel the timer + takeUntil(exit$) + ); + + return Rx.merge(log$, exit$, error$, msg$, triggerGracefulShutdown$); + }); + + subscriber.add( + Rx.concat([undefined], this.watcher.serverShouldRestart$()) + .pipe( + // on each tick unsubscribe from the previous server process + // causing it to be SIGKILL-ed, then setup a new one + switchMap(runServer), + ignoreElements() + ) + .subscribe(subscriber) + ); + }); +} diff --git a/src/dev/cli_dev_mode/get_active_inspect_flag.ts b/src/dev/cli_dev_mode/get_active_inspect_flag.ts new file mode 100644 index 00000000000000..219c05647b2dc0 --- /dev/null +++ b/src/dev/cli_dev_mode/get_active_inspect_flag.ts @@ -0,0 +1,43 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import getopts from 'getopts'; +// @ts-expect-error no types available, very simple module https://github.com/evanlucas/argsplit +import argsplit from 'argsplit'; + +const execOpts = getopts(process.execArgv); +const envOpts = getopts(process.env.NODE_OPTIONS ? argsplit(process.env.NODE_OPTIONS) : []); + +export function getActiveInspectFlag() { + if (execOpts.inspect) { + return '--inspect'; + } + + if (execOpts['inspect-brk']) { + return '--inspect-brk'; + } + + if (envOpts.inspect) { + return '--inspect'; + } + + if (envOpts['inspect-brk']) { + return '--inspect-brk'; + } +} diff --git a/src/dev/cli_dev_mode/get_server_watch_paths.test.ts b/src/dev/cli_dev_mode/get_server_watch_paths.test.ts new file mode 100644 index 00000000000000..ec0d5d013a7822 --- /dev/null +++ b/src/dev/cli_dev_mode/get_server_watch_paths.test.ts @@ -0,0 +1,90 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Path from 'path'; + +import { REPO_ROOT, createAbsolutePathSerializer } from '@kbn/dev-utils'; + +import { getServerWatchPaths } from './get_server_watch_paths'; + +expect.addSnapshotSerializer(createAbsolutePathSerializer()); + +it('produces the right watch and ignore list', () => { + const { watchPaths, ignorePaths } = getServerWatchPaths({ + pluginPaths: [Path.resolve(REPO_ROOT, 'x-pack/test/plugin_functional/plugins/resolver_test')], + pluginScanDirs: [ + Path.resolve(REPO_ROOT, 'src/plugins'), + Path.resolve(REPO_ROOT, 'test/plugin_functional/plugins'), + Path.resolve(REPO_ROOT, 'x-pack/plugins'), + ], + }); + + expect(watchPaths).toMatchInlineSnapshot(` + Array [ + /src/core, + /src/legacy/server, + /src/legacy/ui, + /src/legacy/utils, + /config, + /x-pack/test/plugin_functional/plugins/resolver_test, + /src/plugins, + /test/plugin_functional/plugins, + /x-pack/plugins, + ] + `); + + expect(ignorePaths).toMatchInlineSnapshot(` + Array [ + /\\[\\\\\\\\\\\\/\\]\\(\\\\\\.\\.\\*\\|node_modules\\|bower_components\\|target\\|public\\|__\\[a-z0-9_\\]\\+__\\|coverage\\)\\(\\[\\\\\\\\\\\\/\\]\\|\\$\\)/, + /\\\\\\.test\\\\\\.\\(js\\|tsx\\?\\)\\$/, + /\\\\\\.\\(md\\|sh\\|txt\\)\\$/, + /debug\\\\\\.log\\$/, + /src/plugins/*/test/**, + /src/plugins/*/build/**, + /src/plugins/*/target/**, + /src/plugins/*/scripts/**, + /src/plugins/*/docs/**, + /test/plugin_functional/plugins/*/test/**, + /test/plugin_functional/plugins/*/build/**, + /test/plugin_functional/plugins/*/target/**, + /test/plugin_functional/plugins/*/scripts/**, + /test/plugin_functional/plugins/*/docs/**, + /x-pack/plugins/*/test/**, + /x-pack/plugins/*/build/**, + /x-pack/plugins/*/target/**, + /x-pack/plugins/*/scripts/**, + /x-pack/plugins/*/docs/**, + /x-pack/test/plugin_functional/plugins/resolver_test/test/**, + /x-pack/test/plugin_functional/plugins/resolver_test/build/**, + /x-pack/test/plugin_functional/plugins/resolver_test/target/**, + /x-pack/test/plugin_functional/plugins/resolver_test/scripts/**, + /x-pack/test/plugin_functional/plugins/resolver_test/docs/**, + /x-pack/plugins/reporting/chromium, + /x-pack/plugins/security_solution/cypress, + /x-pack/plugins/apm/e2e, + /x-pack/plugins/apm/scripts, + /x-pack/plugins/canvas/canvas_plugin_src, + /x-pack/plugins/case/server/scripts, + /x-pack/plugins/lists/scripts, + /x-pack/plugins/lists/server/scripts, + /x-pack/plugins/security_solution/scripts, + /x-pack/plugins/security_solution/server/lib/detection_engine/scripts, + ] + `); +}); diff --git a/src/dev/cli_dev_mode/get_server_watch_paths.ts b/src/dev/cli_dev_mode/get_server_watch_paths.ts new file mode 100644 index 00000000000000..7fe05c649b7383 --- /dev/null +++ b/src/dev/cli_dev_mode/get_server_watch_paths.ts @@ -0,0 +1,94 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Path from 'path'; +import Fs from 'fs'; + +import { REPO_ROOT } from '@kbn/dev-utils'; + +interface Options { + pluginPaths: string[]; + pluginScanDirs: string[]; +} + +export type WatchPaths = ReturnType; + +export function getServerWatchPaths({ pluginPaths, pluginScanDirs }: Options) { + const fromRoot = (p: string) => Path.resolve(REPO_ROOT, p); + + const pluginInternalDirsIgnore = pluginScanDirs + .map((scanDir) => Path.resolve(scanDir, '*')) + .concat(pluginPaths) + .reduce( + (acc: string[], path) => [ + ...acc, + Path.resolve(path, 'test/**'), + Path.resolve(path, 'build/**'), + Path.resolve(path, 'target/**'), + Path.resolve(path, 'scripts/**'), + Path.resolve(path, 'docs/**'), + ], + [] + ); + + const watchPaths = Array.from( + new Set( + [ + fromRoot('src/core'), + fromRoot('src/legacy/server'), + fromRoot('src/legacy/ui'), + fromRoot('src/legacy/utils'), + fromRoot('config'), + ...pluginPaths, + ...pluginScanDirs, + ].map((path) => Path.resolve(path)) + ) + ); + + for (const watchPath of watchPaths) { + if (!Fs.existsSync(fromRoot(watchPath))) { + throw new Error( + `A watch directory [${watchPath}] does not exist, which will cause chokidar to fail. Either make sure the directory exists or remove it as a watch source in the ClusterManger` + ); + } + } + + const ignorePaths = [ + /[\\\/](\..*|node_modules|bower_components|target|public|__[a-z0-9_]+__|coverage)([\\\/]|$)/, + /\.test\.(js|tsx?)$/, + /\.(md|sh|txt)$/, + /debug\.log$/, + ...pluginInternalDirsIgnore, + fromRoot('x-pack/plugins/reporting/chromium'), + fromRoot('x-pack/plugins/security_solution/cypress'), + fromRoot('x-pack/plugins/apm/e2e'), + fromRoot('x-pack/plugins/apm/scripts'), + fromRoot('x-pack/plugins/canvas/canvas_plugin_src'), // prevents server from restarting twice for Canvas plugin changes, + fromRoot('x-pack/plugins/case/server/scripts'), + fromRoot('x-pack/plugins/lists/scripts'), + fromRoot('x-pack/plugins/lists/server/scripts'), + fromRoot('x-pack/plugins/security_solution/scripts'), + fromRoot('x-pack/plugins/security_solution/server/lib/detection_engine/scripts'), + ]; + + return { + watchPaths, + ignorePaths, + }; +} diff --git a/src/dev/cli_dev_mode/index.ts b/src/dev/cli_dev_mode/index.ts new file mode 100644 index 00000000000000..92714c3740e9ad --- /dev/null +++ b/src/dev/cli_dev_mode/index.ts @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export * from './cli_dev_mode'; +export * from './log'; diff --git a/src/dev/cli_dev_mode/log.ts b/src/dev/cli_dev_mode/log.ts new file mode 100644 index 00000000000000..f349026ca9cabf --- /dev/null +++ b/src/dev/cli_dev_mode/log.ts @@ -0,0 +1,97 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* eslint-disable max-classes-per-file */ + +import Chalk from 'chalk'; + +export interface Log { + good(label: string, ...args: any[]): void; + warn(label: string, ...args: any[]): void; + bad(label: string, ...args: any[]): void; + write(label: string, ...args: any[]): void; +} + +export class CliLog implements Log { + constructor(private readonly quiet: boolean, private readonly silent: boolean) {} + + good(label: string, ...args: any[]) { + if (this.quiet || this.silent) { + return; + } + + // eslint-disable-next-line no-console + console.log(Chalk.black.bgGreen(` ${label.trim()} `), ...args); + } + + warn(label: string, ...args: any[]) { + if (this.quiet || this.silent) { + return; + } + + // eslint-disable-next-line no-console + console.log(Chalk.black.bgYellow(` ${label.trim()} `), ...args); + } + + bad(label: string, ...args: any[]) { + if (this.silent) { + return; + } + + // eslint-disable-next-line no-console + console.log(Chalk.white.bgRed(` ${label.trim()} `), ...args); + } + + write(label: string, ...args: any[]) { + // eslint-disable-next-line no-console + console.log(` ${label.trim()} `, ...args); + } +} + +export class TestLog implements Log { + public readonly messages: Array<{ type: string; args: any[] }> = []; + + bad(label: string, ...args: any[]) { + this.messages.push({ + type: 'bad', + args: [label, ...args], + }); + } + + good(label: string, ...args: any[]) { + this.messages.push({ + type: 'good', + args: [label, ...args], + }); + } + + warn(label: string, ...args: any[]) { + this.messages.push({ + type: 'warn', + args: [label, ...args], + }); + } + + write(label: string, ...args: any[]) { + this.messages.push({ + type: 'write', + args: [label, ...args], + }); + } +} diff --git a/src/dev/cli_dev_mode/optimizer.test.ts b/src/dev/cli_dev_mode/optimizer.test.ts new file mode 100644 index 00000000000000..8a82012499b332 --- /dev/null +++ b/src/dev/cli_dev_mode/optimizer.test.ts @@ -0,0 +1,214 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PassThrough } from 'stream'; + +import * as Rx from 'rxjs'; +import { toArray } from 'rxjs/operators'; +import { OptimizerUpdate } from '@kbn/optimizer'; +import { observeLines, createReplaceSerializer } from '@kbn/dev-utils'; +import { firstValueFrom } from '@kbn/std'; + +import { Optimizer, Options } from './optimizer'; + +jest.mock('@kbn/optimizer'); +const realOptimizer = jest.requireActual('@kbn/optimizer'); +const { runOptimizer, OptimizerConfig, logOptimizerState } = jest.requireMock('@kbn/optimizer'); + +logOptimizerState.mockImplementation(realOptimizer.logOptimizerState); + +class MockOptimizerConfig {} + +const mockOptimizerUpdate = (phase: OptimizerUpdate['state']['phase']) => { + return { + state: { + compilerStates: [], + durSec: 0, + offlineBundles: [], + onlineBundles: [], + phase, + startTime: 100, + }, + }; +}; + +const defaultOptions: Options = { + enabled: true, + cache: true, + dist: true, + oss: true, + pluginPaths: ['/some/dir'], + quiet: true, + silent: true, + repoRoot: '/app', + runExamples: true, + watch: true, +}; + +function setup(options: Options = defaultOptions) { + const update$ = new Rx.Subject(); + + OptimizerConfig.create.mockImplementation(() => new MockOptimizerConfig()); + runOptimizer.mockImplementation(() => update$); + + const optimizer = new Optimizer(options); + + return { optimizer, update$ }; +} + +const subscriptions: Rx.Subscription[] = []; + +expect.addSnapshotSerializer(createReplaceSerializer(/\[\d\d:\d\d:\d\d\.\d\d\d\]/, '[timestamp]')); + +afterEach(() => { + for (const sub of subscriptions) { + sub.unsubscribe(); + } + subscriptions.length = 0; + + jest.clearAllMocks(); +}); + +it('uses options to create valid OptimizerConfig', () => { + setup(); + setup({ + ...defaultOptions, + cache: false, + dist: false, + runExamples: false, + oss: false, + pluginPaths: [], + repoRoot: '/foo/bar', + watch: false, + }); + + expect(OptimizerConfig.create.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Object { + "cache": true, + "dist": true, + "examples": true, + "includeCoreBundle": true, + "oss": true, + "pluginPaths": Array [ + "/some/dir", + ], + "repoRoot": "/app", + "watch": true, + }, + ], + Array [ + Object { + "cache": false, + "dist": false, + "examples": false, + "includeCoreBundle": true, + "oss": false, + "pluginPaths": Array [], + "repoRoot": "/foo/bar", + "watch": false, + }, + ], + ] + `); +}); + +it('is ready when optimizer phase is success or issue and logs in familiar format', async () => { + const writeLogTo = new PassThrough(); + const linesPromise = firstValueFrom(observeLines(writeLogTo).pipe(toArray())); + + const { update$, optimizer } = setup({ + ...defaultOptions, + quiet: false, + silent: false, + writeLogTo, + }); + + const history: any[] = ['']; + subscriptions.push( + optimizer.isReady$().subscribe({ + next(ready) { + history.push(`ready: ${ready}`); + }, + error(error) { + throw error; + }, + complete() { + history.push(`complete`); + }, + }) + ); + + subscriptions.push( + optimizer.run$.subscribe({ + error(error) { + throw error; + }, + }) + ); + + history.push(''); + update$.next(mockOptimizerUpdate('success')); + + history.push(''); + update$.next(mockOptimizerUpdate('running')); + + history.push(''); + update$.next(mockOptimizerUpdate('issue')); + + update$.complete(); + + expect(history).toMatchInlineSnapshot(` + Array [ + "", + "", + "ready: true", + "", + "ready: false", + "", + "ready: true", + ] + `); + + writeLogTo.end(); + const lines = await linesPromise; + expect(lines).toMatchInlineSnapshot(` + Array [ + "np bld log [timestamp] [success][@kbn/optimizer] 0 bundles compiled successfully after 0 sec", + "np bld log [timestamp] [error][@kbn/optimizer] webpack compile errors", + ] + `); +}); + +it('completes immedately and is immediately ready when disabled', () => { + const ready$ = new Rx.BehaviorSubject(undefined); + + const { optimizer, update$ } = setup({ + ...defaultOptions, + enabled: false, + }); + + subscriptions.push(optimizer.isReady$().subscribe(ready$)); + + expect(update$.observers).toHaveLength(0); + expect(runOptimizer).not.toHaveBeenCalled(); + expect(ready$).toHaveProperty('isStopped', true); + expect(ready$.getValue()).toBe(true); +}); diff --git a/src/dev/cli_dev_mode/optimizer.ts b/src/dev/cli_dev_mode/optimizer.ts new file mode 100644 index 00000000000000..9aac414f02b299 --- /dev/null +++ b/src/dev/cli_dev_mode/optimizer.ts @@ -0,0 +1,128 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Chalk from 'chalk'; +import moment from 'moment'; +import { Writable } from 'stream'; +import { tap } from 'rxjs/operators'; +import { + ToolingLog, + pickLevelFromFlags, + ToolingLogTextWriter, + parseLogLevel, +} from '@kbn/dev-utils'; +import * as Rx from 'rxjs'; +import { ignoreElements } from 'rxjs/operators'; +import { runOptimizer, OptimizerConfig, logOptimizerState } from '@kbn/optimizer'; + +export interface Options { + enabled: boolean; + repoRoot: string; + quiet: boolean; + silent: boolean; + watch: boolean; + cache: boolean; + dist: boolean; + oss: boolean; + runExamples: boolean; + pluginPaths: string[]; + writeLogTo?: Writable; +} + +export class Optimizer { + public readonly run$: Rx.Observable; + private readonly ready$ = new Rx.ReplaySubject(1); + + constructor(options: Options) { + if (!options.enabled) { + this.run$ = Rx.EMPTY; + this.ready$.next(true); + this.ready$.complete(); + return; + } + + const config = OptimizerConfig.create({ + repoRoot: options.repoRoot, + watch: options.watch, + includeCoreBundle: true, + cache: options.cache, + dist: options.dist, + oss: options.oss, + examples: options.runExamples, + pluginPaths: options.pluginPaths, + }); + + const dim = Chalk.dim('np bld'); + const name = Chalk.magentaBright('@kbn/optimizer'); + const time = () => moment().format('HH:mm:ss.SSS'); + const level = (msgType: string) => { + switch (msgType) { + case 'info': + return Chalk.green(msgType); + case 'success': + return Chalk.cyan(msgType); + case 'debug': + return Chalk.gray(msgType); + case 'warning': + return Chalk.yellowBright(msgType); + default: + return msgType; + } + }; + + const { flags: levelFlags } = parseLogLevel( + pickLevelFromFlags({ + quiet: options.quiet, + silent: options.silent, + }) + ); + + const log = new ToolingLog(); + const has = (obj: T, x: any): x is keyof T => obj.hasOwnProperty(x); + + log.setWriters([ + { + write(msg) { + if (has(levelFlags, msg.type) && !levelFlags[msg.type]) { + return false; + } + + ToolingLogTextWriter.write( + options.writeLogTo ?? process.stdout, + `${dim} log [${time()}] [${level(msg.type)}][${name}] `, + msg + ); + return true; + }, + }, + ]); + + this.run$ = runOptimizer(config).pipe( + logOptimizerState(log, config), + tap(({ state }) => { + this.ready$.next(state.phase === 'success' || state.phase === 'issue'); + }), + ignoreElements() + ); + } + + isReady$() { + return this.ready$.asObservable(); + } +} diff --git a/src/dev/cli_dev_mode/should_redirect_from_old_base_path.test.ts b/src/dev/cli_dev_mode/should_redirect_from_old_base_path.test.ts new file mode 100644 index 00000000000000..f51b3743e02105 --- /dev/null +++ b/src/dev/cli_dev_mode/should_redirect_from_old_base_path.test.ts @@ -0,0 +1,39 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { shouldRedirectFromOldBasePath } from './should_redirect_from_old_base_path'; +it.each([ + ['app/foo'], + ['app/bar'], + ['login'], + ['logout'], + ['status'], + ['s/1/status'], + ['s/2/app/foo'], +])('allows %s', (path) => { + if (!shouldRedirectFromOldBasePath(path)) { + throw new Error(`expected [${path}] to be redirected from old base path`); + } +}); + +it.each([['api/foo'], ['v1/api/bar'], ['bundles/foo/foo.bundle.js']])('blocks %s', (path) => { + if (shouldRedirectFromOldBasePath(path)) { + throw new Error(`expected [${path}] to NOT be redirected from old base path`); + } +}); diff --git a/src/dev/cli_dev_mode/should_redirect_from_old_base_path.ts b/src/dev/cli_dev_mode/should_redirect_from_old_base_path.ts new file mode 100644 index 00000000000000..ba13932e602313 --- /dev/null +++ b/src/dev/cli_dev_mode/should_redirect_from_old_base_path.ts @@ -0,0 +1,35 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Determine which requested paths should be redirected from one basePath + * to another. We only do this for a supset of the paths so that people don't + * think that specifying a random three character string at the beginning of + * a URL will work. + */ +export function shouldRedirectFromOldBasePath(path: string) { + // strip `s/{id}` prefix when checking for need to redirect + if (path.startsWith('s/')) { + path = path.split('/').slice(2).join('/'); + } + + const isApp = path.startsWith('app/'); + const isKnownShortPath = ['login', 'logout', 'status'].includes(path); + return isApp || isKnownShortPath; +} diff --git a/src/dev/cli_dev_mode/test_helpers.ts b/src/dev/cli_dev_mode/test_helpers.ts new file mode 100644 index 00000000000000..1e320de83588bf --- /dev/null +++ b/src/dev/cli_dev_mode/test_helpers.ts @@ -0,0 +1,49 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const extendedEnvSerializer: jest.SnapshotSerializerPlugin = { + test: (v) => + typeof v === 'object' && + v !== null && + typeof v.env === 'object' && + v.env !== null && + !v.env[''], + + serialize(val, config, indentation, depth, refs, printer) { + const customizations: Record = { + '': true, + }; + for (const [key, value] of Object.entries(val.env)) { + if (process.env[key] !== value) { + customizations[key] = value; + } + } + + return printer( + { + ...val, + env: customizations, + }, + config, + indentation, + depth, + refs + ); + }, +}; diff --git a/src/dev/cli_dev_mode/using_server_process.ts b/src/dev/cli_dev_mode/using_server_process.ts new file mode 100644 index 00000000000000..438e1001672a20 --- /dev/null +++ b/src/dev/cli_dev_mode/using_server_process.ts @@ -0,0 +1,67 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import execa from 'execa'; +import * as Rx from 'rxjs'; + +import { getActiveInspectFlag } from './get_active_inspect_flag'; + +const ACTIVE_INSPECT_FLAG = getActiveInspectFlag(); + +interface ProcResource extends Rx.Unsubscribable { + proc: execa.ExecaChildProcess; + unsubscribe(): void; +} + +export function usingServerProcess( + script: string, + argv: string[], + fn: (proc: execa.ExecaChildProcess) => Rx.Observable +) { + return Rx.using( + (): ProcResource => { + const proc = execa.node(script, [...argv, '--logging.json=false'], { + stdio: 'pipe', + nodeOptions: [ + ...process.execArgv, + ...(ACTIVE_INSPECT_FLAG ? [`${ACTIVE_INSPECT_FLAG}=${process.debugPort + 1}`] : []), + ], + env: { + ...process.env, + NODE_OPTIONS: process.env.NODE_OPTIONS, + isDevCliChild: 'true', + ELASTIC_APM_SERVICE_NAME: 'kibana', + ...(process.stdout.isTTY ? { FORCE_COLOR: 'true' } : {}), + }, + }); + + return { + proc, + unsubscribe() { + proc.kill('SIGKILL'); + }, + }; + }, + + (resource) => { + const { proc } = resource as ProcResource; + return fn(proc); + } + ); +} diff --git a/src/dev/cli_dev_mode/watcher.test.ts b/src/dev/cli_dev_mode/watcher.test.ts new file mode 100644 index 00000000000000..59dbab52a0cf6e --- /dev/null +++ b/src/dev/cli_dev_mode/watcher.test.ts @@ -0,0 +1,219 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { EventEmitter } from 'events'; + +import * as Rx from 'rxjs'; +import { materialize, toArray } from 'rxjs/operators'; +import { firstValueFrom } from '@kbn/std'; + +import { TestLog } from './log'; +import { Watcher, Options } from './watcher'; + +class MockChokidar extends EventEmitter { + close = jest.fn(); +} + +let mockChokidar: MockChokidar | undefined; +jest.mock('chokidar'); +const chokidar = jest.requireMock('chokidar'); +function isMock(mock: MockChokidar | undefined): asserts mock is MockChokidar { + expect(mock).toBeInstanceOf(MockChokidar); +} + +chokidar.watch.mockImplementation(() => { + mockChokidar = new MockChokidar(); + return mockChokidar; +}); + +const subscriptions: Rx.Subscription[] = []; +const run = (watcher: Watcher) => { + const subscription = watcher.run$.subscribe({ + error(e) { + throw e; + }, + }); + subscriptions.push(subscription); + return subscription; +}; + +const log = new TestLog(); +const defaultOptions: Options = { + enabled: true, + log, + paths: ['foo.js', 'bar.js'], + ignore: [/^f/], + cwd: '/app/repo', +}; + +afterEach(() => { + jest.clearAllMocks(); + + if (mockChokidar) { + mockChokidar.removeAllListeners(); + mockChokidar = undefined; + } + + for (const sub of subscriptions) { + sub.unsubscribe(); + } + + subscriptions.length = 0; + log.messages.length = 0; +}); + +it('completes restart streams immediately when disabled', () => { + const watcher = new Watcher({ + ...defaultOptions, + enabled: false, + }); + + const restart$ = new Rx.BehaviorSubject(undefined); + subscriptions.push(watcher.serverShouldRestart$().subscribe(restart$)); + + run(watcher); + expect(restart$.isStopped).toBe(true); +}); + +it('calls chokidar.watch() with expected arguments', () => { + const watcher = new Watcher(defaultOptions); + expect(chokidar.watch).not.toHaveBeenCalled(); + run(watcher); + expect(chokidar.watch.mock.calls).toMatchInlineSnapshot(` + Array [ + Array [ + Array [ + "foo.js", + "bar.js", + ], + Object { + "cwd": "/app/repo", + "ignored": Array [ + /\\^f/, + ], + }, + ], + ] + `); +}); + +it('closes chokidar watcher when unsubscribed', () => { + const sub = run(new Watcher(defaultOptions)); + isMock(mockChokidar); + expect(mockChokidar.close).not.toHaveBeenCalled(); + sub.unsubscribe(); + expect(mockChokidar.close).toHaveBeenCalledTimes(1); +}); + +it('rethrows chokidar errors', async () => { + const watcher = new Watcher(defaultOptions); + const promise = firstValueFrom(watcher.run$.pipe(materialize(), toArray())); + + isMock(mockChokidar); + mockChokidar.emit('error', new Error('foo bar')); + + const notifications = await promise; + expect(notifications).toMatchInlineSnapshot(` + Array [ + Notification { + "error": [Error: foo bar], + "hasValue": false, + "kind": "E", + "value": undefined, + }, + ] + `); +}); + +it('logs the count of add events after the ready event', () => { + run(new Watcher(defaultOptions)); + isMock(mockChokidar); + + mockChokidar.emit('add'); + mockChokidar.emit('add'); + mockChokidar.emit('add'); + mockChokidar.emit('add'); + mockChokidar.emit('ready'); + + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "watching for changes", + "(4 files)", + ], + "type": "good", + }, + ] + `); +}); + +it('buffers subsequent changes before logging and notifying serverShouldRestart$', async () => { + const watcher = new Watcher(defaultOptions); + + const history: any[] = []; + subscriptions.push( + watcher + .serverShouldRestart$() + .pipe(materialize()) + .subscribe((n) => history.push(n)) + ); + + run(watcher); + expect(history).toMatchInlineSnapshot(`Array []`); + + isMock(mockChokidar); + mockChokidar.emit('ready'); + mockChokidar.emit('all', ['add', 'foo.js']); + mockChokidar.emit('all', ['add', 'bar.js']); + mockChokidar.emit('all', ['delete', 'bar.js']); + await new Promise((resolve) => setTimeout(resolve, 1000)); + + expect(log.messages).toMatchInlineSnapshot(` + Array [ + Object { + "args": Array [ + "watching for changes", + "(0 files)", + ], + "type": "good", + }, + Object { + "args": Array [ + "restarting server", + "due to changes in + - \\"foo.js\\" + - \\"bar.js\\"", + ], + "type": "warn", + }, + ] + `); + + expect(history).toMatchInlineSnapshot(` + Array [ + Notification { + "error": undefined, + "hasValue": true, + "kind": "N", + "value": undefined, + }, + ] + `); +}); diff --git a/src/dev/cli_dev_mode/watcher.ts b/src/dev/cli_dev_mode/watcher.ts new file mode 100644 index 00000000000000..95cf86d2c332da --- /dev/null +++ b/src/dev/cli_dev_mode/watcher.ts @@ -0,0 +1,122 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import * as Rx from 'rxjs'; +import { + map, + tap, + takeUntil, + count, + share, + buffer, + debounceTime, + ignoreElements, +} from 'rxjs/operators'; +import Chokidar from 'chokidar'; + +import { Log } from './log'; + +export interface Options { + enabled: boolean; + log: Log; + paths: string[]; + ignore: Array; + cwd: string; +} + +export class Watcher { + public readonly enabled: boolean; + + private readonly log: Log; + private readonly paths: string[]; + private readonly ignore: Array; + private readonly cwd: string; + + private readonly restart$ = new Rx.Subject(); + + constructor(options: Options) { + this.enabled = !!options.enabled; + this.log = options.log; + this.paths = options.paths; + this.ignore = options.ignore; + this.cwd = options.cwd; + } + + run$ = new Rx.Observable((subscriber) => { + if (!this.enabled) { + this.restart$.complete(); + subscriber.complete(); + return; + } + + const chokidar = Chokidar.watch(this.paths, { + cwd: this.cwd, + ignored: this.ignore, + }); + + subscriber.add(() => { + chokidar.close(); + }); + + const error$ = Rx.fromEvent(chokidar, 'error').pipe( + map((error) => { + throw error; + }) + ); + + const init$ = Rx.fromEvent(chokidar, 'add').pipe( + takeUntil(Rx.fromEvent(chokidar, 'ready')), + count(), + tap((fileCount) => { + this.log.good('watching for changes', `(${fileCount} files)`); + }) + ); + + const change$ = Rx.fromEvent<[string, string]>(chokidar, 'all').pipe( + map(([, path]) => path), + share() + ); + + subscriber.add( + Rx.merge( + error$, + Rx.concat( + init$, + change$.pipe( + buffer(change$.pipe(debounceTime(50))), + map((changes) => { + const paths = Array.from(new Set(changes)); + const prefix = paths.length > 1 ? '\n - ' : ' '; + const fileList = paths.reduce((list, file) => `${list || ''}${prefix}"${file}"`, ''); + + this.log.warn(`restarting server`, `due to changes in${fileList}`); + this.restart$.next(); + }) + ) + ) + ) + .pipe(ignoreElements()) + .subscribe(subscriber) + ); + }); + + serverShouldRestart$() { + return this.restart$.asObservable(); + } +} diff --git a/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js b/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js index c666581ddb08ce..177439c56a1157 100644 --- a/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js +++ b/src/dev/code_coverage/ingest_coverage/integration_tests/team_assignment.test.js @@ -49,7 +49,8 @@ describe('Team Assignment', () => { describe(`when the codeowners file contains #CC#`, () => { it(`should strip the prefix and still drill down through the fs`, async () => { const { stdout } = await execa('grep', ['tre', teamAssignmentsPath], { cwd: ROOT_DIR }); - expect(stdout).to.be(`x-pack/plugins/code/server/config.ts kibana-tre + expect(stdout).to.be(`x-pack/plugins/code/jest.config.js kibana-tre +x-pack/plugins/code/server/config.ts kibana-tre x-pack/plugins/code/server/index.ts kibana-tre x-pack/plugins/code/server/plugin.test.ts kibana-tre x-pack/plugins/code/server/plugin.ts kibana-tre`); diff --git a/src/dev/code_coverage/shell_scripts/fix_html_reports_parallel.sh b/src/dev/code_coverage/shell_scripts/fix_html_reports_parallel.sh index 098737eb2f800a..01003b6dc880c7 100644 --- a/src/dev/code_coverage/shell_scripts/fix_html_reports_parallel.sh +++ b/src/dev/code_coverage/shell_scripts/fix_html_reports_parallel.sh @@ -8,8 +8,8 @@ PWD=$(pwd) du -sh $COMBINED_EXRACT_DIR echo "### Jest: replacing path in json files" -for i in coverage-final xpack-coverage-final; do - sed -i "s|/dev/shm/workspace/kibana|${PWD}|g" $COMBINED_EXRACT_DIR/jest/${i}.json & +for i in oss oss-integration xpack; do + sed -i "s|/dev/shm/workspace/kibana|${PWD}|g" $COMBINED_EXRACT_DIR/jest/${i}-coverage-final.json & done wait diff --git a/src/dev/jest.config.js b/src/dev/jest.config.js new file mode 100644 index 00000000000000..bdb51372e2c267 --- /dev/null +++ b/src/dev/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/dev'], +}; diff --git a/src/dev/jest/cli.js b/src/dev/jest/cli.js deleted file mode 100644 index 40627c4bece74f..00000000000000 --- a/src/dev/jest/cli.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { run } from 'jest'; - -run(process.argv.slice(2)); diff --git a/src/dev/jest/config.integration.js b/src/dev/jest/config.integration.js deleted file mode 100644 index 9e7bbc34ac711b..00000000000000 --- a/src/dev/jest/config.integration.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import preset from '@kbn/test/jest-preset'; -import config from './config'; - -export default { - ...config, - testMatch: [ - '**/integration_tests/**/*.test.js', - '**/integration_tests/**/*.test.ts', - '**/integration_tests/**/*.test.tsx', - ], - testPathIgnorePatterns: preset.testPathIgnorePatterns.filter( - (pattern) => !pattern.includes('integration_tests') - ), - reporters: [ - 'default', - [ - '/packages/kbn-test/target/jest/junit_reporter', - { reportName: 'Jest Integration Tests' }, - ], - ], - setupFilesAfterEnv: ['/packages/kbn-test/target/jest/setup/after_env.integration.js'], -}; diff --git a/src/dev/jest/config.js b/src/dev/jest/config.js deleted file mode 100644 index 93d7218b11c281..00000000000000 --- a/src/dev/jest/config.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export default { - preset: '@kbn/test', - rootDir: '../../..', - roots: [ - '/src/plugins', - '/src/legacy/ui', - '/src/core', - '/src/legacy/server', - '/src/cli', - '/src/cli_keystore', - '/src/cli_encryption_keys', - '/src/cli_plugin', - '/packages/kbn-test/target/functional_test_runner', - '/src/dev', - '/src/optimize', - '/src/legacy/utils', - '/src/setup_node_env', - '/packages', - '/src/test_utils', - '/test/functional/services/remote', - '/src/dev/code_coverage/ingest_coverage', - ], - testRunner: 'jasmine2', -}; diff --git a/src/dev/plugin_discovery/find_plugins.ts b/src/dev/plugin_discovery/find_plugins.ts index 4e7c34698c9648..e07c503e213307 100644 --- a/src/dev/plugin_discovery/find_plugins.ts +++ b/src/dev/plugin_discovery/find_plugins.ts @@ -17,9 +17,12 @@ * under the License. */ import Path from 'path'; -import { REPO_ROOT } from '@kbn/dev-utils'; import { getPluginSearchPaths } from '@kbn/config'; -import { KibanaPlatformPlugin, simpleKibanaPlatformPluginDiscovery } from '@kbn/dev-utils'; +import { + KibanaPlatformPlugin, + REPO_ROOT, + simpleKibanaPlatformPluginDiscovery, +} from '@kbn/dev-utils'; export interface SearchOptions { oss: boolean; diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 8448d20aa2fc88..69a657357a8034 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -30,6 +30,7 @@ export const IGNORE_FILE_GLOBS = [ 'docs/**/*', '**/bin/**/*', '**/+([A-Z_]).md', + '**/+([A-Z_]).mdx', '**/+([A-Z_]).asciidoc', '**/LICENSE', '**/*.txt', diff --git a/src/dev/precommit_hook/get_files_for_commit.js b/src/dev/precommit_hook/get_files_for_commit.js index e700b587821749..d8812894d559f5 100644 --- a/src/dev/precommit_hook/get_files_for_commit.js +++ b/src/dev/precommit_hook/get_files_for_commit.js @@ -27,13 +27,13 @@ import { File } from '../file'; * Get the files that are staged for commit (excluding deleted files) * as `File` objects that are aware of their commit status. * - * @param {String} repoPath + * @param {String} gitRef * @return {Promise>} */ -export async function getFilesForCommit() { +export async function getFilesForCommit(gitRef) { const simpleGit = new SimpleGit(REPO_ROOT); - - const output = await fcb((cb) => simpleGit.diff(['--name-status', '--cached'], cb)); + const gitRefForDiff = gitRef ? gitRef : '--cached'; + const output = await fcb((cb) => simpleGit.diff(['--name-status', gitRefForDiff], cb)); return ( output diff --git a/src/dev/run_find_plugin_circular_deps.ts b/src/dev/run_find_plugin_circular_deps.ts deleted file mode 100644 index 501e2c4fed0480..00000000000000 --- a/src/dev/run_find_plugin_circular_deps.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { run } from '@kbn/dev-utils'; -import { findPlugins, getPluginDeps, SearchErrors } from './plugin_discovery'; - -interface AllOptions { - examples?: boolean; - extraPluginScanDirs?: string[]; -} - -run( - async ({ flags, log }) => { - const { examples = false, extraPluginScanDirs = [] } = flags as AllOptions; - - const pluginMap = findPlugins({ - oss: false, - examples, - extraPluginScanDirs, - }); - - const allErrors = new Map(); - for (const pluginId of pluginMap.keys()) { - const { errors } = getPluginDeps({ - pluginMap, - id: pluginId, - }); - - for (const [errorId, error] of errors) { - if (!allErrors.has(errorId)) { - allErrors.set(errorId, error); - } - } - } - - if (allErrors.size > 0) { - allErrors.forEach((error) => { - log.warning( - `Circular refs detected: ${[...error.stack, error.to].map((p) => `[${p}]`).join(' --> ')}` - ); - }); - } - }, - { - flags: { - boolean: ['examples'], - default: { - examples: false, - }, - allowUnexpected: false, - help: ` - --examples Include examples folder - --extraPluginScanDirs Include extra scan folder - `, - }, - } -); diff --git a/src/dev/run_find_plugins_with_circular_deps.ts b/src/dev/run_find_plugins_with_circular_deps.ts new file mode 100644 index 00000000000000..65a03a87525d71 --- /dev/null +++ b/src/dev/run_find_plugins_with_circular_deps.ts @@ -0,0 +1,214 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import dedent from 'dedent'; +import { parseDependencyTree, parseCircular, prettyCircular } from 'dpdm'; +import { relative } from 'path'; +import { getPluginSearchPaths } from '@kbn/config'; +import { REPO_ROOT, run } from '@kbn/dev-utils'; + +interface Options { + debug?: boolean; + filter?: string; +} + +type CircularDepList = Set; + +const allowedList: CircularDepList = new Set([ + 'src/plugins/charts -> src/plugins/expressions', + 'src/plugins/charts -> src/plugins/vis_default_editor', + 'src/plugins/data -> src/plugins/embeddable', + 'src/plugins/data -> src/plugins/expressions', + 'src/plugins/data -> src/plugins/ui_actions', + 'src/plugins/embeddable -> src/plugins/ui_actions', + 'src/plugins/expressions -> src/plugins/visualizations', + 'src/plugins/vis_default_editor -> src/plugins/visualizations', + 'src/plugins/vis_default_editor -> src/plugins/visualize', + 'src/plugins/visualizations -> src/plugins/visualize', + 'x-pack/plugins/actions -> x-pack/plugins/case', + 'x-pack/plugins/apm -> x-pack/plugins/infra', + 'x-pack/plugins/lists -> x-pack/plugins/security_solution', + 'x-pack/plugins/security -> x-pack/plugins/spaces', +]); + +run( + async ({ flags, log }) => { + const { debug, filter } = flags as Options; + const foundList: CircularDepList = new Set(); + + const pluginSearchPathGlobs = getPluginSearchPaths({ + rootDir: REPO_ROOT, + oss: false, + examples: true, + }).map((pluginFolderPath) => `${relative(REPO_ROOT, pluginFolderPath)}/**/*`); + + const depTree = await parseDependencyTree(pluginSearchPathGlobs, { + context: REPO_ROOT, + }); + + // Build list of circular dependencies as well as the circular dependencies full paths + const circularDependenciesFullPaths = parseCircular(depTree).filter((circularDeps) => { + const first = circularDeps[0]; + const last = circularDeps[circularDeps.length - 1]; + const matchRegex = /(?(src|x-pack)\/plugins|examples|x-pack\/examples)\/(?[^\/]*)\/.*/; + const firstMatch = first.match(matchRegex); + const lastMatch = last.match(matchRegex); + + if ( + firstMatch?.groups?.pluginFolder && + firstMatch?.groups?.pluginName && + lastMatch?.groups?.pluginFolder && + lastMatch?.groups?.pluginName + ) { + const firstPlugin = `${firstMatch.groups.pluginFolder}/${firstMatch.groups.pluginName}`; + const lastPlugin = `${lastMatch.groups.pluginFolder}/${lastMatch.groups.pluginName}`; + const sortedPlugins = [firstPlugin, lastPlugin].sort(); + + // Exclude if both plugin paths involved in the circular dependency + // doesn't includes the provided filter + if (filter && !firstPlugin.includes(filter) && !lastPlugin.includes(filter)) { + return false; + } + + if (firstPlugin !== lastPlugin) { + foundList.add(`${sortedPlugins[0]} -> ${sortedPlugins[1]}`); + return true; + } + } + + return false; + }); + + if (!debug && filter) { + log.warning( + dedent(` + !!!!!!!!!!!!!! WARNING: FILTER WITHOUT DEBUG !!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Using the --filter flag without using --debug flag ! + ! will not allow you to see the filtered list of ! + ! the correct results. ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + `) + ); + } + + if (debug && filter) { + log.warning( + dedent(` + !!!!!!!!!!!!!!! WARNING: FILTER FLAG IS ON !!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Be aware the following results are not complete as ! + ! --filter flag has been passed. Ignore suggestions ! + ! to update the allowedList or any reports of failures ! + ! or successes. ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + The following filter has peen passed: ${filter} + `) + ); + } + + // Log the full circular dependencies path if we are under debug flag + if (debug && circularDependenciesFullPaths.length > 0) { + log.debug( + dedent(` + !!!!!!!!!!!!!! CIRCULAR DEPENDENCIES FOUND !!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Circular dependencies were found, you can find below ! + ! all the paths involved. ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + `) + ); + log.debug(`${prettyCircular(circularDependenciesFullPaths)}\n`); + } + + // Always log the result of comparing the found list with the allowed list + const diffSet = (first: CircularDepList, second: CircularDepList) => + new Set([...first].filter((circularDep) => !second.has(circularDep))); + + const printList = (list: CircularDepList) => { + return Array.from(list) + .sort() + .reduce((listStr, entry) => { + return listStr ? `${listStr}\n'${entry}',` : `'${entry}',`; + }, ''); + }; + + const foundDifferences = diffSet(foundList, allowedList); + + if (debug && !foundDifferences.size) { + log.debug( + dedent(` + !!!!!!!!!!!!!!!!! UP TO DATE ALLOWED LIST !!!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! The declared circular dependencies allowed list is up ! + ! to date and includes every plugin listed in above paths. ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + The allowed circular dependencies list is (#${allowedList.size}): + ${printList(allowedList)} + `) + ); + } + + if (foundDifferences.size > 0) { + log.error( + dedent(` + !!!!!!!!!!!!!!!!! OUT OF DATE ALLOWED LIST !!!!!!!!!!!!!!!!! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! The declared circular dependencies allowed list is out ! + ! of date. Please run the following locally to know more: ! + ! ! + ! 'node scripts/find_plugins_with_circular_deps --debug' ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + The allowed circular dependencies list is (#${allowedList.size}): + ${printList(allowedList)} + + The found circular dependencies list is (#${foundList.size}): + ${printList(foundList)} + + The differences between both are (#${foundDifferences.size}): + ${printList(foundDifferences)} + + FAILED: circular dependencies in the allowed list declared on the file '${__filename}' did not match the found ones. + `) + ); + + process.exit(1); + } + + log.success('None non allowed circular dependencies were found'); + }, + { + description: + 'Searches circular dependencies between plugins located under src/plugins, x-pack/plugins, examples and x-pack/examples', + flags: { + boolean: ['debug'], + string: ['filter'], + default: { + debug: false, + }, + help: ` + --debug Run the script in debug mode which enables detailed path logs for circular dependencies + --filter It will only include in the results circular deps where the plugin paths contains parts of the passed string in the filter + `, + }, + } +); diff --git a/src/dev/run_precommit_hook.js b/src/dev/run_precommit_hook.js index 455fe65e56d162..59b9ccc4860313 100644 --- a/src/dev/run_precommit_hook.js +++ b/src/dev/run_precommit_hook.js @@ -17,16 +17,30 @@ * under the License. */ -import { run, combineErrors } from '@kbn/dev-utils'; +import { run, combineErrors, createFlagError } from '@kbn/dev-utils'; import * as Eslint from './eslint'; import * as Sasslint from './sasslint'; import { getFilesForCommit, checkFileCasing } from './precommit_hook'; run( async ({ log, flags }) => { - const files = await getFilesForCommit(); + const files = await getFilesForCommit(flags.ref); const errors = []; + const maxFilesCount = flags['max-files'] + ? Number.parseInt(String(flags['max-files']), 10) + : undefined; + if (maxFilesCount !== undefined && (!Number.isFinite(maxFilesCount) || maxFilesCount < 1)) { + throw createFlagError('expected --max-files to be a number greater than 0'); + } + + if (maxFilesCount && files.length > maxFilesCount) { + log.warning( + `--max-files is set to ${maxFilesCount} and ${files.length} were discovered. The current script execution will be skipped.` + ); + return; + } + try { await checkFileCasing(log, files); } catch (error) { @@ -52,15 +66,18 @@ run( }, { description: ` - Run checks on files that are staged for commit + Run checks on files that are staged for commit by default `, flags: { boolean: ['fix'], + string: ['max-files', 'ref'], default: { fix: false, }, help: ` --fix Execute eslint in --fix mode + --max-files Max files number to check against. If exceeded the script will skip the execution + --ref Run checks against any git ref files (example HEAD or ) instead of running against staged ones `, }, } diff --git a/src/dev/typescript/projects.ts b/src/dev/typescript/projects.ts index 9891e9fa02c82d..6a13a86ba55a54 100644 --- a/src/dev/typescript/projects.ts +++ b/src/dev/typescript/projects.ts @@ -27,7 +27,6 @@ export const PROJECTS = [ new Project(resolve(REPO_ROOT, 'test/tsconfig.json'), { name: 'kibana/test' }), new Project(resolve(REPO_ROOT, 'x-pack/tsconfig.json')), new Project(resolve(REPO_ROOT, 'x-pack/test/tsconfig.json'), { name: 'x-pack/test' }), - new Project(resolve(REPO_ROOT, 'src/test_utils/tsconfig.json')), new Project(resolve(REPO_ROOT, 'src/core/tsconfig.json')), new Project(resolve(REPO_ROOT, 'x-pack/plugins/security_solution/cypress/tsconfig.json'), { name: 'security_solution/cypress', diff --git a/src/legacy/server/config/schema.js b/src/legacy/server/config/schema.js index a9b5eec45a75bd..0e85a46d7d2494 100644 --- a/src/legacy/server/config/schema.js +++ b/src/legacy/server/config/schema.js @@ -69,6 +69,7 @@ export default () => customResponseHeaders: HANDLED_IN_NEW_PLATFORM, keepaliveTimeout: HANDLED_IN_NEW_PLATFORM, maxPayloadBytes: HANDLED_IN_NEW_PLATFORM, + publicBaseUrl: HANDLED_IN_NEW_PLATFORM, socketTimeout: HANDLED_IN_NEW_PLATFORM, ssl: HANDLED_IN_NEW_PLATFORM, compression: HANDLED_IN_NEW_PLATFORM, diff --git a/src/legacy/server/jest.config.js b/src/legacy/server/jest.config.js new file mode 100644 index 00000000000000..f971e823765ac1 --- /dev/null +++ b/src/legacy/server/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/legacy/server'], +}; diff --git a/src/legacy/server/kbn_server.js b/src/legacy/server/kbn_server.js index b61a86326ca1a5..14f083acd42c25 100644 --- a/src/legacy/server/kbn_server.js +++ b/src/legacy/server/kbn_server.js @@ -20,7 +20,6 @@ import { constant, once, compact, flatten } from 'lodash'; import { reconfigureLogging } from '@kbn/legacy-logging'; -import { isWorker } from 'cluster'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { fromRoot, pkg } from '../../core/server/utils'; import { Config } from './config'; @@ -121,9 +120,9 @@ export default class KbnServer { const { server, config } = this; - if (isWorker) { + if (process.env.isDevCliChild) { // help parent process know when we are ready - process.send(['WORKER_LISTENING']); + process.send(['SERVER_LISTENING']); } server.log( diff --git a/src/legacy/ui/jest.config.js b/src/legacy/ui/jest.config.js new file mode 100644 index 00000000000000..45809f87971294 --- /dev/null +++ b/src/legacy/ui/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/legacy/ui'], +}; diff --git a/src/legacy/utils/jest.config.js b/src/legacy/utils/jest.config.js new file mode 100644 index 00000000000000..7ce73fa3676139 --- /dev/null +++ b/src/legacy/utils/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/legacy/utils'], +}; diff --git a/src/optimize/jest.config.js b/src/optimize/jest.config.js new file mode 100644 index 00000000000000..419f4f97098b30 --- /dev/null +++ b/src/optimize/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/optimize'], +}; diff --git a/src/plugins/advanced_settings/jest.config.js b/src/plugins/advanced_settings/jest.config.js new file mode 100644 index 00000000000000..94fd65aae44645 --- /dev/null +++ b/src/plugins/advanced_settings/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/advanced_settings'], +}; diff --git a/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx b/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx index bbc27ca025ede6..48fa7ee4dc14b8 100644 --- a/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx +++ b/src/plugins/advanced_settings/public/management_app/advanced_settings.tsx @@ -22,7 +22,7 @@ import { Subscription } from 'rxjs'; import { Comparators, EuiFlexGroup, EuiFlexItem, EuiSpacer, Query } from '@elastic/eui'; import { useParams } from 'react-router-dom'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { CallOuts } from './components/call_outs'; import { Search } from './components/search'; import { Form } from './components/form'; @@ -40,7 +40,7 @@ interface AdvancedSettingsProps { dockLinks: DocLinksStart['links']; toasts: ToastsStart; componentRegistry: ComponentRegistry['start']; - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } interface AdvancedSettingsComponentProps extends AdvancedSettingsProps { diff --git a/src/plugins/advanced_settings/public/management_app/components/field/field.tsx b/src/plugins/advanced_settings/public/management_app/components/field/field.tsx index e9fa2833c3db5f..ad938d339f681e 100644 --- a/src/plugins/advanced_settings/public/management_app/components/field/field.tsx +++ b/src/plugins/advanced_settings/public/management_app/components/field/field.tsx @@ -263,7 +263,7 @@ export class Field extends PureComponent { return new Promise((resolve, reject) => { reader.onload = () => { - resolve(reader.result || undefined); + resolve(reader.result!); }; reader.onerror = (err) => { reject(err); diff --git a/src/plugins/advanced_settings/public/management_app/components/form/form.tsx b/src/plugins/advanced_settings/public/management_app/components/form/form.tsx index c30768a262056e..2eabaac7efb01f 100644 --- a/src/plugins/advanced_settings/public/management_app/components/form/form.tsx +++ b/src/plugins/advanced_settings/public/management_app/components/form/form.tsx @@ -36,7 +36,7 @@ import { import { FormattedMessage } from '@kbn/i18n/react'; import { isEmpty } from 'lodash'; import { i18n } from '@kbn/i18n'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { toMountPoint } from '../../../../../kibana_react/public'; import { DocLinksStart, ToastsStart } from '../../../../../../core/public'; @@ -57,7 +57,7 @@ interface FormProps { enableSaving: boolean; dockLinks: DocLinksStart['links']; toasts: ToastsStart; - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } interface FormState { diff --git a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx index 0b3d73cb28806f..c6fe78f7751e7a 100644 --- a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx +++ b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx @@ -57,7 +57,7 @@ export async function mountManagementSection( const [{ uiSettings, notifications, docLinks, application, chrome }] = await getStartServices(); const canSave = application.capabilities.advancedSettings.save as boolean; - const trackUiMetric = usageCollection?.reportUiStats.bind(usageCollection, 'advanced_settings'); + const trackUiMetric = usageCollection?.reportUiCounter.bind(usageCollection, 'advanced_settings'); if (!canSave) { chrome.setBadge(readOnlyBadge); diff --git a/src/plugins/advanced_settings/public/management_app/types.ts b/src/plugins/advanced_settings/public/management_app/types.ts index 05e695f9985000..ebeadc90cb7ef3 100644 --- a/src/plugins/advanced_settings/public/management_app/types.ts +++ b/src/plugins/advanced_settings/public/management_app/types.ts @@ -17,7 +17,7 @@ * under the License. */ -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { UiSettingsType, StringValidation, ImageValidation } from '../../../../core/public'; export interface FieldSetting { @@ -41,7 +41,7 @@ export interface FieldSetting { docLinksKey: string; }; metric?: { - type: UiStatsMetricType; + type: UiCounterMetricType; name: string; }; } diff --git a/src/plugins/bfetch/jest.config.js b/src/plugins/bfetch/jest.config.js new file mode 100644 index 00000000000000..5976a994be7e57 --- /dev/null +++ b/src/plugins/bfetch/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/bfetch'], +}; diff --git a/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts b/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts index da6c940c48d0ae..3498f205b32865 100644 --- a/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts +++ b/src/plugins/bfetch/public/batching/create_streaming_batched_function.test.ts @@ -19,7 +19,7 @@ import { createStreamingBatchedFunction } from './create_streaming_batched_function'; import { fetchStreaming as fetchStreamingReal } from '../streaming/fetch_streaming'; -import { defer, of } from '../../../kibana_utils/public'; +import { AbortError, defer, of } from '../../../kibana_utils/public'; import { Subject } from 'rxjs'; const getPromiseState = (promise: Promise): Promise<'resolved' | 'rejected' | 'pending'> => @@ -30,7 +30,7 @@ const getPromiseState = (promise: Promise): Promise<'resolved' | 'rejec () => resolve('rejected') ) ), - new Promise<'pending'>((resolve) => resolve()).then(() => 'pending'), + new Promise<'pending'>((resolve) => resolve('pending')).then(() => 'pending'), ]); const isPending = (promise: Promise): Promise => @@ -168,6 +168,28 @@ describe('createStreamingBatchedFunction()', () => { expect(fetchStreaming).toHaveBeenCalledTimes(1); }); + test('ignores a request with an aborted signal', async () => { + const { fetchStreaming } = setup(); + const fn = createStreamingBatchedFunction({ + url: '/test', + fetchStreaming, + maxItemAge: 5, + flushOnMaxItems: 3, + }); + + const abortController = new AbortController(); + abortController.abort(); + + of(fn({ foo: 'bar' }, abortController.signal)); + fn({ baz: 'quix' }); + + await new Promise((r) => setTimeout(r, 6)); + const { body } = fetchStreaming.mock.calls[0][0]; + expect(JSON.parse(body)).toEqual({ + batch: [{ baz: 'quix' }], + }); + }); + test('sends POST request to correct endpoint with items in array batched sorted in call order', async () => { const { fetchStreaming } = setup(); const fn = createStreamingBatchedFunction({ @@ -423,6 +445,73 @@ describe('createStreamingBatchedFunction()', () => { expect(result3).toEqual({ b: '3' }); }); + describe('when requests are aborted', () => { + test('aborts stream when all are aborted', async () => { + const { fetchStreaming } = setup(); + const fn = createStreamingBatchedFunction({ + url: '/test', + fetchStreaming, + maxItemAge: 5, + flushOnMaxItems: 3, + }); + + const abortController = new AbortController(); + const promise = fn({ a: '1' }, abortController.signal); + const promise2 = fn({ a: '2' }, abortController.signal); + await new Promise((r) => setTimeout(r, 6)); + + expect(await isPending(promise)).toBe(true); + expect(await isPending(promise2)).toBe(true); + + abortController.abort(); + await new Promise((r) => setTimeout(r, 6)); + + expect(await isPending(promise)).toBe(false); + expect(await isPending(promise2)).toBe(false); + const [, error] = await of(promise); + const [, error2] = await of(promise2); + expect(error).toBeInstanceOf(AbortError); + expect(error2).toBeInstanceOf(AbortError); + expect(fetchStreaming.mock.calls[0][0].signal.aborted).toBeTruthy(); + }); + + test('rejects promise on abort and lets others continue', async () => { + const { fetchStreaming, stream } = setup(); + const fn = createStreamingBatchedFunction({ + url: '/test', + fetchStreaming, + maxItemAge: 5, + flushOnMaxItems: 3, + }); + + const abortController = new AbortController(); + const promise = fn({ a: '1' }, abortController.signal); + const promise2 = fn({ a: '2' }); + await new Promise((r) => setTimeout(r, 6)); + + expect(await isPending(promise)).toBe(true); + + abortController.abort(); + await new Promise((r) => setTimeout(r, 6)); + + expect(await isPending(promise)).toBe(false); + const [, error] = await of(promise); + expect(error).toBeInstanceOf(AbortError); + + stream.next( + JSON.stringify({ + id: 1, + result: { b: '2' }, + }) + '\n' + ); + + await new Promise((r) => setTimeout(r, 1)); + + const [result2] = await of(promise2); + expect(result2).toEqual({ b: '2' }); + }); + }); + describe('when stream closes prematurely', () => { test('rejects pending promises with CONNECTION error code', async () => { const { fetchStreaming, stream } = setup(); @@ -558,5 +647,41 @@ describe('createStreamingBatchedFunction()', () => { }); }); }); + + test('rejects with STREAM error on JSON parse error only pending promises', async () => { + const { fetchStreaming, stream } = setup(); + const fn = createStreamingBatchedFunction({ + url: '/test', + fetchStreaming, + maxItemAge: 5, + flushOnMaxItems: 3, + }); + + const promise1 = of(fn({ a: '1' })); + const promise2 = of(fn({ a: '2' })); + + await new Promise((r) => setTimeout(r, 6)); + + stream.next( + JSON.stringify({ + id: 1, + result: { b: '1' }, + }) + '\n' + ); + + stream.next('Not a JSON\n'); + + await new Promise((r) => setTimeout(r, 1)); + + const [, error1] = await promise1; + const [result1] = await promise2; + expect(error1).toMatchObject({ + message: 'Unexpected token N in JSON at position 0', + code: 'STREAM', + }); + expect(result1).toMatchObject({ + b: '1', + }); + }); }); }); diff --git a/src/plugins/bfetch/public/batching/create_streaming_batched_function.ts b/src/plugins/bfetch/public/batching/create_streaming_batched_function.ts index 89793fff6b3259..f3971ed04efa7b 100644 --- a/src/plugins/bfetch/public/batching/create_streaming_batched_function.ts +++ b/src/plugins/bfetch/public/batching/create_streaming_batched_function.ts @@ -17,7 +17,7 @@ * under the License. */ -import { defer, Defer } from '../../../kibana_utils/public'; +import { AbortError, abortSignalToPromise, defer } from '../../../kibana_utils/public'; import { ItemBufferParams, TimedItemBufferParams, @@ -27,13 +27,7 @@ import { } from '../../common'; import { fetchStreaming, split } from '../streaming'; import { normalizeError } from '../../common'; - -export interface BatchItem { - payload: Payload; - future: Defer; -} - -export type BatchedFunc = (payload: Payload) => Promise; +import { BatchedFunc, BatchItem } from './types'; export interface BatchedFunctionProtocolError extends ErrorLike { code: string; @@ -82,43 +76,84 @@ export const createStreamingBatchedFunction = ( flushOnMaxItems = 25, maxItemAge = 10, } = params; - const [fn] = createBatchedFunction, BatchItem>({ - onCall: (payload: Payload) => { + const [fn] = createBatchedFunction({ + onCall: (payload: Payload, signal?: AbortSignal) => { const future = defer(); const entry: BatchItem = { payload, future, + signal, }; return [future.promise, entry]; }, onBatch: async (items) => { try { - let responsesReceived = 0; - const batch = items.map(({ payload }) => payload); + // Filter out any items whose signal is already aborted + items = items.filter((item) => { + if (item.signal?.aborted) item.future.reject(new AbortError()); + return !item.signal?.aborted; + }); + + const donePromises: Array> = items.map((item) => { + return new Promise((resolve) => { + const { promise: abortPromise, cleanup } = item.signal + ? abortSignalToPromise(item.signal) + : { + promise: undefined, + cleanup: () => {}, + }; + + const onDone = () => { + resolve(); + cleanup(); + }; + if (abortPromise) + abortPromise.catch(() => { + item.future.reject(new AbortError()); + onDone(); + }); + item.future.promise.then(onDone, onDone); + }); + }); + + // abort when all items were either resolved, rejected or aborted + const abortController = new AbortController(); + let isBatchDone = false; + Promise.all(donePromises).then(() => { + isBatchDone = true; + abortController.abort(); + }); + const batch = items.map((item) => item.payload); + const { stream } = fetchStreamingInjected({ url, body: JSON.stringify({ batch }), method: 'POST', + signal: abortController.signal, }); + + const handleStreamError = (error: any) => { + const normalizedError = normalizeError(error); + normalizedError.code = 'STREAM'; + for (const { future } of items) future.reject(normalizedError); + }; + stream.pipe(split('\n')).subscribe({ next: (json: string) => { - const response = JSON.parse(json) as BatchResponseItem; - if (response.error) { - responsesReceived++; - items[response.id].future.reject(response.error); - } else if (response.result !== undefined) { - responsesReceived++; - items[response.id].future.resolve(response.result); + try { + const response = JSON.parse(json) as BatchResponseItem; + if (response.error) { + items[response.id].future.reject(response.error); + } else if (response.result !== undefined) { + items[response.id].future.resolve(response.result); + } + } catch (e) { + handleStreamError(e); } }, - error: (error) => { - const normalizedError = normalizeError(error); - normalizedError.code = 'STREAM'; - for (const { future } of items) future.reject(normalizedError); - }, + error: handleStreamError, complete: () => { - const streamTerminatedPrematurely = responsesReceived !== items.length; - if (streamTerminatedPrematurely) { + if (!isBatchDone) { const error: BatchedFunctionProtocolError = { message: 'Connection terminated prematurely.', code: 'CONNECTION', diff --git a/src/plugins/bfetch/public/batching/types.ts b/src/plugins/bfetch/public/batching/types.ts new file mode 100644 index 00000000000000..68860c5d9eedf0 --- /dev/null +++ b/src/plugins/bfetch/public/batching/types.ts @@ -0,0 +1,31 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Defer } from '../../../kibana_utils/public'; + +export interface BatchItem { + payload: Payload; + future: Defer; + signal?: AbortSignal; +} + +export type BatchedFunc = ( + payload: Payload, + signal?: AbortSignal +) => Promise; diff --git a/src/plugins/bfetch/public/index.ts b/src/plugins/bfetch/public/index.ts index 8707e5a438159d..7ff110105faa0d 100644 --- a/src/plugins/bfetch/public/index.ts +++ b/src/plugins/bfetch/public/index.ts @@ -23,6 +23,8 @@ import { BfetchPublicPlugin } from './plugin'; export { BfetchPublicSetup, BfetchPublicStart, BfetchPublicContract } from './plugin'; export { split } from './streaming'; +export { BatchedFunc } from './batching/types'; + export function plugin(initializerContext: PluginInitializerContext) { return new BfetchPublicPlugin(initializerContext); } diff --git a/src/plugins/bfetch/public/plugin.ts b/src/plugins/bfetch/public/plugin.ts index 5f01957c0908ec..72aaa862b0ad21 100644 --- a/src/plugins/bfetch/public/plugin.ts +++ b/src/plugins/bfetch/public/plugin.ts @@ -22,9 +22,9 @@ import { fetchStreaming as fetchStreamingStatic, FetchStreamingParams } from './ import { removeLeadingSlash } from '../common'; import { createStreamingBatchedFunction, - BatchedFunc, StreamingBatchedFunctionParams, } from './batching/create_streaming_batched_function'; +import { BatchedFunc } from './batching/types'; // eslint-disable-next-line export interface BfetchPublicSetupDependencies {} diff --git a/src/plugins/bfetch/public/streaming/fetch_streaming.test.ts b/src/plugins/bfetch/public/streaming/fetch_streaming.test.ts index 27adc6dc8b5490..7a6827b8fee8e8 100644 --- a/src/plugins/bfetch/public/streaming/fetch_streaming.test.ts +++ b/src/plugins/bfetch/public/streaming/fetch_streaming.test.ts @@ -132,6 +132,33 @@ test('completes stream observable when request finishes', async () => { expect(spy).toHaveBeenCalledTimes(1); }); +test('completes stream observable when aborted', async () => { + const env = setup(); + const abort = new AbortController(); + const { stream } = fetchStreaming({ + url: 'http://example.com', + signal: abort.signal, + }); + + const spy = jest.fn(); + stream.subscribe({ + complete: spy, + }); + + expect(spy).toHaveBeenCalledTimes(0); + + (env.xhr as any).responseText = 'foo'; + env.xhr.onprogress!({} as any); + + abort.abort(); + + (env.xhr as any).readyState = 4; + (env.xhr as any).status = 200; + env.xhr.onreadystatechange!({} as any); + + expect(spy).toHaveBeenCalledTimes(1); +}); + test('promise throws when request errors', async () => { const env = setup(); const { stream } = fetchStreaming({ diff --git a/src/plugins/bfetch/public/streaming/fetch_streaming.ts b/src/plugins/bfetch/public/streaming/fetch_streaming.ts index 899e8a1824a410..3deee0cf66add6 100644 --- a/src/plugins/bfetch/public/streaming/fetch_streaming.ts +++ b/src/plugins/bfetch/public/streaming/fetch_streaming.ts @@ -24,6 +24,7 @@ export interface FetchStreamingParams { headers?: Record; method?: 'GET' | 'POST'; body?: string; + signal?: AbortSignal; } /** @@ -35,6 +36,7 @@ export function fetchStreaming({ headers = {}, method = 'POST', body = '', + signal, }: FetchStreamingParams) { const xhr = new window.XMLHttpRequest(); @@ -45,7 +47,7 @@ export function fetchStreaming({ // Set the HTTP headers Object.entries(headers).forEach(([k, v]) => xhr.setRequestHeader(k, v)); - const stream = fromStreamingXhr(xhr); + const stream = fromStreamingXhr(xhr, signal); // Send the payload to the server xhr.send(body); diff --git a/src/plugins/bfetch/public/streaming/from_streaming_xhr.test.ts b/src/plugins/bfetch/public/streaming/from_streaming_xhr.test.ts index 40eb3d5e2556bb..b15bf9bdfbbb09 100644 --- a/src/plugins/bfetch/public/streaming/from_streaming_xhr.test.ts +++ b/src/plugins/bfetch/public/streaming/from_streaming_xhr.test.ts @@ -21,6 +21,7 @@ import { fromStreamingXhr } from './from_streaming_xhr'; const createXhr = (): XMLHttpRequest => (({ + abort: () => {}, onprogress: () => {}, onreadystatechange: () => {}, readyState: 0, @@ -100,6 +101,39 @@ test('completes observable when request reaches end state', () => { expect(complete).toHaveBeenCalledTimes(1); }); +test('completes observable when aborted', () => { + const xhr = createXhr(); + const abortController = new AbortController(); + const observable = fromStreamingXhr(xhr, abortController.signal); + + const next = jest.fn(); + const complete = jest.fn(); + observable.subscribe({ + next, + complete, + }); + + (xhr as any).responseText = '1'; + xhr.onprogress!({} as any); + + (xhr as any).responseText = '2'; + xhr.onprogress!({} as any); + + expect(complete).toHaveBeenCalledTimes(0); + + (xhr as any).readyState = 2; + abortController.abort(); + + expect(complete).toHaveBeenCalledTimes(1); + + // Shouldn't trigger additional events + (xhr as any).readyState = 4; + (xhr as any).status = 200; + xhr.onreadystatechange!({} as any); + + expect(complete).toHaveBeenCalledTimes(1); +}); + test('errors observable if request returns with error', () => { const xhr = createXhr(); const observable = fromStreamingXhr(xhr); diff --git a/src/plugins/bfetch/public/streaming/from_streaming_xhr.ts b/src/plugins/bfetch/public/streaming/from_streaming_xhr.ts index bba8151958492b..5df1f5258cb2da 100644 --- a/src/plugins/bfetch/public/streaming/from_streaming_xhr.ts +++ b/src/plugins/bfetch/public/streaming/from_streaming_xhr.ts @@ -26,13 +26,17 @@ import { Observable, Subject } from 'rxjs'; export const fromStreamingXhr = ( xhr: Pick< XMLHttpRequest, - 'onprogress' | 'onreadystatechange' | 'readyState' | 'status' | 'responseText' - > + 'onprogress' | 'onreadystatechange' | 'readyState' | 'status' | 'responseText' | 'abort' + >, + signal?: AbortSignal ): Observable => { const subject = new Subject(); let index = 0; + let aborted = false; const processBatch = () => { + if (aborted) return; + const { responseText } = xhr; if (index >= responseText.length) return; subject.next(responseText.substr(index)); @@ -41,7 +45,19 @@ export const fromStreamingXhr = ( xhr.onprogress = processBatch; + const onBatchAbort = () => { + if (xhr.readyState !== 4) { + aborted = true; + xhr.abort(); + subject.complete(); + if (signal) signal.removeEventListener('abort', onBatchAbort); + } + }; + + if (signal) signal.addEventListener('abort', onBatchAbort); + xhr.onreadystatechange = () => { + if (aborted) return; // Older browsers don't support onprogress, so we need // to call this here, too. It's safe to call this multiple // times even for the same progress event. @@ -49,6 +65,8 @@ export const fromStreamingXhr = ( // 4 is the magic number that means the request is done if (xhr.readyState === 4) { + if (signal) signal.removeEventListener('abort', onBatchAbort); + // 0 indicates a network failure. 400+ messages are considered server errors if (xhr.status === 0 || xhr.status >= 400) { subject.error(new Error(`Batch request failed with status ${xhr.status}`)); diff --git a/src/plugins/charts/README.md b/src/plugins/charts/README.md index 31727b7acb7a1a..dae7b9695ed60e 100644 --- a/src/plugins/charts/README.md +++ b/src/plugins/charts/README.md @@ -27,3 +27,7 @@ Truncated color mappings in `value`/`text` form ## Theme See Theme service [docs](public/services/theme/README.md) + +## Palettes + +See palette service [docs](public/services/palettes/README.md) diff --git a/src/plugins/charts/jest.config.js b/src/plugins/charts/jest.config.js new file mode 100644 index 00000000000000..168ccde71a667d --- /dev/null +++ b/src/plugins/charts/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/charts'], +}; diff --git a/src/plugins/charts/public/services/palettes/README.md b/src/plugins/charts/public/services/palettes/README.md new file mode 100644 index 00000000000000..3403d422682bdb --- /dev/null +++ b/src/plugins/charts/public/services/palettes/README.md @@ -0,0 +1,33 @@ +# Palette Service + +The `palette` service offers a collection of palettes which implement a uniform interface for assigning colors to charts. The service provides methods for switching palettes +easily. It's used by the x-pack plugins `canvas` and `lens`. + +Each palette is allowed to store some state as well which has to be handled by the consumer. + +Palettes are integrated with the expression as well using the `system_palette` and `palette` functions. + +## Using the palette service + +To consume the palette service, use `charts.palettes.getPalettes` to lazily load the async bundle implementing existing palettes. This is recommended to be called in the renderer, not as part of the `setup` or `start` phases of a plugin. + +All palette definitions can be loaded using `paletteService.getAll()`. If the id of the palette is known, it can be fetched using `paleteService.get(id)`. + +One a palette is loaded, there are two ways to request colors - either by fetching a list of colors (`getColors`) or by specifying the chart object to be colored (`getColor`). If possible, using `getColor` is recommended because it allows the palette implementation to apply custom logic to coloring (e.g. lightening up colors or syncing colors) which has to be implemented by the consumer if `getColors` is used). + +### SeriesLayer + +If `getColor` is used, an array of `SeriesLayer` objects has to be passed in. These correspond with the current series in the chart a color has to be determined for. An array is necessary as some charts are constructed hierarchically (e.g. pie charts or treemaps). The array of objects represents the current series with all ancestors up to the corresponding root series. For each layer in the series hierarchy, the number of "sibling" series and the position of the current series has to be specified along with the name of the series. + +## Custom palette + +All palettes are stateless and define their own colors except for the `custom` palette which takes a state of the form +```ts +{ colors: string[]; gradient: boolean } +``` + +This state has to be passed into the `getColors` and `getColor` function to retrieve specific colors. + +## Registering new palettes + +Currently palettes can't be extended dynamically. diff --git a/src/plugins/console/jest.config.js b/src/plugins/console/jest.config.js new file mode 100644 index 00000000000000..f08613f91e1f14 --- /dev/null +++ b/src/plugins/console/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/console'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts b/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts index 84b12c97f1856b..34f43886df66e7 100644 --- a/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts +++ b/src/plugins/console/public/application/models/legacy_core_editor/legacy_core_editor.ts @@ -74,7 +74,7 @@ export class LegacyCoreEditor implements CoreEditor { // dirty check for tokenizer state, uses a lot less cycles // than listening for tokenizerUpdate waitForLatestTokens(): Promise { - return new Promise((resolve) => { + return new Promise((resolve) => { const session = this.editor.getSession(); const checkInterval = 25; @@ -239,7 +239,7 @@ export class LegacyCoreEditor implements CoreEditor { private forceRetokenize() { const session = this.editor.getSession(); - return new Promise((resolve) => { + return new Promise((resolve) => { // force update of tokens, but not on this thread to allow for ace rendering. setTimeout(function () { let i; diff --git a/src/plugins/console/public/services/tracker.ts b/src/plugins/console/public/services/tracker.ts index f5abcd145d0f7b..ae72916c19ab83 100644 --- a/src/plugins/console/public/services/tracker.ts +++ b/src/plugins/console/public/services/tracker.ts @@ -17,15 +17,15 @@ * under the License. */ -import { METRIC_TYPE, UiStatsMetricType } from '@kbn/analytics'; +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; import { MetricsTracker } from '../types'; import { UsageCollectionSetup } from '../../../usage_collection/public'; const APP_TRACKER_NAME = 'console'; export const createUsageTracker = (usageCollection?: UsageCollectionSetup): MetricsTracker => { - const track = (type: UiStatsMetricType, name: string) => - usageCollection?.reportUiStats(APP_TRACKER_NAME, type, name); + const track = (type: UiCounterMetricType, name: string) => + usageCollection?.reportUiCounter(APP_TRACKER_NAME, type, name); return { count: (eventName: string) => { diff --git a/src/plugins/console/server/lib/proxy_request.ts b/src/plugins/console/server/lib/proxy_request.ts index 27e19d920ad174..b6d7fc97f49a8b 100644 --- a/src/plugins/console/server/lib/proxy_request.ts +++ b/src/plugins/console/server/lib/proxy_request.ts @@ -110,7 +110,7 @@ export const proxyRequest = ({ if (!resolved) { timeoutReject(Boom.gatewayTimeout('Client request timeout')); } else { - timeoutResolve(); + timeoutResolve(undefined); } }, timeout); }); diff --git a/src/plugins/dashboard/jest.config.js b/src/plugins/dashboard/jest.config.js new file mode 100644 index 00000000000000..b9f6f66159b306 --- /dev/null +++ b/src/plugins/dashboard/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/dashboard'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/dashboard/kibana.json b/src/plugins/dashboard/kibana.json index bd19a9f0d9cd38..b5451203e23657 100644 --- a/src/plugins/dashboard/kibana.json +++ b/src/plugins/dashboard/kibana.json @@ -9,9 +9,10 @@ "urlForwarding", "navigation", "uiActions", - "savedObjects" + "savedObjects", + "share" ], - "optionalPlugins": ["home", "share", "usageCollection", "savedObjectsTaggingOss"], + "optionalPlugins": ["home", "usageCollection", "savedObjectsTaggingOss"], "server": true, "ui": true, "requiredBundles": ["kibanaUtils", "kibanaReact", "home"] diff --git a/src/plugins/dashboard/public/application/__snapshots__/dashboard_empty_screen.test.tsx.snap b/src/plugins/dashboard/public/application/__snapshots__/dashboard_empty_screen.test.tsx.snap index dac84c87faf973..b64b485f65615c 100644 --- a/src/plugins/dashboard/public/application/__snapshots__/dashboard_empty_screen.test.tsx.snap +++ b/src/plugins/dashboard/public/application/__snapshots__/dashboard_empty_screen.test.tsx.snap @@ -13,6 +13,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly mode 1`] = ` "basePath": "", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "", }, @@ -304,7 +305,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly mode 1`] = ` url="/plugins/home/assets/welcome_graphic_light_2x.png" >
{ const dashboard = embeddable.getRoot() as IContainer; const originalPanelCount = Object.keys(dashboard.getInput().panels).length; + const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); const action = new AddToLibraryAction({ toasts: coreStart.notifications.toasts }); await action.execute({ embeddable }); expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - expect(Object.keys(container.getInput().panels)).toContain(embeddable.id); - const newPanel = container.getInput().panels[embeddable.id!]; + + const newPanelId = Object.keys(container.getInput().panels).find( + (key) => !originalPanelKeySet.has(key) + ); + expect(newPanelId).toBeDefined(); + const newPanel = container.getInput().panels[newPanelId!]; expect(newPanel.type).toEqual(embeddable.type); }); @@ -158,10 +163,15 @@ test('Add to library returns reference type input', async () => { mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id } as EmbeddableInput, }); + const dashboard = embeddable.getRoot() as IContainer; + const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); const action = new AddToLibraryAction({ toasts: coreStart.notifications.toasts }); await action.execute({ embeddable }); - expect(Object.keys(container.getInput().panels)).toContain(embeddable.id); - const newPanel = container.getInput().panels[embeddable.id!]; + const newPanelId = Object.keys(container.getInput().panels).find( + (key) => !originalPanelKeySet.has(key) + ); + expect(newPanelId).toBeDefined(); + const newPanel = container.getInput().panels[newPanelId!]; expect(newPanel.type).toEqual(embeddable.type); expect(newPanel.explicitInput.attributes).toBeUndefined(); expect(newPanel.explicitInput.savedObjectId).toBe('testSavedObjectId'); diff --git a/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx b/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx index 179e5d522a2b34..08cd0c7a153814 100644 --- a/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx +++ b/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx @@ -19,7 +19,6 @@ import { i18n } from '@kbn/i18n'; import _ from 'lodash'; -import uuid from 'uuid'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; import { ViewMode, PanelState, IEmbeddable } from '../../embeddable_plugin'; import { @@ -89,9 +88,9 @@ export class AddToLibraryAction implements ActionByType = { type: embeddable.type, - explicitInput: { ...newInput, id: uuid.v4() }, + explicitInput: { ...newInput }, }; - dashboard.replacePanel(panelToReplace, newPanel); + dashboard.replacePanel(panelToReplace, newPanel, true); const title = i18n.translate('dashboard.panel.addToLibrary.successMessage', { defaultMessage: `Panel '{panelTitle}' was added to the visualize library`, diff --git a/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx b/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx index 933d2766d13f47..dcce38cdf94cec 100644 --- a/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx +++ b/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx @@ -20,7 +20,11 @@ import { i18n } from '@kbn/i18n'; import { IEmbeddable } from '../../embeddable_plugin'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; -import { DASHBOARD_CONTAINER_TYPE, DashboardContainer } from '../embeddable'; +import { + DASHBOARD_CONTAINER_TYPE, + DashboardContainer, + DashboardContainerInput, +} from '../embeddable'; export const ACTION_EXPAND_PANEL = 'togglePanel'; @@ -33,7 +37,9 @@ function isExpanded(embeddable: IEmbeddable) { throw new IncompatibleActionError(); } - return embeddable.id === embeddable.parent.getInput().expandedPanelId; + return ( + embeddable.id === (embeddable.parent.getInput() as DashboardContainerInput).expandedPanelId + ); } export interface ExpandPanelActionContext { diff --git a/src/plugins/dashboard/public/application/actions/export_csv_action.test.tsx b/src/plugins/dashboard/public/application/actions/export_csv_action.test.tsx new file mode 100644 index 00000000000000..770e01d6190cbb --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/export_csv_action.test.tsx @@ -0,0 +1,134 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { CoreStart } from 'kibana/public'; + +import { isErrorEmbeddable, IContainer, ErrorEmbeddable } from '../../embeddable_plugin'; +import { DashboardContainer } from '../../application/embeddable'; +import { getSampleDashboardInput, getSampleDashboardPanel } from '../../application/test_helpers'; +import { + ContactCardEmbeddable, + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + ContactCardExportableEmbeddableFactory, + CONTACT_CARD_EXPORTABLE_EMBEDDABLE, +} from '../../embeddable_plugin_test_samples'; +import { coreMock } from '../../../../../core/public/mocks'; +import { ExportCSVAction } from './export_csv_action'; +import { embeddablePluginMock } from '../../../../embeddable/public/mocks'; +import { DataPublicPluginStart } from '../../../../data/public/types'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import { LINE_FEED_CHARACTER } from 'src/plugins/data/common/exports/export_csv'; + +describe('Export CSV action', () => { + const { setup, doStart } = embeddablePluginMock.createInstance(); + setup.registerEmbeddableFactory( + CONTACT_CARD_EXPORTABLE_EMBEDDABLE, + new ContactCardExportableEmbeddableFactory((() => null) as any, {} as any) + ); + const start = doStart(); + + let container: DashboardContainer; + let embeddable: ContactCardEmbeddable; + let coreStart: CoreStart; + let dataMock: jest.Mocked; + + beforeEach(async () => { + coreStart = coreMock.createStart(); + coreStart.savedObjects.client = { + ...coreStart.savedObjects.client, + get: jest.fn().mockImplementation(() => ({ attributes: { title: 'Holy moly' } })), + find: jest.fn().mockImplementation(() => ({ total: 15 })), + create: jest.fn().mockImplementation(() => ({ id: 'brandNewSavedObject' })), + }; + + const options = { + ExitFullScreenButton: () => null, + SavedObjectFinder: () => null, + application: {} as any, + embeddable: start, + inspector: {} as any, + notifications: {} as any, + overlays: coreStart.overlays, + savedObjectMetaData: {} as any, + uiActions: {} as any, + }; + const input = getSampleDashboardInput({ + panels: { + '123': getSampleDashboardPanel({ + explicitInput: { firstName: 'Kibanana', id: '123' }, + type: CONTACT_CARD_EXPORTABLE_EMBEDDABLE, + }), + }, + }); + container = new DashboardContainer(input, options); + dataMock = dataPluginMock.createStartContract(); + + const contactCardEmbeddable = await container.addNewEmbeddable< + ContactCardEmbeddableInput, + ContactCardEmbeddableOutput, + ContactCardEmbeddable + >(CONTACT_CARD_EXPORTABLE_EMBEDDABLE, { + firstName: 'Kibana', + }); + + if (isErrorEmbeddable(contactCardEmbeddable)) { + throw new Error('Failed to create embeddable'); + } else { + embeddable = contactCardEmbeddable; + } + }); + + test('Download is incompatible with embeddables without getInspectorAdapters implementation', async () => { + const action = new ExportCSVAction({ core: coreStart, data: dataMock }); + const errorEmbeddable = new ErrorEmbeddable( + 'Wow what an awful error', + { id: ' 404' }, + embeddable.getRoot() as IContainer + ); + expect(await action.isCompatible({ embeddable: errorEmbeddable })).toBe(false); + }); + + test('Should download a compatible Embeddable', async () => { + const action = new ExportCSVAction({ core: coreStart, data: dataMock }); + const result = ((await action.execute({ embeddable, asString: true })) as unknown) as + | undefined + | Record; + expect(result).toEqual({ + 'Hello Kibana.csv': { + content: `First Name,Last Name${LINE_FEED_CHARACTER}Kibana,undefined${LINE_FEED_CHARACTER}`, + type: 'text/plain;charset=utf-8', + }, + }); + }); + + test('Should not download incompatible Embeddable', async () => { + const action = new ExportCSVAction({ core: coreStart, data: dataMock }); + const errorEmbeddable = new ErrorEmbeddable( + 'Wow what an awful error', + { id: ' 404' }, + embeddable.getRoot() as IContainer + ); + const result = ((await action.execute({ + embeddable: errorEmbeddable, + asString: true, + })) as unknown) as undefined | Record; + expect(result).toBeUndefined(); + }); +}); diff --git a/src/plugins/dashboard/public/application/actions/export_csv_action.tsx b/src/plugins/dashboard/public/application/actions/export_csv_action.tsx new file mode 100644 index 00000000000000..48a7877f9383e8 --- /dev/null +++ b/src/plugins/dashboard/public/application/actions/export_csv_action.tsx @@ -0,0 +1,138 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import { Datatable } from 'src/plugins/expressions/public'; +import { FormatFactory } from '../../../../data/common/field_formats/utils'; +import { DataPublicPluginStart, exporters } from '../../../../data/public'; +import { downloadMultipleAs } from '../../../../share/public'; +import { Adapters, IEmbeddable } from '../../../../embeddable/public'; +import { ActionByType } from '../../../../ui_actions/public'; +import { CoreStart } from '../../../../../core/public'; + +export const ACTION_EXPORT_CSV = 'ACTION_EXPORT_CSV'; + +export interface Params { + core: CoreStart; + data: DataPublicPluginStart; +} + +export interface ExportContext { + embeddable?: IEmbeddable; + // used for testing + asString?: boolean; +} + +/** + * This is "Export CSV" action which appears in the context + * menu of a dashboard panel. + */ +export class ExportCSVAction implements ActionByType { + public readonly id = ACTION_EXPORT_CSV; + + public readonly type = ACTION_EXPORT_CSV; + + public readonly order = 5; + + constructor(protected readonly params: Params) {} + + public getIconType() { + return 'exportAction'; + } + + public readonly getDisplayName = (context: ExportContext): string => + i18n.translate('dashboard.actions.DownloadCreateDrilldownAction.displayName', { + defaultMessage: 'Download as CSV', + }); + + public async isCompatible(context: ExportContext): Promise { + return !!this.hasDatatableContent(context.embeddable?.getInspectorAdapters?.()); + } + + private hasDatatableContent = (adapters: Adapters | undefined) => { + return Object.keys(adapters?.tables || {}).length > 0; + }; + + private getFormatter = (): FormatFactory | undefined => { + if (this.params.data) { + return this.params.data.fieldFormats.deserialize; + } + }; + + private getDataTableContent = (adapters: Adapters | undefined) => { + if (this.hasDatatableContent(adapters)) { + return adapters?.tables; + } + return; + }; + + private exportCSV = async (context: ExportContext) => { + const formatFactory = this.getFormatter(); + // early exit if not formatter is available + if (!formatFactory) { + return; + } + const tableAdapters = this.getDataTableContent( + context?.embeddable?.getInspectorAdapters() + ) as Record; + + if (tableAdapters) { + const datatables = Object.values(tableAdapters); + const content = datatables.reduce>( + (memo, datatable, i) => { + // skip empty datatables + if (datatable) { + const postFix = datatables.length > 1 ? `-${i + 1}` : ''; + const untitledFilename = i18n.translate( + 'dashboard.actions.downloadOptionsUnsavedFilename', + { + defaultMessage: 'unsaved', + } + ); + + memo[`${context!.embeddable!.getTitle() || untitledFilename}${postFix}.csv`] = { + content: exporters.datatableToCSV(datatable, { + csvSeparator: this.params.core.uiSettings.get('csv:separator', ','), + quoteValues: this.params.core.uiSettings.get('csv:quoteValues', true), + formatFactory, + }), + type: exporters.CSV_MIME_TYPE, + }; + } + return memo; + }, + {} + ); + + // useful for testing + if (context.asString) { + return (content as unknown) as Promise; + } + + if (content) { + return downloadMultipleAs(content); + } + } + }; + + public async execute(context: ExportContext): Promise { + // make it testable: type here will be forced + return await this.exportCSV(context); + } +} diff --git a/src/plugins/dashboard/public/application/actions/index.ts b/src/plugins/dashboard/public/application/actions/index.ts index cd32c2025456f5..3d7ebe76cb66af 100644 --- a/src/plugins/dashboard/public/application/actions/index.ts +++ b/src/plugins/dashboard/public/application/actions/index.ts @@ -47,3 +47,4 @@ export { LibraryNotificationAction, ACTION_LIBRARY_NOTIFICATION, } from './library_notification_action'; +export { ExportContext, ExportCSVAction, ACTION_EXPORT_CSV } from './export_csv_action'; diff --git a/src/plugins/dashboard/public/application/actions/library_notification_popover.tsx b/src/plugins/dashboard/public/application/actions/library_notification_popover.tsx index 6ec5b0d6375560..e46851a85a67f7 100644 --- a/src/plugins/dashboard/public/application/actions/library_notification_popover.tsx +++ b/src/plugins/dashboard/public/application/actions/library_notification_popover.tsx @@ -50,7 +50,6 @@ export function LibraryNotificationPopover({ return ( { const dashboard = embeddable.getRoot() as IContainer; const originalPanelCount = Object.keys(dashboard.getInput().panels).length; + const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); const action = new UnlinkFromLibraryAction({ toasts: coreStart.notifications.toasts }); await action.execute({ embeddable }); expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - expect(Object.keys(container.getInput().panels)).toContain(embeddable.id); - const newPanel = container.getInput().panels[embeddable.id!]; + + const newPanelId = Object.keys(container.getInput().panels).find( + (key) => !originalPanelKeySet.has(key) + ); + expect(newPanelId).toBeDefined(); + const newPanel = container.getInput().panels[newPanelId!]; expect(newPanel.type).toEqual(embeddable.type); }); @@ -159,10 +164,15 @@ test('Unlink unwraps all attributes from savedObject', async () => { mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id }, }); + const dashboard = embeddable.getRoot() as IContainer; + const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); const action = new UnlinkFromLibraryAction({ toasts: coreStart.notifications.toasts }); await action.execute({ embeddable }); - expect(Object.keys(container.getInput().panels)).toContain(embeddable.id); - const newPanel = container.getInput().panels[embeddable.id!]; + const newPanelId = Object.keys(container.getInput().panels).find( + (key) => !originalPanelKeySet.has(key) + ); + expect(newPanelId).toBeDefined(); + const newPanel = container.getInput().panels[newPanelId!]; expect(newPanel.type).toEqual(embeddable.type); expect(newPanel.explicitInput.attributes).toEqual(complicatedAttributes); }); diff --git a/src/plugins/dashboard/public/application/actions/unlink_from_library_action.tsx b/src/plugins/dashboard/public/application/actions/unlink_from_library_action.tsx index 5e16145364712d..b20bbc6350aaa3 100644 --- a/src/plugins/dashboard/public/application/actions/unlink_from_library_action.tsx +++ b/src/plugins/dashboard/public/application/actions/unlink_from_library_action.tsx @@ -19,7 +19,6 @@ import { i18n } from '@kbn/i18n'; import _ from 'lodash'; -import uuid from 'uuid'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; import { ViewMode, PanelState, IEmbeddable } from '../../embeddable_plugin'; import { @@ -88,9 +87,9 @@ export class UnlinkFromLibraryAction implements ActionByType = { type: embeddable.type, - explicitInput: { ...newInput, id: uuid.v4() }, + explicitInput: { ...newInput }, }; - dashboard.replacePanel(panelToReplace, newPanel); + dashboard.replacePanel(panelToReplace, newPanel, true); const title = embeddable.getTitle() ? i18n.translate('dashboard.panel.unlinkFromLibrary.successMessageWithTitle', { diff --git a/src/plugins/dashboard/public/application/dashboard_app_controller.tsx b/src/plugins/dashboard/public/application/dashboard_app_controller.tsx index c99e4e4e069878..86628abd924296 100644 --- a/src/plugins/dashboard/public/application/dashboard_app_controller.tsx +++ b/src/plugins/dashboard/public/application/dashboard_app_controller.tsx @@ -74,7 +74,7 @@ import { NavAction, SavedDashboardPanel } from '../types'; import { showOptionsPopover } from './top_nav/show_options_popover'; import { DashboardSaveModal, SaveOptions } from './top_nav/save_modal'; import { showCloneModal } from './top_nav/show_clone_modal'; -import { saveDashboard } from './lib'; +import { createSessionRestorationDataProvider, saveDashboard } from './lib'; import { DashboardStateManager } from './dashboard_state_manager'; import { createDashboardEditUrl, DashboardConstants } from '../dashboard_constants'; import { getTopNavConfig } from './top_nav/get_top_nav_config'; @@ -150,7 +150,7 @@ export class DashboardAppController { dashboardCapabilities, scopedHistory, embeddableCapabilities: { visualizeCapabilities, mapsCapabilities }, - data: { query: queryService, search: searchService }, + data, core: { notifications, overlays, @@ -168,6 +168,8 @@ export class DashboardAppController { navigation, savedObjectsTagging, }: DashboardAppControllerDependencies) { + const queryService = data.query; + const searchService = data.search; const filterManager = queryService.filterManager; const timefilter = queryService.timefilter.timefilter; const queryStringManager = queryService.queryString; @@ -262,6 +264,16 @@ export class DashboardAppController { $scope.showSaveQuery = dashboardCapabilities.saveQuery as boolean; + const landingPageUrl = () => `#${DashboardConstants.LANDING_PAGE_PATH}`; + + const getDashTitle = () => + getDashboardTitle( + dashboardStateManager.getTitle(), + dashboardStateManager.getViewMode(), + dashboardStateManager.getIsDirty(timefilter), + dashboardStateManager.isNew() + ); + const getShouldShowEditHelp = () => !dashboardStateManager.getPanels().length && dashboardStateManager.getIsEditMode() && @@ -429,6 +441,15 @@ export class DashboardAppController { DashboardContainer >(DASHBOARD_CONTAINER_TYPE); + searchService.session.setSearchSessionInfoProvider( + createSessionRestorationDataProvider({ + data, + getDashboardTitle: () => getDashTitle(), + getDashboardId: () => dash.id, + getAppState: () => dashboardStateManager.getAppState(), + }) + ); + if (dashboardFactory) { const searchSessionIdFromURL = getSearchSessionIdFromURL(history); if (searchSessionIdFromURL) { @@ -528,6 +549,7 @@ export class DashboardAppController { incomingEmbeddable.type, incomingEmbeddable.input ); + updateViewMode(ViewMode.EDIT); } } @@ -552,16 +574,6 @@ export class DashboardAppController { filterManager.getFilters() ); - const landingPageUrl = () => `#${DashboardConstants.LANDING_PAGE_PATH}`; - - const getDashTitle = () => - getDashboardTitle( - dashboardStateManager.getTitle(), - dashboardStateManager.getViewMode(), - dashboardStateManager.getIsDirty(timefilter), - dashboardStateManager.isNew() - ); - // Push breadcrumbs to new header navigation const updateBreadcrumbs = () => { chrome.setBreadcrumbs([ @@ -638,6 +650,13 @@ export class DashboardAppController { } }; + const searchServiceSessionRefreshSubscribtion = searchService.session.onRefresh$.subscribe( + () => { + lastReloadRequestTime = new Date().getTime(); + refreshDashboardContainer(); + } + ); + const updateStateFromSavedQuery = (savedQuery: SavedQuery) => { const allFilters = filterManager.getFilters(); dashboardStateManager.applyFilters(savedQuery.attributes.query, allFilters); @@ -1199,6 +1218,7 @@ export class DashboardAppController { if (dashboardContainer) { dashboardContainer.destroy(); } + searchServiceSessionRefreshSubscribtion.unsubscribe(); searchService.session.clear(); }); } diff --git a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx index 051a7ef8bfb929..e80d387fa3066d 100644 --- a/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx @@ -173,11 +173,30 @@ export class DashboardContainer extends Container, - newPanelState: Partial + newPanelState: Partial, + generateNewId?: boolean ) { - // Because the embeddable type can change, we have to operate at the container level here - return this.updateInput({ - panels: { + let panels; + if (generateNewId) { + // replace panel can be called with generateNewId in order to totally destroy and recreate the embeddable + panels = { ...this.input.panels }; + delete panels[previousPanelState.explicitInput.id]; + const newId = uuid.v4(); + panels[newId] = { + ...previousPanelState, + ...newPanelState, + gridData: { + ...previousPanelState.gridData, + i: newId, + }, + explicitInput: { + ...newPanelState.explicitInput, + id: newId, + }, + }; + } else { + // Because the embeddable type can change, we have to operate at the container level here + panels = { ...this.input.panels, [previousPanelState.explicitInput.id]: { ...previousPanelState, @@ -190,7 +209,11 @@ export class DashboardContainer extends Container DashboardAppState; + getDashboardTitle: () => string; + getDashboardId: () => string; +}) { + return { + getName: async () => deps.getDashboardTitle(), + getUrlGeneratorData: async () => { + return { + urlGeneratorId: DASHBOARD_APP_URL_GENERATOR, + initialState: getUrlGeneratorState({ ...deps, forceAbsoluteTime: false }), + restoreState: getUrlGeneratorState({ ...deps, forceAbsoluteTime: true }), + }; + }, + }; +} + +function getUrlGeneratorState({ + data, + getAppState, + getDashboardId, + forceAbsoluteTime, // TODO: not implemented +}: { + data: DataPublicPluginStart; + getAppState: () => DashboardAppState; + getDashboardId: () => string; + forceAbsoluteTime: boolean; +}): DashboardUrlGeneratorState { + const appState = getAppState(); + return { + dashboardId: getDashboardId(), + timeRange: data.query.timefilter.timefilter.getTime(), + filters: data.query.filterManager.getFilters(), + query: data.query.queryString.formatQuery(appState.query), + savedQuery: appState.savedQuery, + useHash: false, + preserveSavedFilters: false, + viewMode: appState.viewMode, + panels: getDashboardId() ? undefined : appState.panels, + searchSessionId: data.search.session.getSessionId(), + }; +} diff --git a/src/plugins/dashboard/public/plugin.tsx b/src/plugins/dashboard/public/plugin.tsx index c47a4c2d21b117..76b1ccc037e89c 100644 --- a/src/plugins/dashboard/public/plugin.tsx +++ b/src/plugins/dashboard/public/plugin.tsx @@ -101,6 +101,11 @@ import { DashboardConstants } from './dashboard_constants'; import { addEmbeddableToDashboardUrl } from './url_utils/url_helper'; import { PlaceholderEmbeddableFactory } from './application/embeddable/placeholder'; import { UrlGeneratorState } from '../../share/public'; +import { + ACTION_EXPORT_CSV, + ExportContext, + ExportCSVAction, +} from './application/actions/export_csv_action'; declare module '../../share/public' { export interface UrlGeneratorStateMapping { @@ -160,6 +165,7 @@ declare module '../../../plugins/ui_actions/public' { [ACTION_ADD_TO_LIBRARY]: AddToLibraryActionContext; [ACTION_UNLINK_FROM_LIBRARY]: UnlinkFromLibraryActionContext; [ACTION_LIBRARY_NOTIFICATION]: LibraryNotificationActionContext; + [ACTION_EXPORT_CSV]: ExportContext; } } @@ -414,7 +420,7 @@ export class DashboardPlugin public start(core: CoreStart, plugins: StartDependencies): DashboardStart { const { notifications } = core; - const { uiActions } = plugins; + const { uiActions, data, share } = plugins; const SavedObjectFinder = getSavedObjectFinder(core.savedObjects, core.uiSettings); @@ -431,6 +437,11 @@ export class DashboardPlugin uiActions.registerAction(clonePanelAction); uiActions.attachAction(CONTEXT_MENU_TRIGGER, clonePanelAction.id); + if (share) { + const ExportCSVPlugin = new ExportCSVAction({ core, data }); + uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, ExportCSVPlugin); + } + if (this.dashboardFeatureFlagConfig?.allowByValueEmbeddables) { const addToLibraryAction = new AddToLibraryAction({ toasts: notifications.toasts }); uiActions.registerAction(addToLibraryAction); diff --git a/src/plugins/dashboard/public/url_generator.test.ts b/src/plugins/dashboard/public/url_generator.test.ts index 461caedc5cba76..0272e9d3ebdf70 100644 --- a/src/plugins/dashboard/public/url_generator.test.ts +++ b/src/plugins/dashboard/public/url_generator.test.ts @@ -142,6 +142,39 @@ describe('dashboard url generator', () => { ); }); + test('savedQuery', async () => { + const generator = createDashboardUrlGenerator(() => + Promise.resolve({ + appBasePath: APP_BASE_PATH, + useHashedUrl: false, + savedDashboardLoader: createMockDashboardLoader(), + }) + ); + const url = await generator.createUrl!({ + savedQuery: '__savedQueryId__', + }); + expect(url).toMatchInlineSnapshot( + `"xyz/app/dashboards#/create?_a=(savedQuery:__savedQueryId__)&_g=()"` + ); + expect(url).toContain('__savedQueryId__'); + }); + + test('panels', async () => { + const generator = createDashboardUrlGenerator(() => + Promise.resolve({ + appBasePath: APP_BASE_PATH, + useHashedUrl: false, + savedDashboardLoader: createMockDashboardLoader(), + }) + ); + const url = await generator.createUrl!({ + panels: [{ fakePanelContent: 'fakePanelContent' } as any], + }); + expect(url).toMatchInlineSnapshot( + `"xyz/app/dashboards#/create?_a=(panels:!((fakePanelContent:fakePanelContent)))&_g=()"` + ); + }); + test('if no useHash setting is given, uses the one was start services', async () => { const generator = createDashboardUrlGenerator(() => Promise.resolve({ diff --git a/src/plugins/dashboard/public/url_generator.ts b/src/plugins/dashboard/public/url_generator.ts index b23b26e4022dd0..182020d032e4e2 100644 --- a/src/plugins/dashboard/public/url_generator.ts +++ b/src/plugins/dashboard/public/url_generator.ts @@ -30,6 +30,7 @@ import { UrlGeneratorsDefinition } from '../../share/public'; import { SavedObjectLoader } from '../../saved_objects/public'; import { ViewMode } from '../../embeddable/public'; import { DashboardConstants } from './dashboard_constants'; +import { SavedDashboardPanel } from '../common/types'; export const STATE_STORAGE_KEY = '_a'; export const GLOBAL_STATE_STORAGE_KEY = '_g'; @@ -86,6 +87,16 @@ export interface DashboardUrlGeneratorState { * (Background search) */ searchSessionId?: string; + + /** + * List of dashboard panels + */ + panels?: SavedDashboardPanel[]; + + /** + * Saved query ID + */ + savedQuery?: string; } export const createDashboardUrlGenerator = ( @@ -137,6 +148,8 @@ export const createDashboardUrlGenerator = ( query: state.query, filters: filters?.filter((f) => !esFilters.isFilterPinned(f)), viewMode: state.viewMode, + panels: state.panels, + savedQuery: state.savedQuery, }), { useHash }, `${appBasePath}#/${hash}` diff --git a/src/plugins/data/README.md b/src/plugins/data/README.md deleted file mode 100644 index 33c07078c5348c..00000000000000 --- a/src/plugins/data/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# data - -The data plugin provides common data access services, such as `search` and `query`, for solutions and application developers. - -## Autocomplete - -The autocomplete service provides suggestions for field names and values. - -It is wired into the `TopNavMenu` component, but can be used independently. - -### Fetch Query Suggestions - -The `getQuerySuggestions` function helps to construct a query. -KQL suggestion functions are registered in X-Pack, so this API does not return results in OSS. - -```.ts - - // `inputValue` is the user input - const querySuggestions = await autocomplete.getQuerySuggestions({ - language: 'kuery', - indexPatterns: [indexPattern], - query: inputValue, - }); - -``` - -### Fetch Value Suggestions - -The `getValueSuggestions` function returns suggestions for field values. -This is helpful when you want to provide a user with options, for example when constructing a filter. - -```.ts - - // `inputValue` is the user input - const valueSuggestions = await autocomplete.getValueSuggestions({ - indexPattern, - field, - query: inputValue, - }); - -``` - -## Field Formats - -Coming soon. - -## Index Patterns - -Coming soon. - -## Query - -The query service is responsible for managing the configuration of a search query (`QueryState`): filters, time range, query string, and settings such as the auto refresh behavior and saved queries. - -It contains sub-services for each of those configurations: - - `data.query.filterManager` - Manages the `filters` component of a `QueryState`. The global filter state (filters that are persisted between applications) are owned by this service. - - `data.query.timefilter` - Responsible for the time range filter and the auto refresh behavior settings. - - `data.query.queryString` - Responsible for the query string and query language settings. - - `data.query.savedQueries` - Responsible for persisting a `QueryState` into a `SavedObject`, so it can be restored and used by other applications. - - Any changes to the `QueryState` are published on the `data.query.state$`, which is useful when wanting to persist global state or run a search upon data changes. - - A simple use case is: - - ```.ts - function searchOnChange(indexPattern: IndexPattern, aggConfigs: AggConfigs) { - data.query.state$.subscribe(() => { - - // Constuct the query portion of the search request - const query = data.query.getEsQuery(indexPattern); - - // Construct a request - const request = { - params: { - index: indexPattern.title, - body: { - aggs: aggConfigs.toDsl(), - query, - }, - }, - }; - - // Search with the `data.query` config - const search$ = data.search.search(request); - - ... - }); - } - - ``` - -## Search - -Provides access to Elasticsearch using the high-level `SearchSource` API or low-level `Search Strategies`. - -### SearchSource - -The `SearchSource` API is a convenient way to construct and run an Elasticsearch search query. - -```.tsx - - const searchSource = await data.search.searchSource.create(); - const searchResponse = await searchSource - .setParent(undefined) - .setField('index', indexPattern) - .setField('filter', filters) - .fetch(); - -``` - -### Low-level search - -#### Default Search Strategy - -One benefit of using the low-level search API, is partial response support in X-Pack, allowing for a better and more responsive user experience. -In OSS only the final result is returned. - -```.ts - import { isCompleteResponse } from '../plugins/data/public'; - - const search$ = data.search.search(request) - .subscribe({ - next: (response) => { - if (isCompleteResponse(response)) { - // Final result - search$.unsubscribe(); - } else { - // Partial result - you can update the UI, but data is still loading - } - }, - error: (e: Error) => { - // Show customized toast notifications. - // You may choose to handle errors differently if you prefer. - data.search.showError(e); - }, - }); -``` diff --git a/src/plugins/data/README.mdx b/src/plugins/data/README.mdx new file mode 100644 index 00000000000000..13bb8443ffef6a --- /dev/null +++ b/src/plugins/data/README.mdx @@ -0,0 +1,546 @@ +--- +id: kibDataPlugin +slug: /kibana-dev-guide/services/data-plugin +title: Data services +image: https://source.unsplash.com/400x175/?Search +summary: The data plugin contains services for searching, querying and filtering. +date: 2020-12-02 +tags: ['kibana','dev', 'contributor', 'api docs'] +--- + +# data + +The data plugin provides common data access services, such as `search` and `query`, for solutions and application developers. + +## Autocomplete + +The autocomplete service provides suggestions for field names and values. + +It is wired into the `TopNavMenu` component, but can be used independently. + +### Fetch Query Suggestions + +The `getQuerySuggestions` function helps to construct a query. +KQL suggestion functions are registered in X-Pack, so this API does not return results in OSS. + +```.ts + + // `inputValue` is the user input + const querySuggestions = await autocomplete.getQuerySuggestions({ + language: 'kuery', + indexPatterns: [indexPattern], + query: inputValue, + }); + +``` + +### Fetch Value Suggestions + +The `getValueSuggestions` function returns suggestions for field values. +This is helpful when you want to provide a user with options, for example when constructing a filter. + +```.ts + + // `inputValue` is the user input + const valueSuggestions = await autocomplete.getValueSuggestions({ + indexPattern, + field, + query: inputValue, + }); + +``` + +## Field Formats + +Coming soon. + +## Index Patterns + +Coming soon. + +### Index Patterns HTTP API + +Index patterns provide Rest-like HTTP CRUD+ API with the following endpoints: + +- Index Patterns API + - Create an index pattern — `POST /api/index_patterns/index_pattern` + - Fetch an index pattern by `{id}` — `GET /api/index_patterns/index_pattern/{id}` + - Delete an index pattern by `{id}` — `DELETE /api/index_patterns/index_pattern/{id}` + - Partially update an index pattern by `{id}` — `POST /api/index_patterns/index_pattern/{id}` +- Fields API + - Update field — `POST /api/index_patterns/index_pattern/{id}/fields` +- Scripted Fields API + - Create a scripted field — `POST /api/index_patterns/index_pattern/{id}/scripted_field` + - Upsert a scripted field — `PUT /api/index_patterns/index_pattern/{id}/scripted_field` + - Fetch a scripted field — `GET /api/index_patterns/index_pattern/{id}/scripted_field/{name}` + - Remove a scripted field — `DELETE /api/index_patterns/index_pattern/{id}/scripted_field/{name}` + - Update a scripted field — `POST /api/index_patterns/index_pattern/{id}/scripted_field/{name}` + + +### Index Patterns API + +Index Patterns CURD API allows you to create, retrieve and delete index patterns. I also +exposes an update endpoint which allows you to update specific fields without changing +the rest of the index pattern object. + +#### Create an index pattern + +Create an index pattern with a custom title. + +``` +POST /api/index_patterns/index_pattern +{ + "index_pattern": { + "title": "hello" + } +} +``` + +Customize creation behavior with: + +- `override` — if set to `true`, replaces an existing index pattern if an + index pattern with the provided title already exists. Defaults to `false`. +- `refresh_fields` — if set to `true` reloads index pattern fields after + the index pattern is stored. Defaults to `false`. + +``` +POST /api/index_patterns/index_pattern +{ + "override": false, + "refresh_fields": true, + "index_pattern": { + "title": "hello" + } +} +``` + +At creation all index pattern fields are option and you can provide them. + +``` +POST /api/index_patterns/index_pattern +{ + "index_pattern": { + "id": "...", + "version": "...", + "title": "...", + "type": "...", + "intervalName": "...", + "timeFieldName": "...", + "sourceFilters": [], + "fields": {}, + "typeMeta": {}, + "fieldFormats": {}, + "fieldAttrs": {} + } +} +``` + +The endpoint returns the created index pattern object. + +```json +{ + "index_pattern": {} +} +``` + + +#### Fetch an index pattern by ID + +Retrieve and index pattern by its ID. + +``` +GET /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +``` + +Returns an index pattern object. + +```json +{ + "index_pattern": { + "id": "...", + "version": "...", + "title": "...", + "type": "...", + "intervalName": "...", + "timeFieldName": "...", + "sourceFilters": [], + "fields": {}, + "typeMeta": {}, + "fieldFormats": {}, + "fieldAttrs": {} + } +} +``` + + +#### Delete an index pattern by ID + +Delete and index pattern by its ID. + +``` +DELETE /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +``` + +Returns an '200 OK` response with empty body on success. + + +#### Partially update an index pattern by ID + +Update part of an index pattern. Only provided fields will be updated on the +index pattern, missing fields will stay as they are persisted. + +These fields can be update partially: + - `title` + - `timeFieldName` + - `intervalName` + - `fields` (optionally refresh fields) + - `sourceFilters` + - `fieldFormatMap` + - `type` + - `typeMeta` + +Update a title of an index pattern. + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +{ + "index_pattern": { + "title": "new_title" + } +} +``` + +All update fields are optional, you can specify the following fields. + +``` +POST /api/index_patterns/index_pattern +{ + "index_pattern": { + "title": "...", + "timeFieldName": "...", + "intervalName": "...", + "sourceFilters": [], + "fieldFormats": {}, + "type": "...", + "typeMeta": {}, + "fields": {} + } +} +``` + +- `refresh_fields` — if set to `true` reloads index pattern fields after + the index pattern is stored. Defaults to `false`. + +``` +POST /api/index_patterns/index_pattern +{ + "refresh_fields": true, + "index_pattern": { + "fields": {} + } +} +``` + +This endpoint returns the updated index pattern object. + +```json +{ + "index_pattern": { + + } +} +``` + + +### Fields API + +Fields API allows to change field metadata, such as `count`, `customLabel`, and `format`. + + +#### Update fields + +Update endpoint allows you to update fields presentation metadata, such as `count`, +`customLabel`, and `format`. You can update multiple fields in one request. Updates +are merges with persisted metadata. To remove existing metadata specify `null` as value. + +Set popularity `count` for field `foo`: + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/fields +{ + "fields": { + "foo": { + "count": 123 + } + } +} +``` + +Update multiple metadata values and fields in one request: + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/fields +{ + "fields": { + "foo": { + "count": 123, + "customLabel": "Foo" + }, + "bar": { + "customLabel": "Bar" + } + } +} +``` + +Use `null` value to delete metadata: + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/fields +{ + "fields": { + "foo": { + "customLabel": null + } + } +} +``` + +This endpoint returns the updated index pattern object. + +```json +{ + "index_pattern": { + + } +} +``` + + +### Scripted Fields API + +Scripted Fields API provides CRUD API for scripted fields of an index pattern. + +#### Create a scripted field + +Create a field by simply specifying its name, will default to `string` type. Returns +an error if a field with the provided name already exists. + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field +{ + "field": { + "name": "my_field" + } +} +``` + +Create a field by specifying all field properties. + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field +{ + "field": { + "name": "", + "type": "", + "searchable": false, + "aggregatable": false, + "count": 0, + "script": "", + "scripted": false, + "lang": "", + "conflictDescriptions": {}, + "format": {}, + "esTypes": [], + "readFromDocValues": false, + "subType": {}, + "indexed": false, + "customLabel": "", + "shortDotsEnable": false + } +} +``` + +#### Upsert a scripted field + +Creates a new field or updates an existing one, if one already exists with the same name. + +Create a field by simply specifying its name. + +``` +PUT /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field +{ + "field": { + "name": "my_field" + } +} +``` + +Create a field by specifying all field properties. + +``` +PUT /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field +{ + "field": { + "name": "", + "type": "", + "searchable": false, + "aggregatable": false, + "count": 0, + "script": "", + "scripted": false, + "lang": "", + "conflictDescriptions": {}, + "format": {}, + "esTypes": [], + "readFromDocValues": false, + "subType": {}, + "indexed": false, + "customLabel": "", + "shortDotsEnable": false + } +} +``` + +#### Fetch a scripted field + +Fetch an existing index pattern field by field name. + +``` +GET /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field/ +``` + +Returns the field object. + +```json +{ + "field": {} +} +``` + +#### Delete a scripted field + +Delete a field of an index pattern. + +``` +DELETE /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field/ +``` + +#### Update a an existing scripted field + +Updates an exiting field by mergin provided properties with the existing ones. If +there is no existing field with the specified name, returns a `404 Not Found` error. + +You can specify any field properties, except `name` which is specified in the URL path. + +``` +POST /api/index_patterns/index_pattern/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/scripted_field/ +{ + "field": { + "type": "", + "searchable": false, + "aggregatable": false, + "count": 0, + "script": "", + "scripted": false, + "lang": "", + "conflictDescriptions": {}, + "format": {}, + "esTypes": [], + "readFromDocValues": false, + "subType": {}, + "indexed": false, + "customLabel": "", + "shortDotsEnable": false + } +} +``` + + +## Query + +The query service is responsible for managing the configuration of a search query (`QueryState`): filters, time range, query string, and settings such as the auto refresh behavior and saved queries. + +It contains sub-services for each of those configurations: + - `data.query.filterManager` - Manages the `filters` component of a `QueryState`. The global filter state (filters that are persisted between applications) are owned by this service. + - `data.query.timefilter` - Responsible for the time range filter and the auto refresh behavior settings. + - `data.query.queryString` - Responsible for the query string and query language settings. + - `data.query.savedQueries` - Responsible for persisting a `QueryState` into a `SavedObject`, so it can be restored and used by other applications. + + Any changes to the `QueryState` are published on the `data.query.state$`, which is useful when wanting to persist global state or run a search upon data changes. + + A simple use case is: + + ```.ts + function searchOnChange(indexPattern: IndexPattern, aggConfigs: AggConfigs) { + data.query.state$.subscribe(() => { + + // Constuct the query portion of the search request + const query = data.query.getEsQuery(indexPattern); + + // Construct a request + const request = { + params: { + index: indexPattern.title, + body: { + aggs: aggConfigs.toDsl(), + query, + }, + }, + }; + + // Search with the `data.query` config + const search$ = data.search.search(request); + + ... + }); + } + + ``` + +## Search + +Provides access to Elasticsearch using the high-level `SearchSource` API or low-level `Search Strategies`. + +### SearchSource + +The `SearchSource` API is a convenient way to construct and run an Elasticsearch search query. + +```.tsx + + const searchSource = await data.search.searchSource.create(); + const searchResponse = await searchSource + .setParent(undefined) + .setField('index', indexPattern) + .setField('filter', filters) + .fetch(); + +``` + +### Low-level search + +#### Default Search Strategy + +One benefit of using the low-level search API, is partial response support in X-Pack, allowing for a better and more responsive user experience. +In OSS only the final result is returned. + +```.ts + import { isCompleteResponse } from '../plugins/data/public'; + + const search$ = data.search.search(request) + .subscribe({ + next: (response) => { + if (isCompleteResponse(response)) { + // Final result + search$.unsubscribe(); + } else { + // Partial result - you can update the UI, but data is still loading + } + }, + error: (e: Error) => { + // Show customized toast notifications. + // You may choose to handle errors differently if you prefer. + data.search.showError(e); + }, + }); +``` diff --git a/src/plugins/data/common/exports/export_csv.test.ts b/src/plugins/data/common/exports/export_csv.test.ts new file mode 100644 index 00000000000000..73878111b1479e --- /dev/null +++ b/src/plugins/data/common/exports/export_csv.test.ts @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Datatable } from 'src/plugins/expressions'; +import { FieldFormat } from '../../common/field_formats'; +import { datatableToCSV } from './export_csv'; + +function getDefaultOptions() { + const formatFactory = jest.fn(); + formatFactory.mockReturnValue({ convert: (v: unknown) => `Formatted_${v}` } as FieldFormat); + return { + csvSeparator: ',', + quoteValues: true, + formatFactory, + }; +} + +function getDataTable({ multipleColumns }: { multipleColumns?: boolean } = {}): Datatable { + const layer1: Datatable = { + type: 'datatable', + columns: [{ id: 'col1', name: 'columnOne', meta: { type: 'string' } }], + rows: [{ col1: 'value' }], + }; + if (multipleColumns) { + layer1.columns.push({ id: 'col2', name: 'columnTwo', meta: { type: 'number' } }); + layer1.rows[0].col2 = 5; + } + return layer1; +} + +describe('CSV exporter', () => { + test('should not break with empty data', () => { + expect( + datatableToCSV({ type: 'datatable', columns: [], rows: [] }, getDefaultOptions()) + ).toMatch(''); + }); + + test('should export formatted values by default', () => { + expect(datatableToCSV(getDataTable(), getDefaultOptions())).toMatch( + 'columnOne\r\n"Formatted_value"\r\n' + ); + }); + + test('should not quote values when requested', () => { + return expect( + datatableToCSV(getDataTable(), { ...getDefaultOptions(), quoteValues: false }) + ).toMatch('columnOne\r\nFormatted_value\r\n'); + }); + + test('should use raw values when requested', () => { + expect(datatableToCSV(getDataTable(), { ...getDefaultOptions(), raw: true })).toMatch( + 'columnOne\r\nvalue\r\n' + ); + }); + + test('should use separator for multiple columns', () => { + expect(datatableToCSV(getDataTable({ multipleColumns: true }), getDefaultOptions())).toMatch( + 'columnOne,columnTwo\r\n"Formatted_value","Formatted_5"\r\n' + ); + }); + + test('should escape values', () => { + const datatable = getDataTable(); + datatable.rows[0].col1 = '"value"'; + expect(datatableToCSV(datatable, getDefaultOptions())).toMatch( + 'columnOne\r\n"Formatted_""value"""\r\n' + ); + }); +}); diff --git a/src/plugins/data/common/exports/export_csv.tsx b/src/plugins/data/common/exports/export_csv.tsx new file mode 100644 index 00000000000000..116586c5b66e8d --- /dev/null +++ b/src/plugins/data/common/exports/export_csv.tsx @@ -0,0 +1,82 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// Inspired by the inspector CSV exporter + +import { FormatFactory } from 'src/plugins/data/common/field_formats/utils'; +import { Datatable } from 'src/plugins/expressions'; + +export const LINE_FEED_CHARACTER = '\r\n'; +const nonAlphaNumRE = /[^a-zA-Z0-9]/; +const allDoubleQuoteRE = /"/g; +export const CSV_MIME_TYPE = 'text/plain;charset=utf-8'; + +// TODO: enhance this later on +function escape(val: object | string, quoteValues: boolean) { + if (val != null && typeof val === 'object') { + val = val.valueOf(); + } + + val = String(val); + + if (quoteValues && nonAlphaNumRE.test(val)) { + val = `"${val.replace(allDoubleQuoteRE, '""')}"`; + } + + return val; +} + +interface CSVOptions { + csvSeparator: string; + quoteValues: boolean; + formatFactory: FormatFactory; + raw?: boolean; +} + +export function datatableToCSV( + { columns, rows }: Datatable, + { csvSeparator, quoteValues, formatFactory, raw }: CSVOptions +) { + // Build the header row by its names + const header = columns.map((col) => escape(col.name, quoteValues)); + + const formatters = columns.reduce>>( + (memo, { id, meta }) => { + memo[id] = formatFactory(meta?.params); + return memo; + }, + {} + ); + + // Convert the array of row objects to an array of row arrays + const csvRows = rows.map((row) => { + return columns.map((column) => + escape(raw ? row[column.id] : formatters[column.id].convert(row[column.id]), quoteValues) + ); + }); + + if (header.length === 0) { + return ''; + } + + return ( + [header, ...csvRows].map((row) => row.join(csvSeparator)).join(LINE_FEED_CHARACTER) + + LINE_FEED_CHARACTER + ); // Add \r\n after last line +} diff --git a/src/plugins/data/common/exports/index.ts b/src/plugins/data/common/exports/index.ts new file mode 100644 index 00000000000000..72faac654b421c --- /dev/null +++ b/src/plugins/data/common/exports/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { datatableToCSV, CSV_MIME_TYPE } from './export_csv'; diff --git a/src/plugins/data/common/field_formats/field_formats_registry.ts b/src/plugins/data/common/field_formats/field_formats_registry.ts index dbc3693c99779a..c7e99821d24c75 100644 --- a/src/plugins/data/common/field_formats/field_formats_registry.ts +++ b/src/plugins/data/common/field_formats/field_formats_registry.ts @@ -27,11 +27,10 @@ import { FieldFormatInstanceType, FieldFormatId, IFieldFormatMetaParams, - IFieldFormat, } from './types'; import { baseFormatters } from './constants/base_formatters'; import { FieldFormat } from './field_format'; -import { SerializedFieldFormat } from '../../../expressions/common/types'; +import { FormatFactory } from './utils'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '../kbn_field_types/types'; import { UI_SETTINGS } from '../constants'; import { FieldFormatNotFoundError } from '../field_formats'; @@ -42,7 +41,7 @@ export class FieldFormatsRegistry { protected metaParamsOptions: Record = {}; protected getConfig?: FieldFormatsGetConfigFn; // overriden on the public contract - public deserialize: (mapping: SerializedFieldFormat) => IFieldFormat = () => { + public deserialize: FormatFactory = () => { return new (FieldFormat.from(identity))(); }; diff --git a/src/plugins/data/common/index.ts b/src/plugins/data/common/index.ts index 2d6637daf4324e..36129a4d3f8cd4 100644 --- a/src/plugins/data/common/index.ts +++ b/src/plugins/data/common/index.ts @@ -26,6 +26,7 @@ export * from './query'; export * from './search'; export * from './types'; export * from './utils'; +export * from './exports'; /** * Use data plugin interface instead diff --git a/src/plugins/data/common/index_patterns/expressions/index.ts b/src/plugins/data/common/index_patterns/expressions/index.ts new file mode 100644 index 00000000000000..fa37e3b216ac96 --- /dev/null +++ b/src/plugins/data/common/index_patterns/expressions/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export * from './load_index_pattern'; diff --git a/src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts b/src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts new file mode 100644 index 00000000000000..4c1b56df6e864c --- /dev/null +++ b/src/plugins/data/common/index_patterns/expressions/load_index_pattern.ts @@ -0,0 +1,65 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; +import { IndexPatternsContract } from '../index_patterns'; +import { IndexPatternSpec } from '..'; + +const name = 'indexPatternLoad'; + +type Input = null; +type Output = Promise<{ type: 'index_pattern'; value: IndexPatternSpec }>; + +interface Arguments { + id: string; +} + +/** @internal */ +export interface IndexPatternLoadStartDependencies { + indexPatterns: IndexPatternsContract; +} + +export type IndexPatternLoadExpressionFunctionDefinition = ExpressionFunctionDefinition< + typeof name, + Input, + Arguments, + Output +>; + +export const getIndexPatternLoadMeta = (): Omit< + IndexPatternLoadExpressionFunctionDefinition, + 'fn' +> => ({ + name, + type: 'index_pattern', + inputTypes: ['null'], + help: i18n.translate('data.functions.indexPatternLoad.help', { + defaultMessage: 'Loads an index pattern', + }), + args: { + id: { + types: ['string'], + required: true, + help: i18n.translate('data.functions.indexPatternLoad.id.help', { + defaultMessage: 'index pattern id to load', + }), + }, + }, +}); diff --git a/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts b/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts index 4dd2d29f38e9f5..a7160f2e27f904 100644 --- a/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts +++ b/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts @@ -42,7 +42,7 @@ export class IndexPatternField implements IFieldType { return this.spec.count || 0; } - public set count(count) { + public set count(count: number) { this.spec.count = count; } @@ -149,6 +149,10 @@ export class IndexPatternField implements IFieldType { return this.aggregatable && !notVisualizableFieldTypes.includes(this.spec.type); } + public deleteCount() { + delete this.spec.count; + } + public toJSON() { return { count: this.count, diff --git a/src/plugins/data/common/index_patterns/index.ts b/src/plugins/data/common/index_patterns/index.ts index 08f478404be2cf..de0078df1b9e41 100644 --- a/src/plugins/data/common/index_patterns/index.ts +++ b/src/plugins/data/common/index_patterns/index.ts @@ -19,6 +19,6 @@ export * from './fields'; export * from './types'; -export { IndexPatternsService } from './index_patterns'; +export { IndexPatternsService, IndexPatternsContract } from './index_patterns'; export type { IndexPattern } from './index_patterns'; export * from './errors'; diff --git a/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap b/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap index e2bdb0009c20a7..19ec286307a09d 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap +++ b/src/plugins/data/common/index_patterns/index_patterns/__snapshots__/index_pattern.test.ts.snap @@ -687,6 +687,7 @@ Object { }, }, "id": "test-pattern", + "intervalName": undefined, "sourceFilters": undefined, "timeFieldName": "timestamp", "title": "title", diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts index 47ad5860801bc4..4c89cbeb446a07 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts @@ -18,7 +18,7 @@ */ import _, { each, reject } from 'lodash'; -import { FieldAttrs } from '../..'; +import { FieldAttrs, FieldAttrSet } from '../..'; import { DuplicateField } from '../../../../kibana_utils/common'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES, IIndexPattern, IFieldType } from '../../../common'; @@ -109,16 +109,9 @@ export class IndexPattern implements IIndexPattern { this.type = spec.type; this.typeMeta = spec.typeMeta; this.fieldAttrs = spec.fieldAttrs || {}; + this.intervalName = spec.intervalName; } - setFieldFormat = (fieldName: string, format: SerializedFieldFormat) => { - this.fieldFormatMap[fieldName] = format; - }; - - deleteFieldFormat = (fieldName: string) => { - delete this.fieldFormatMap[fieldName]; - }; - /** * Get last saved saved object fields */ @@ -135,8 +128,19 @@ export class IndexPattern implements IIndexPattern { const newFieldAttrs = { ...this.fieldAttrs }; this.fields.forEach((field) => { + const attrs: FieldAttrSet = {}; + let hasAttr = false; if (field.customLabel) { - newFieldAttrs[field.name] = { customLabel: field.customLabel }; + attrs.customLabel = field.customLabel; + hasAttr = true; + } + if (field.count) { + attrs.count = field.count; + hasAttr = true; + } + + if (hasAttr) { + newFieldAttrs[field.name] = attrs; } else { delete newFieldAttrs[field.name]; } @@ -199,6 +203,7 @@ export class IndexPattern implements IIndexPattern { type: this.type, fieldFormats: this.fieldFormatMap, fieldAttrs: this.fieldAttrs, + intervalName: this.intervalName, }; } @@ -298,7 +303,9 @@ export class IndexPattern implements IIndexPattern { timeFieldName: this.timeFieldName, intervalName: this.intervalName, sourceFilters: this.sourceFilters ? JSON.stringify(this.sourceFilters) : undefined, - fields: this.fields ? JSON.stringify(this.fields) : undefined, + fields: this.fields + ? JSON.stringify(this.fields.filter((field) => field.scripted)) + : undefined, fieldFormatMap, type: this.type, typeMeta: this.typeMeta ? JSON.stringify(this.typeMeta) : undefined, @@ -333,4 +340,48 @@ export class IndexPattern implements IIndexPattern { return this.fieldFormats.getInstance(formatSpec.id, formatSpec.params); } } + + protected setFieldAttrs( + fieldName: string, + attrName: K, + value: FieldAttrSet[K] + ) { + if (!this.fieldAttrs[fieldName]) { + this.fieldAttrs[fieldName] = {} as FieldAttrSet; + } + this.fieldAttrs[fieldName][attrName] = value; + } + + public setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null) { + const fieldObject = this.fields.getByName(fieldName); + const newCustomLabel: string | undefined = customLabel === null ? undefined : customLabel; + + if (fieldObject) { + fieldObject.customLabel = newCustomLabel; + return; + } + + this.setFieldAttrs(fieldName, 'customLabel', newCustomLabel); + } + + public setFieldCount(fieldName: string, count: number | undefined | null) { + const fieldObject = this.fields.getByName(fieldName); + const newCount: number | undefined = count === null ? undefined : count; + + if (fieldObject) { + if (!newCount) fieldObject.deleteCount(); + else fieldObject.count = newCount; + return; + } + + this.setFieldAttrs(fieldName, 'count', newCount); + } + + public readonly setFieldFormat = (fieldName: string, format: SerializedFieldFormat) => { + this.fieldFormatMap[fieldName] = format; + }; + + public readonly deleteFieldFormat = (fieldName: string) => { + delete this.fieldFormatMap[fieldName]; + }; } diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts index bf227615f76a1a..2a203b57d201b2 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts @@ -155,15 +155,11 @@ describe('IndexPatterns', () => { // Create a normal index patterns const pattern = await indexPatterns.get('foo'); - - expect(pattern.version).toBe('fooa'); indexPatterns.clearCache(); // Create the same one - we're going to handle concurrency const samePattern = await indexPatterns.get('foo'); - expect(samePattern.version).toBe('fooaa'); - // This will conflict because samePattern did a save (from refreshFields) // but the resave should work fine pattern.title = 'foo2'; @@ -195,6 +191,20 @@ describe('IndexPatterns', () => { expect(indexPatterns.refreshFields).toBeCalled(); }); + test('find', async () => { + const search = 'kibana*'; + const size = 10; + await indexPatterns.find('kibana*', size); + + expect(savedObjectsClient.find).lastCalledWith({ + type: 'index-pattern', + fields: ['title'], + search, + searchFields: ['title'], + perPage: size, + }); + }); + test('createAndSave', async () => { const title = 'kibana-*'; indexPatterns.createSavedObject = jest.fn(); diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts index 82c8cf4abc5ac3..0235f748ec1e04 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts @@ -135,6 +135,20 @@ export class IndexPatternsService { return this.savedObjectsCache.map((obj) => obj?.attributes?.title); }; + find = async (search: string, size: number = 10): Promise => { + const savedObjects = await this.savedObjectsClient.find({ + type: 'index-pattern', + fields: ['title'], + search, + searchFields: ['title'], + perPage: size, + }); + const getIndexPatternPromises = savedObjects.map(async (savedObject) => { + return await this.get(savedObject.id); + }); + return await Promise.all(getIndexPatternPromises); + }; + /** * Get list of index pattern ids with titles * @param refresh Force refresh of index pattern list @@ -197,22 +211,6 @@ export class IndexPatternsService { } }; - private isFieldRefreshRequired(specs?: IndexPatternFieldMap): boolean { - if (!specs) { - return true; - } - - return Object.values(specs).every((spec) => { - // See https://github.com/elastic/kibana/pull/8421 - const hasFieldCaps = 'aggregatable' in spec && 'searchable' in spec; - - // See https://github.com/elastic/kibana/pull/11969 - const hasDocValuesFlag = 'readFromDocValues' in spec; - - return !hasFieldCaps || !hasDocValuesFlag; - }); - } - /** * Get field list by providing { pattern } * @param options @@ -283,10 +281,10 @@ export class IndexPatternsService { options: GetFieldsOptions, fieldAttrs: FieldAttrs = {} ) => { - const scriptdFields = Object.values(fields).filter((field) => field.scripted); + const scriptedFields = Object.values(fields).filter((field) => field.scripted); try { const newFields = (await this.getFieldsForWildcard(options)) as FieldSpec[]; - return this.fieldArrayToMap([...newFields, ...scriptdFields], fieldAttrs); + return this.fieldArrayToMap([...newFields, ...scriptedFields], fieldAttrs); } catch (err) { if (err instanceof IndexPatternMissingIndices) { this.onNotification({ title: (err as any).message, color: 'danger', iconType: 'alert' }); @@ -299,8 +297,8 @@ export class IndexPatternsService { values: { id, title }, }), }); + throw err; } - return fields; }; /** @@ -309,7 +307,11 @@ export class IndexPatternsService { */ fieldArrayToMap = (fields: FieldSpec[], fieldAttrs?: FieldAttrs) => fields.reduce((collector, field) => { - collector[field.name] = { ...field, customLabel: fieldAttrs?.[field.name]?.customLabel }; + collector[field.name] = { + ...field, + customLabel: fieldAttrs?.[field.name]?.customLabel, + count: fieldAttrs?.[field.name]?.count, + }; return collector; }, {}); @@ -372,25 +374,20 @@ export class IndexPatternsService { ? JSON.parse(savedObject.attributes.fieldAttrs) : {}; - const isFieldRefreshRequired = this.isFieldRefreshRequired(spec.fields); - let isSaveRequired = isFieldRefreshRequired; try { - spec.fields = isFieldRefreshRequired - ? await this.refreshFieldSpecMap( - spec.fields || {}, - id, - spec.title as string, - { - pattern: title as string, - metaFields: await this.config.get(UI_SETTINGS.META_FIELDS), - type, - rollupIndex: typeMeta?.params?.rollupIndex, - }, - spec.fieldAttrs - ) - : spec.fields; + spec.fields = await this.refreshFieldSpecMap( + spec.fields || {}, + id, + spec.title as string, + { + pattern: title as string, + metaFields: await this.config.get(UI_SETTINGS.META_FIELDS), + type, + rollupIndex: typeMeta?.params?.rollup_index, + }, + spec.fieldAttrs + ); } catch (err) { - isSaveRequired = false; if (err instanceof IndexPatternMissingIndices) { this.onNotification({ title: (err as any).message, @@ -412,23 +409,6 @@ export class IndexPatternsService { : {}; const indexPattern = await this.create(spec, true); - if (isSaveRequired) { - try { - this.updateSavedObject(indexPattern); - } catch (err) { - this.onError(err, { - title: i18n.translate('data.indexPatterns.fetchFieldSaveErrorTitle', { - defaultMessage: - 'Error saving after fetching fields for index pattern {title} (ID: {id})', - values: { - id: indexPattern.id, - title: indexPattern.title, - }, - }), - }); - } - } - indexPattern.resetOriginalSavedObjectBody(); return indexPattern; }; @@ -476,14 +456,14 @@ export class IndexPatternsService { /** * Create a new index pattern and save it right away * @param spec - * @param override Overwrite if existing index pattern exists - * @param skipFetchFields + * @param override Overwrite if existing index pattern exists. + * @param skipFetchFields Whether to skip field refresh step. */ async createAndSave(spec: IndexPatternSpec, override = false, skipFetchFields = false) { const indexPattern = await this.create(spec, skipFetchFields); await this.createSavedObject(indexPattern, override); - await this.setDefault(indexPattern.id as string); + await this.setDefault(indexPattern.id!); return indexPattern; } diff --git a/src/plugins/data/common/index_patterns/lib/get_from_saved_object.ts b/src/plugins/data/common/index_patterns/lib/get_from_saved_object.ts deleted file mode 100644 index 1630a4547b7a14..00000000000000 --- a/src/plugins/data/common/index_patterns/lib/get_from_saved_object.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { SavedObject } from 'src/core/public'; -import { get } from 'lodash'; -import { IIndexPattern, IndexPatternAttributes } from '../..'; - -export function getFromSavedObject( - savedObject: SavedObject -): IIndexPattern | undefined { - if (get(savedObject, 'attributes.fields') === undefined) { - return; - } - - return { - id: savedObject.id, - fields: JSON.parse(savedObject.attributes.fields!), - title: savedObject.attributes.title, - }; -} diff --git a/src/plugins/data/common/index_patterns/lib/index.ts b/src/plugins/data/common/index_patterns/lib/index.ts index d9eccb6685ded7..46dc49a95d2044 100644 --- a/src/plugins/data/common/index_patterns/lib/index.ts +++ b/src/plugins/data/common/index_patterns/lib/index.ts @@ -19,7 +19,6 @@ export { IndexPatternMissingIndices } from './errors'; export { getTitle } from './get_title'; -export { getFromSavedObject } from './get_from_saved_object'; export { isDefault } from './is_default'; export * from './types'; diff --git a/src/plugins/data/common/index_patterns/types.ts b/src/plugins/data/common/index_patterns/types.ts index 28b077f4bfdf31..8d9b29175162e8 100644 --- a/src/plugins/data/common/index_patterns/types.ts +++ b/src/plugins/data/common/index_patterns/types.ts @@ -52,7 +52,12 @@ export interface IndexPatternAttributes { } export interface FieldAttrs { - [key: string]: { customLabel: string }; + [key: string]: FieldAttrSet; +} + +export interface FieldAttrSet { + customLabel?: string; + count?: number; } export type OnNotification = (toastInputFields: ToastInputFields) => void; diff --git a/src/plugins/data/common/index_patterns/utils.ts b/src/plugins/data/common/index_patterns/utils.ts index d9e1cfa0d952af..b7e1f28d5d60f3 100644 --- a/src/plugins/data/common/index_patterns/utils.ts +++ b/src/plugins/data/common/index_patterns/utils.ts @@ -17,8 +17,8 @@ * under the License. */ -import { find } from 'lodash'; -import { SavedObjectsClientCommon, SavedObject } from '..'; +import type { IndexPatternSavedObjectAttrs } from './index_patterns'; +import type { SavedObjectsClientCommon } from '../types'; /** * Returns an object matching a given title @@ -27,24 +27,16 @@ import { SavedObjectsClientCommon, SavedObject } from '..'; * @param title {string} * @returns {Promise} */ -export async function findByTitle( - client: SavedObjectsClientCommon, - title: string -): Promise | void> { - if (!title) { - return Promise.resolve(); - } - - const savedObjects = await client.find({ - type: 'index-pattern', - perPage: 10, - search: `"${title}"`, - searchFields: ['title'], - fields: ['title'], - }); +export async function findByTitle(client: SavedObjectsClientCommon, title: string) { + if (title) { + const savedObjects = await client.find({ + type: 'index-pattern', + perPage: 10, + search: `"${title}"`, + searchFields: ['title'], + fields: ['title'], + }); - return find( - savedObjects, - (obj: SavedObject) => obj.attributes.title.toLowerCase() === title.toLowerCase() - ); + return savedObjects.find((obj) => obj.attributes.title.toLowerCase() === title.toLowerCase()); + } } diff --git a/src/plugins/data/common/mocks.ts b/src/plugins/data/common/mocks.ts deleted file mode 100644 index dde70b1d07443b..00000000000000 --- a/src/plugins/data/common/mocks.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export { getSessionServiceMock } from './search/session/mocks'; diff --git a/src/plugins/data/common/search/aggs/agg_type.test.ts b/src/plugins/data/common/search/aggs/agg_type.test.ts index 16a5586858ab9f..102ec70188562c 100644 --- a/src/plugins/data/common/search/aggs/agg_type.test.ts +++ b/src/plugins/data/common/search/aggs/agg_type.test.ts @@ -33,6 +33,7 @@ describe('AggType Class', () => { test('assigns the config value to itself', () => { const config: AggTypeConfig = { name: 'name', + expressionName: 'aggName', title: 'title', }; @@ -48,6 +49,7 @@ describe('AggType Class', () => { const aggConfig = {} as IAggConfig; const config: AggTypeConfig = { name: 'name', + expressionName: 'aggName', title: 'title', makeLabel, }; @@ -65,6 +67,7 @@ describe('AggType Class', () => { const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', getResponseAggs: testConfig, getRequestAggs: testConfig, @@ -78,6 +81,7 @@ describe('AggType Class', () => { const aggConfig = {} as IAggConfig; const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', }); const responseAggs = aggType.getRequestAggs(aggConfig); @@ -90,6 +94,7 @@ describe('AggType Class', () => { test('defaults to AggParams object with JSON param', () => { const aggType = new AggType({ name: 'smart agg', + expressionName: 'aggSmart', title: 'title', }); @@ -102,6 +107,7 @@ describe('AggType Class', () => { test('disables json param', () => { const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', json: false, }); @@ -113,6 +119,7 @@ describe('AggType Class', () => { test('can disable customLabel', () => { const aggType = new AggType({ name: 'smart agg', + expressionName: 'aggSmart', title: 'title', customLabels: false, }); @@ -127,6 +134,7 @@ describe('AggType Class', () => { const aggType = new AggType({ name: 'bucketeer', + expressionName: 'aggBucketeer', title: 'title', params, }); @@ -153,6 +161,7 @@ describe('AggType Class', () => { } as unknown) as IAggConfig; const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', }); expect(aggType.getSerializedFormat(aggConfig)).toMatchInlineSnapshot(` @@ -168,6 +177,7 @@ describe('AggType Class', () => { } as unknown) as IAggConfig; const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', }); expect(aggType.getSerializedFormat(aggConfig)).toMatchInlineSnapshot(`Object {}`); @@ -186,6 +196,7 @@ describe('AggType Class', () => { const getSerializedFormat = jest.fn().mockReturnValue({ id: 'hello' }); const aggType = new AggType({ name: 'name', + expressionName: 'aggName', title: 'title', getSerializedFormat, }); diff --git a/src/plugins/data/common/search/aggs/agg_type.ts b/src/plugins/data/common/search/aggs/agg_type.ts index 4f4a593764b1e8..78e8c2405c510a 100644 --- a/src/plugins/data/common/search/aggs/agg_type.ts +++ b/src/plugins/data/common/search/aggs/agg_type.ts @@ -39,7 +39,7 @@ export interface AggTypeConfig< createFilter?: (aggConfig: TAggConfig, key: any, params?: any) => any; type?: string; dslName?: string; - expressionName?: string; + expressionName: string; makeLabel?: ((aggConfig: TAggConfig) => string) | (() => string); ordered?: any; hasNoDsl?: boolean; @@ -55,7 +55,8 @@ export interface AggTypeConfig< aggConfig: TAggConfig, searchSource: ISearchSource, inspectorRequestAdapter?: RequestAdapter, - abortSignal?: AbortSignal + abortSignal?: AbortSignal, + searchSessionId?: string ) => Promise; getSerializedFormat?: (agg: TAggConfig) => SerializedFieldFormat; getValue?: (agg: TAggConfig, bucket: any) => any; @@ -89,12 +90,11 @@ export class AggType< dslName: string; /** * the name of the expression function that this aggType represents. - * TODO: this should probably be a required field. * * @property name * @type {string} */ - expressionName?: string; + expressionName: string; /** * the user friendly name that will be shown in the ui for this aggType * @@ -182,6 +182,8 @@ export class AggType< * @param searchSourceAggs - SearchSource aggregation configuration * @param resp - Response to the main request * @param nestedSearchSource - the new SearchSource that will be used to make post flight request + * @param abortSignal - `AbortSignal` to abort the request + * @param searchSessionId - searchSessionId to be used for grouping requests into a single search session * @return {Promise} */ postFlightRequest: ( @@ -190,7 +192,8 @@ export class AggType< aggConfig: TAggConfig, searchSource: ISearchSource, inspectorRequestAdapter?: RequestAdapter, - abortSignal?: AbortSignal + abortSignal?: AbortSignal, + searchSessionId?: string ) => Promise; /** * Get the serialized format for the values produced by this agg type, diff --git a/src/plugins/data/common/search/aggs/buckets/date_histogram.ts b/src/plugins/data/common/search/aggs/buckets/date_histogram.ts index 694b03f6604528..ba79a4264d6039 100644 --- a/src/plugins/data/common/search/aggs/buckets/date_histogram.ts +++ b/src/plugins/data/common/search/aggs/buckets/date_histogram.ts @@ -27,6 +27,7 @@ import { intervalOptions, autoInterval, isAutoInterval } from './_interval_optio import { createFilterDateHistogram } from './create_filter/date_histogram'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggDateHistogramFnName } from './date_histogram_fn'; import { ExtendedBounds } from './lib/extended_bounds'; import { TimeBuckets } from './lib/time_buckets'; @@ -87,6 +88,7 @@ export const getDateHistogramBucketAgg = ({ }: DateHistogramBucketAggDependencies) => new BucketAggType({ name: BUCKET_TYPES.DATE_HISTOGRAM, + expressionName: aggDateHistogramFnName, title: i18n.translate('data.search.aggs.buckets.dateHistogramTitle', { defaultMessage: 'Date Histogram', }), diff --git a/src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts b/src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts index 1cc5b41fa6bb3d..3e3895b7b50db5 100644 --- a/src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/date_histogram_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggDateHistogram'; +export const aggDateHistogramFnName = 'aggDateHistogram'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggDateHistogramFnName, + Input, + Arguments, + Output +>; export const aggDateHistogram = (): FunctionDefinition => ({ - name: fnName, + name: aggDateHistogramFnName, help: i18n.translate('data.search.aggs.function.buckets.dateHistogram.help', { defaultMessage: 'Generates a serialized agg config for a Histogram agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/date_range.test.ts b/src/plugins/data/common/search/aggs/buckets/date_range.test.ts index 66f8e269cd38d2..3cd06cc06545d0 100644 --- a/src/plugins/data/common/search/aggs/buckets/date_range.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/date_range.test.ts @@ -74,6 +74,31 @@ describe('date_range params', () => { ); }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs(); + const dateRange = aggConfigs.aggs[0]; + expect(dateRange.toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "id": Array [ + "date_range", + ], + "ranges": Array [ + "[{\\"from\\":\\"now-1w/w\\",\\"to\\":\\"now\\"}]", + ], + "schema": Array [ + "buckets", + ], + }, + "function": "aggDateRange", + "type": "function", + } + `); + }); + describe('getKey', () => { test('should return object', () => { const aggConfigs = getAggConfigs(); diff --git a/src/plugins/data/common/search/aggs/buckets/date_range.ts b/src/plugins/data/common/search/aggs/buckets/date_range.ts index f9a3acb990fbf8..cb01922170664a 100644 --- a/src/plugins/data/common/search/aggs/buckets/date_range.ts +++ b/src/plugins/data/common/search/aggs/buckets/date_range.ts @@ -24,6 +24,7 @@ import { i18n } from '@kbn/i18n'; import { BUCKET_TYPES } from './bucket_agg_types'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { createFilterDateRange } from './create_filter/date_range'; +import { aggDateRangeFnName } from './date_range_fn'; import { DateRangeKey } from './lib/date_range'; import { KBN_FIELD_TYPES } from '../../../../common/kbn_field_types/types'; @@ -50,6 +51,7 @@ export const getDateRangeBucketAgg = ({ }: DateRangeBucketAggDependencies) => new BucketAggType({ name: BUCKET_TYPES.DATE_RANGE, + expressionName: aggDateRangeFnName, title: dateRangeTitle, createFilter: createFilterDateRange, getKey({ from, to }): DateRangeKey { diff --git a/src/plugins/data/common/search/aggs/buckets/date_range_fn.ts b/src/plugins/data/common/search/aggs/buckets/date_range_fn.ts index 5027aadbb7331f..0dc66be5b84f29 100644 --- a/src/plugins/data/common/search/aggs/buckets/date_range_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/date_range_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggDateRange'; +export const aggDateRangeFnName = 'aggDateRange'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggDateRangeFnName, + Input, + Arguments, + Output +>; export const aggDateRange = (): FunctionDefinition => ({ - name: fnName, + name: aggDateRangeFnName, help: i18n.translate('data.search.aggs.function.buckets.dateRange.help', { defaultMessage: 'Generates a serialized agg config for a Date Range agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/filter.ts b/src/plugins/data/common/search/aggs/buckets/filter.ts index 5d146e125b996a..84faaa2b360bda 100644 --- a/src/plugins/data/common/search/aggs/buckets/filter.ts +++ b/src/plugins/data/common/search/aggs/buckets/filter.ts @@ -21,6 +21,7 @@ import { i18n } from '@kbn/i18n'; import { BucketAggType } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; import { GeoBoundingBox } from './lib/geo_point'; +import { aggFilterFnName } from './filter_fn'; import { BaseAggParams } from '../types'; const filterTitle = i18n.translate('data.search.aggs.buckets.filterTitle', { @@ -34,6 +35,7 @@ export interface AggParamsFilter extends BaseAggParams { export const getFilterBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.FILTER, + expressionName: aggFilterFnName, title: filterTitle, makeLabel: () => filterTitle, params: [ diff --git a/src/plugins/data/common/search/aggs/buckets/filter_fn.ts b/src/plugins/data/common/search/aggs/buckets/filter_fn.ts index ae60da3e8a47ce..8c8c0f430184ad 100644 --- a/src/plugins/data/common/search/aggs/buckets/filter_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/filter_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggFilter'; +export const aggFilterFnName = 'aggFilter'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggFilterFnName, + Input, + Arguments, + Output +>; export const aggFilter = (): FunctionDefinition => ({ - name: fnName, + name: aggFilterFnName, help: i18n.translate('data.search.aggs.function.buckets.filter.help', { defaultMessage: 'Generates a serialized agg config for a Filter agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/filters.test.ts b/src/plugins/data/common/search/aggs/buckets/filters.test.ts index f745b4537131a7..326a3af712e709 100644 --- a/src/plugins/data/common/search/aggs/buckets/filters.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/filters.test.ts @@ -74,6 +74,33 @@ describe('Filters Agg', () => { }, }); + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs({ + filters: [ + generateFilter('a', 'lucene', 'foo'), + generateFilter('b', 'lucene', 'status:200'), + generateFilter('c', 'lucene', 'status:[400 TO 499] AND (foo OR bar)'), + ], + }); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "filters": Array [ + "[{\\"label\\":\\"a\\",\\"input\\":{\\"language\\":\\"lucene\\",\\"query\\":\\"foo\\"}},{\\"label\\":\\"b\\",\\"input\\":{\\"language\\":\\"lucene\\",\\"query\\":\\"status:200\\"}},{\\"label\\":\\"c\\",\\"input\\":{\\"language\\":\\"lucene\\",\\"query\\":\\"status:[400 TO 499] AND (foo OR bar)\\"}}]", + ], + "id": Array [ + "test", + ], + }, + "function": "aggFilters", + "type": "function", + } + `); + }); + describe('using Lucene', () => { test('works with lucene filters', () => { const aggConfigs = getAggConfigs({ diff --git a/src/plugins/data/common/search/aggs/buckets/filters.ts b/src/plugins/data/common/search/aggs/buckets/filters.ts index 7310fa08b68e05..7f43d018088827 100644 --- a/src/plugins/data/common/search/aggs/buckets/filters.ts +++ b/src/plugins/data/common/search/aggs/buckets/filters.ts @@ -24,6 +24,7 @@ import { createFilterFilters } from './create_filter/filters'; import { toAngularJSON } from '../utils'; import { BucketAggType } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggFiltersFnName } from './filters_fn'; import { getEsQueryConfig, buildEsQuery, Query, UI_SETTINGS } from '../../../../common'; import { BaseAggParams } from '../types'; @@ -53,6 +54,7 @@ export interface AggParamsFilters extends Omit { export const getFiltersBucketAgg = ({ getConfig }: FiltersBucketAggDependencies) => new BucketAggType({ name: BUCKET_TYPES.FILTERS, + expressionName: aggFiltersFnName, title: filtersTitle, createFilter: createFilterFilters, customLabels: false, diff --git a/src/plugins/data/common/search/aggs/buckets/filters_fn.ts b/src/plugins/data/common/search/aggs/buckets/filters_fn.ts index 55380ea8153153..194feb67d3366a 100644 --- a/src/plugins/data/common/search/aggs/buckets/filters_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/filters_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggFilters'; +export const aggFiltersFnName = 'aggFilters'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggFiltersFnName, + Input, + Arguments, + Output +>; export const aggFilters = (): FunctionDefinition => ({ - name: fnName, + name: aggFiltersFnName, help: i18n.translate('data.search.aggs.function.buckets.filters.help', { defaultMessage: 'Generates a serialized agg config for a Filter agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/geo_hash.test.ts b/src/plugins/data/common/search/aggs/buckets/geo_hash.test.ts index e77d2bf1eaf5f0..8de68340226392 100644 --- a/src/plugins/data/common/search/aggs/buckets/geo_hash.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/geo_hash.test.ts @@ -87,6 +87,42 @@ describe('Geohash Agg', () => { }); }); + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs(); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "autoPrecision": Array [ + true, + ], + "enabled": Array [ + true, + ], + "field": Array [ + "location", + ], + "id": Array [ + "geohash_grid", + ], + "isFilteredByCollar": Array [ + true, + ], + "precision": Array [ + 2, + ], + "schema": Array [ + "segment", + ], + "useGeocentroid": Array [ + true, + ], + }, + "function": "aggGeoHash", + "type": "function", + } + `); + }); + describe('getRequestAggs', () => { describe('initial aggregation creation', () => { let aggConfigs: IAggConfigs; diff --git a/src/plugins/data/common/search/aggs/buckets/geo_hash.ts b/src/plugins/data/common/search/aggs/buckets/geo_hash.ts index a0ef8a27b0d1ed..b7ddf24dbfc847 100644 --- a/src/plugins/data/common/search/aggs/buckets/geo_hash.ts +++ b/src/plugins/data/common/search/aggs/buckets/geo_hash.ts @@ -21,6 +21,7 @@ import { i18n } from '@kbn/i18n'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggGeoHashFnName } from './geo_hash_fn'; import { GeoBoundingBox } from './lib/geo_point'; import { BaseAggParams } from '../types'; @@ -47,6 +48,7 @@ export interface AggParamsGeoHash extends BaseAggParams { export const getGeoHashBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.GEOHASH_GRID, + expressionName: aggGeoHashFnName, title: geohashGridTitle, makeLabel: () => geohashGridTitle, params: [ diff --git a/src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts b/src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts index 5152804bf81228..aa5f473f73f9d6 100644 --- a/src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/geo_hash_fn.ts @@ -23,17 +23,22 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggGeoHash'; +export const aggGeoHashFnName = 'aggGeoHash'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggGeoHashFnName, + Input, + Arguments, + Output +>; export const aggGeoHash = (): FunctionDefinition => ({ - name: fnName, + name: aggGeoHashFnName, help: i18n.translate('data.search.aggs.function.buckets.geoHash.help', { defaultMessage: 'Generates a serialized agg config for a Geo Hash agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/geo_tile.ts b/src/plugins/data/common/search/aggs/buckets/geo_tile.ts index e6eff1e1a5d8e3..fc87d632c7e9ce 100644 --- a/src/plugins/data/common/search/aggs/buckets/geo_tile.ts +++ b/src/plugins/data/common/search/aggs/buckets/geo_tile.ts @@ -22,6 +22,7 @@ import { noop } from 'lodash'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggGeoTileFnName } from './geo_tile_fn'; import { KBN_FIELD_TYPES } from '../../../../common'; import { METRIC_TYPES } from '../metrics/metric_agg_types'; import { BaseAggParams } from '../types'; @@ -39,6 +40,7 @@ export interface AggParamsGeoTile extends BaseAggParams { export const getGeoTitleBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.GEOTILE_GRID, + expressionName: aggGeoTileFnName, title: geotileGridTitle, params: [ { diff --git a/src/plugins/data/common/search/aggs/buckets/geo_tile_fn.ts b/src/plugins/data/common/search/aggs/buckets/geo_tile_fn.ts index ed3142408892a3..346c70bba31fd8 100644 --- a/src/plugins/data/common/search/aggs/buckets/geo_tile_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/geo_tile_fn.ts @@ -22,16 +22,21 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggGeoTile'; +export const aggGeoTileFnName = 'aggGeoTile'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggGeoTileFnName, + Input, + AggArgs, + Output +>; export const aggGeoTile = (): FunctionDefinition => ({ - name: fnName, + name: aggGeoTileFnName, help: i18n.translate('data.search.aggs.function.buckets.geoTile.help', { defaultMessage: 'Generates a serialized agg config for a Geo Tile agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/histogram.test.ts b/src/plugins/data/common/search/aggs/buckets/histogram.test.ts index a8ac72c174c726..1b01b1f235cb5a 100644 --- a/src/plugins/data/common/search/aggs/buckets/histogram.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/histogram.test.ts @@ -72,6 +72,50 @@ describe('Histogram Agg', () => { return aggConfigs.aggs[0].toDsl()[BUCKET_TYPES.HISTOGRAM]; }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs({ + intervalBase: 100, + field: { + name: 'field', + }, + }); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "extended_bounds": Array [ + "{\\"min\\":\\"\\",\\"max\\":\\"\\"}", + ], + "field": Array [ + "field", + ], + "has_extended_bounds": Array [ + false, + ], + "id": Array [ + "test", + ], + "interval": Array [ + "auto", + ], + "intervalBase": Array [ + 100, + ], + "min_doc_count": Array [ + false, + ], + "schema": Array [ + "segment", + ], + }, + "function": "aggHistogram", + "type": "function", + } + `); + }); + describe('ordered', () => { let histogramType: BucketAggType; diff --git a/src/plugins/data/common/search/aggs/buckets/histogram.ts b/src/plugins/data/common/search/aggs/buckets/histogram.ts index c3d3f041dd0c7f..ab0d566b273c76 100644 --- a/src/plugins/data/common/search/aggs/buckets/histogram.ts +++ b/src/plugins/data/common/search/aggs/buckets/histogram.ts @@ -27,6 +27,7 @@ import { BaseAggParams } from '../types'; import { BucketAggType, IBucketAggConfig } from './bucket_agg_type'; import { createFilterHistogram } from './create_filter/histogram'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggHistogramFnName } from './histogram_fn'; import { ExtendedBounds } from './lib/extended_bounds'; import { isAutoInterval, autoInterval } from './_interval_options'; import { calculateHistogramInterval } from './lib/histogram_calculate_interval'; @@ -62,6 +63,7 @@ export const getHistogramBucketAgg = ({ }: HistogramBucketAggDependencies) => new BucketAggType({ name: BUCKET_TYPES.HISTOGRAM, + expressionName: aggHistogramFnName, title: i18n.translate('data.search.aggs.buckets.histogramTitle', { defaultMessage: 'Histogram', }), diff --git a/src/plugins/data/common/search/aggs/buckets/histogram_fn.ts b/src/plugins/data/common/search/aggs/buckets/histogram_fn.ts index 2e833bbe0a3ebb..153a7bfc1c5923 100644 --- a/src/plugins/data/common/search/aggs/buckets/histogram_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/histogram_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggHistogram'; +export const aggHistogramFnName = 'aggHistogram'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggHistogramFnName, + Input, + Arguments, + Output +>; export const aggHistogram = (): FunctionDefinition => ({ - name: fnName, + name: aggHistogramFnName, help: i18n.translate('data.search.aggs.function.buckets.histogram.help', { defaultMessage: 'Generates a serialized agg config for a Histogram agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/index.ts b/src/plugins/data/common/search/aggs/buckets/index.ts index b16242e5198721..04a748bfb19651 100644 --- a/src/plugins/data/common/search/aggs/buckets/index.ts +++ b/src/plugins/data/common/search/aggs/buckets/index.ts @@ -35,3 +35,4 @@ export * from './lib/ip_range'; export * from './migrate_include_exclude_format'; export * from './significant_terms'; export * from './terms'; +export * from './lib/time_buckets/calc_auto_interval'; diff --git a/src/plugins/data/common/search/aggs/buckets/ip_range.ts b/src/plugins/data/common/search/aggs/buckets/ip_range.ts index d0a6174b011fc4..233acdd71e59a6 100644 --- a/src/plugins/data/common/search/aggs/buckets/ip_range.ts +++ b/src/plugins/data/common/search/aggs/buckets/ip_range.ts @@ -24,6 +24,7 @@ import { BUCKET_TYPES } from './bucket_agg_types'; import { createFilterIpRange } from './create_filter/ip_range'; import { IpRangeKey, RangeIpRangeAggKey, CidrMaskIpRangeAggKey } from './lib/ip_range'; +import { aggIpRangeFnName } from './ip_range_fn'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BaseAggParams } from '../types'; @@ -48,6 +49,7 @@ export interface AggParamsIpRange extends BaseAggParams { export const getIpRangeBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.IP_RANGE, + expressionName: aggIpRangeFnName, title: ipRangeTitle, createFilter: createFilterIpRange, getKey(bucket, key, agg): IpRangeKey { diff --git a/src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts b/src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts index 15b763fd42d6b9..7ad61a9c27d868 100644 --- a/src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/ip_range_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggIpRange'; +export const aggIpRangeFnName = 'aggIpRange'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggIpRangeFnName, + Input, + Arguments, + Output +>; export const aggIpRange = (): FunctionDefinition => ({ - name: fnName, + name: aggIpRangeFnName, help: i18n.translate('data.search.aggs.function.buckets.ipRange.help', { defaultMessage: 'Generates a serialized agg config for a Ip Range agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/range.test.ts b/src/plugins/data/common/search/aggs/buckets/range.test.ts index b8241e04ea1ee8..c878e6b81a0aec 100644 --- a/src/plugins/data/common/search/aggs/buckets/range.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/range.test.ts @@ -66,6 +66,33 @@ describe('Range Agg', () => { ); }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs(); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "bytes", + ], + "id": Array [ + "1", + ], + "ranges": Array [ + "[{\\"from\\":0,\\"to\\":1000},{\\"from\\":1000,\\"to\\":2000}]", + ], + "schema": Array [ + "segment", + ], + }, + "function": "aggRange", + "type": "function", + } + `); + }); + describe('getSerializedFormat', () => { test('generates a serialized field format in the expected shape', () => { const aggConfigs = getAggConfigs(); diff --git a/src/plugins/data/common/search/aggs/buckets/range.ts b/src/plugins/data/common/search/aggs/buckets/range.ts index bdb6ea7cd4b981..4486ad3c06dd1e 100644 --- a/src/plugins/data/common/search/aggs/buckets/range.ts +++ b/src/plugins/data/common/search/aggs/buckets/range.ts @@ -24,6 +24,7 @@ import { AggTypesDependencies } from '../agg_types'; import { BaseAggParams } from '../types'; import { BucketAggType } from './bucket_agg_type'; +import { aggRangeFnName } from './range_fn'; import { RangeKey } from './range_key'; import { createFilterRange } from './create_filter/range'; import { BUCKET_TYPES } from './bucket_agg_types'; @@ -50,6 +51,7 @@ export const getRangeBucketAgg = ({ getFieldFormatsStart }: RangeBucketAggDepend return new BucketAggType({ name: BUCKET_TYPES.RANGE, + expressionName: aggRangeFnName, title: rangeTitle, createFilter: createFilterRange(getFieldFormatsStart), makeLabel(aggConfig) { diff --git a/src/plugins/data/common/search/aggs/buckets/range_fn.ts b/src/plugins/data/common/search/aggs/buckets/range_fn.ts index 6806125a10f6d7..a52b2427b9845d 100644 --- a/src/plugins/data/common/search/aggs/buckets/range_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/range_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggRange'; +export const aggRangeFnName = 'aggRange'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -31,10 +31,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggRangeFnName, + Input, + Arguments, + Output +>; export const aggRange = (): FunctionDefinition => ({ - name: fnName, + name: aggRangeFnName, help: i18n.translate('data.search.aggs.function.buckets.range.help', { defaultMessage: 'Generates a serialized agg config for a Range agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/shard_delay.test.ts b/src/plugins/data/common/search/aggs/buckets/shard_delay.test.ts index 15399ffc43791b..063dec97dadd4c 100644 --- a/src/plugins/data/common/search/aggs/buckets/shard_delay.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/shard_delay.test.ts @@ -60,6 +60,27 @@ describe('Shard Delay Agg', () => { ); }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs(); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "delay": Array [ + "5s", + ], + "enabled": Array [ + true, + ], + "id": Array [ + "1", + ], + }, + "function": "aggShardDelay", + "type": "function", + } + `); + }); + describe('write', () => { test('writes the delay as the value parameter', () => { const aggConfigs = getAggConfigs(); diff --git a/src/plugins/data/common/search/aggs/buckets/significant_terms.test.ts b/src/plugins/data/common/search/aggs/buckets/significant_terms.test.ts index e6c7bbee72a722..be40ff2267f11f 100644 --- a/src/plugins/data/common/search/aggs/buckets/significant_terms.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/significant_terms.test.ts @@ -64,6 +64,38 @@ describe('Significant Terms Agg', () => { expect(params.exclude).toBe('400'); }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs({ + size: 'SIZE', + field: { + name: 'FIELD', + }, + }); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "FIELD", + ], + "id": Array [ + "test", + ], + "schema": Array [ + "segment", + ], + "size": Array [ + "SIZE", + ], + }, + "function": "aggSignificantTerms", + "type": "function", + } + `); + }); + test('should generate correct label', () => { const aggConfigs = getAggConfigs({ size: 'SIZE', diff --git a/src/plugins/data/common/search/aggs/buckets/significant_terms.ts b/src/plugins/data/common/search/aggs/buckets/significant_terms.ts index 4dc8aafd8a7a77..5632c08378f4c3 100644 --- a/src/plugins/data/common/search/aggs/buckets/significant_terms.ts +++ b/src/plugins/data/common/search/aggs/buckets/significant_terms.ts @@ -22,6 +22,7 @@ import { BucketAggType } from './bucket_agg_type'; import { createFilterTerms } from './create_filter/terms'; import { isStringType, migrateIncludeExcludeFormat } from './migrate_include_exclude_format'; import { BUCKET_TYPES } from './bucket_agg_types'; +import { aggSignificantTermsFnName } from './significant_terms_fn'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BaseAggParams } from '../types'; @@ -39,6 +40,7 @@ export interface AggParamsSignificantTerms extends BaseAggParams { export const getSignificantTermsBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.SIGNIFICANT_TERMS, + expressionName: aggSignificantTermsFnName, title: significantTermsTitle, makeLabel(aggConfig) { return i18n.translate('data.search.aggs.buckets.significantTermsLabel', { diff --git a/src/plugins/data/common/search/aggs/buckets/significant_terms_fn.ts b/src/plugins/data/common/search/aggs/buckets/significant_terms_fn.ts index 1fecfcc9143130..a1a7500678fd6c 100644 --- a/src/plugins/data/common/search/aggs/buckets/significant_terms_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/significant_terms_fn.ts @@ -22,7 +22,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggSignificantTerms'; +export const aggSignificantTermsFnName = 'aggSignificantTerms'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -30,10 +30,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = AggArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggSignificantTermsFnName, + Input, + Arguments, + Output +>; export const aggSignificantTerms = (): FunctionDefinition => ({ - name: fnName, + name: aggSignificantTermsFnName, help: i18n.translate('data.search.aggs.function.buckets.significantTerms.help', { defaultMessage: 'Generates a serialized agg config for a Significant Terms agg', }), diff --git a/src/plugins/data/common/search/aggs/buckets/terms.test.ts b/src/plugins/data/common/search/aggs/buckets/terms.test.ts index 8f645b4712c7f2..a4116500bec127 100644 --- a/src/plugins/data/common/search/aggs/buckets/terms.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/terms.test.ts @@ -52,6 +52,80 @@ describe('Terms Agg', () => { ); }; + test('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs({ + include: { + pattern: '404', + }, + exclude: { + pattern: '400', + }, + field: { + name: 'field', + }, + orderAgg: { + type: 'count', + }, + }); + expect(aggConfigs.aggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "field", + ], + "id": Array [ + "test", + ], + "missingBucket": Array [ + false, + ], + "missingBucketLabel": Array [ + "Missing", + ], + "order": Array [ + "desc", + ], + "orderAgg": Array [ + Object { + "chain": Array [ + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "id": Array [ + "test-orderAgg", + ], + "schema": Array [ + "orderAgg", + ], + }, + "function": "aggCount", + "type": "function", + }, + ], + "type": "expression", + }, + ], + "otherBucket": Array [ + false, + ], + "otherBucketLabel": Array [ + "Other", + ], + "size": Array [ + 5, + ], + }, + "function": "aggTerms", + "type": "function", + } + `); + }); + test('converts object to string type', () => { const aggConfigs = getAggConfigs({ include: { diff --git a/src/plugins/data/common/search/aggs/buckets/terms.ts b/src/plugins/data/common/search/aggs/buckets/terms.ts index ac65e7fa813b3d..8683b23b39c851 100644 --- a/src/plugins/data/common/search/aggs/buckets/terms.ts +++ b/src/plugins/data/common/search/aggs/buckets/terms.ts @@ -28,6 +28,7 @@ import { isStringOrNumberType, migrateIncludeExcludeFormat, } from './migrate_include_exclude_format'; +import { aggTermsFnName } from './terms_fn'; import { AggConfigSerialized, BaseAggParams } from '../types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -75,7 +76,7 @@ export interface AggParamsTerms extends BaseAggParams { export const getTermsBucketAgg = () => new BucketAggType({ name: BUCKET_TYPES.TERMS, - expressionName: 'aggTerms', + expressionName: aggTermsFnName, title: termsTitle, makeLabel(agg) { const params = agg.params; @@ -102,7 +103,8 @@ export const getTermsBucketAgg = () => aggConfig, searchSource, inspectorRequestAdapter, - abortSignal + abortSignal, + searchSessionId ) => { if (!resp.aggregations) return resp; const nestedSearchSource = searchSource.createChild(); @@ -124,6 +126,7 @@ export const getTermsBucketAgg = () => 'This request counts the number of documents that fall ' + 'outside the criterion of the data buckets.', }), + searchSessionId, } ); nestedSearchSource.getSearchRequestBody().then((body) => { @@ -132,7 +135,10 @@ export const getTermsBucketAgg = () => request.stats(getRequestInspectorStats(nestedSearchSource)); } - const response = await nestedSearchSource.fetch({ abortSignal }); + const response = await nestedSearchSource.fetch({ + abortSignal, + sessionId: searchSessionId, + }); if (request) { request .stats(getResponseInspectorStats(response, nestedSearchSource)) diff --git a/src/plugins/data/common/search/aggs/buckets/terms_fn.ts b/src/plugins/data/common/search/aggs/buckets/terms_fn.ts index 975941506da4e9..7737cb1e1c9521 100644 --- a/src/plugins/data/common/search/aggs/buckets/terms_fn.ts +++ b/src/plugins/data/common/search/aggs/buckets/terms_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, BUCKET_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggTerms'; +export const aggTermsFnName = 'aggTerms'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -33,10 +33,15 @@ type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggTermsFnName, + Input, + Arguments, + Output +>; export const aggTerms = (): FunctionDefinition => ({ - name: fnName, + name: aggTermsFnName, help: i18n.translate('data.search.aggs.function.buckets.terms.help', { defaultMessage: 'Generates a serialized agg config for a Terms agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/avg.ts b/src/plugins/data/common/search/aggs/metrics/avg.ts index 651aaf857c757a..49c81b2918346c 100644 --- a/src/plugins/data/common/search/aggs/metrics/avg.ts +++ b/src/plugins/data/common/search/aggs/metrics/avg.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggAvgFnName } from './avg_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -34,6 +35,7 @@ export interface AggParamsAvg extends BaseAggParams { export const getAvgMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.AVG, + expressionName: aggAvgFnName, title: averageTitle, makeLabel: (aggConfig) => { return i18n.translate('data.search.aggs.metrics.averageLabel', { diff --git a/src/plugins/data/common/search/aggs/metrics/avg_fn.ts b/src/plugins/data/common/search/aggs/metrics/avg_fn.ts index 18629927d78148..57dd3dae70fba8 100644 --- a/src/plugins/data/common/search/aggs/metrics/avg_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/avg_fn.ts @@ -22,15 +22,15 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggAvg'; +export const aggAvgFnName = 'aggAvg'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition; export const aggAvg = (): FunctionDefinition => ({ - name: fnName, + name: aggAvgFnName, help: i18n.translate('data.search.aggs.function.metrics.avg.help', { defaultMessage: 'Generates a serialized agg config for a Avg agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_avg.ts b/src/plugins/data/common/search/aggs/metrics/bucket_avg.ts index 92fa675ac2d38d..003627ddec2a14 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_avg.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_avg.ts @@ -19,6 +19,7 @@ import { i18n } from '@kbn/i18n'; import { get } from 'lodash'; +import { aggBucketAvgFnName } from './bucket_avg_fn'; import { MetricAggType } from './metric_agg_type'; import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; @@ -43,6 +44,7 @@ export const getBucketAvgMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.AVG_BUCKET, + expressionName: aggBucketAvgFnName, title: averageBucketTitle, makeLabel: (agg) => makeNestedLabel(agg, overallAverageLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_avg_fn.ts b/src/plugins/data/common/search/aggs/metrics/bucket_avg_fn.ts index 4e0c1d7311cd6b..595d49647d9c21 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_avg_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_avg_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggBucketAvg'; +export const aggBucketAvgFnName = 'aggBucketAvg'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -32,10 +32,15 @@ type Arguments = Assign< { customBucket?: AggExpressionType; customMetric?: AggExpressionType } >; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggBucketAvgFnName, + Input, + Arguments, + Output +>; export const aggBucketAvg = (): FunctionDefinition => ({ - name: fnName, + name: aggBucketAvgFnName, help: i18n.translate('data.search.aggs.function.metrics.bucket_avg.help', { defaultMessage: 'Generates a serialized agg config for a Avg Bucket agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_max.ts b/src/plugins/data/common/search/aggs/metrics/bucket_max.ts index 8e2606676ec33c..c37e0d6e09e238 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_max.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_max.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggBucketMaxFnName } from './bucket_max_fn'; import { MetricAggType } from './metric_agg_type'; import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; @@ -42,6 +43,7 @@ export const getBucketMaxMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MAX_BUCKET, + expressionName: aggBucketMaxFnName, title: maxBucketTitle, makeLabel: (agg) => makeNestedLabel(agg, overallMaxLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_max_fn.ts b/src/plugins/data/common/search/aggs/metrics/bucket_max_fn.ts index 66ae7601470fb7..482c73e7d30059 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_max_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_max_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggBucketMax'; +export const aggBucketMaxFnName = 'aggBucketMax'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -32,10 +32,15 @@ type Arguments = Assign< { customBucket?: AggExpressionType; customMetric?: AggExpressionType } >; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggBucketMaxFnName, + Input, + Arguments, + Output +>; export const aggBucketMax = (): FunctionDefinition => ({ - name: fnName, + name: aggBucketMaxFnName, help: i18n.translate('data.search.aggs.function.metrics.bucket_max.help', { defaultMessage: 'Generates a serialized agg config for a Max Bucket agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_min.ts b/src/plugins/data/common/search/aggs/metrics/bucket_min.ts index dedc3a9de3dd10..2aee271a69cc36 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_min.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_min.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggBucketMinFnName } from './bucket_min_fn'; import { MetricAggType } from './metric_agg_type'; import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; @@ -42,6 +43,7 @@ export const getBucketMinMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MIN_BUCKET, + expressionName: aggBucketMinFnName, title: minBucketTitle, makeLabel: (agg) => makeNestedLabel(agg, overallMinLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_min_fn.ts b/src/plugins/data/common/search/aggs/metrics/bucket_min_fn.ts index 009cc0102b05d9..68beffbf056608 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_min_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_min_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggBucketMin'; +export const aggBucketMinFnName = 'aggBucketMin'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -32,10 +32,15 @@ type Arguments = Assign< { customBucket?: AggExpressionType; customMetric?: AggExpressionType } >; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggBucketMinFnName, + Input, + Arguments, + Output +>; export const aggBucketMin = (): FunctionDefinition => ({ - name: fnName, + name: aggBucketMinFnName, help: i18n.translate('data.search.aggs.function.metrics.bucket_min.help', { defaultMessage: 'Generates a serialized agg config for a Min Bucket agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_sum.ts b/src/plugins/data/common/search/aggs/metrics/bucket_sum.ts index c6ccd498a0eb99..d7a7ed47ac2dfd 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_sum.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_sum.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggBucketSumFnName } from './bucket_sum_fn'; import { MetricAggType } from './metric_agg_type'; import { makeNestedLabel } from './lib/make_nested_label'; import { siblingPipelineAggHelper } from './lib/sibling_pipeline_agg_helper'; @@ -42,6 +43,7 @@ export const getBucketSumMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.SUM_BUCKET, + expressionName: aggBucketSumFnName, title: sumBucketTitle, makeLabel: (agg) => makeNestedLabel(agg, overallSumLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/bucket_sum_fn.ts b/src/plugins/data/common/search/aggs/metrics/bucket_sum_fn.ts index 920285e89e8f40..7994bb85be2a73 100644 --- a/src/plugins/data/common/search/aggs/metrics/bucket_sum_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/bucket_sum_fn.ts @@ -23,7 +23,7 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggBucketSum'; +export const aggBucketSumFnName = 'aggBucketSum'; type Input = any; type AggArgs = AggExpressionFunctionArgs; @@ -32,10 +32,15 @@ type Arguments = Assign< { customBucket?: AggExpressionType; customMetric?: AggExpressionType } >; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggBucketSumFnName, + Input, + Arguments, + Output +>; export const aggBucketSum = (): FunctionDefinition => ({ - name: fnName, + name: aggBucketSumFnName, help: i18n.translate('data.search.aggs.function.metrics.bucket_sum.help', { defaultMessage: 'Generates a serialized agg config for a Sum Bucket agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/cardinality.ts b/src/plugins/data/common/search/aggs/metrics/cardinality.ts index 777cb833849f48..91f2b729e9dda6 100644 --- a/src/plugins/data/common/search/aggs/metrics/cardinality.ts +++ b/src/plugins/data/common/search/aggs/metrics/cardinality.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggCardinalityFnName } from './cardinality_fn'; import { MetricAggType, IMetricAggConfig } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -34,6 +35,7 @@ export interface AggParamsCardinality extends BaseAggParams { export const getCardinalityMetricAgg = () => new MetricAggType({ name: METRIC_TYPES.CARDINALITY, + expressionName: aggCardinalityFnName, title: uniqueCountTitle, makeLabel(aggConfig: IMetricAggConfig) { return i18n.translate('data.search.aggs.metrics.uniqueCountLabel', { diff --git a/src/plugins/data/common/search/aggs/metrics/cardinality_fn.ts b/src/plugins/data/common/search/aggs/metrics/cardinality_fn.ts index 2542c76e7be576..6e78a42fea90f2 100644 --- a/src/plugins/data/common/search/aggs/metrics/cardinality_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/cardinality_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggCardinality'; +export const aggCardinalityFnName = 'aggCardinality'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggCardinalityFnName, + Input, + AggArgs, + Output +>; export const aggCardinality = (): FunctionDefinition => ({ - name: fnName, + name: aggCardinalityFnName, help: i18n.translate('data.search.aggs.function.metrics.cardinality.help', { defaultMessage: 'Generates a serialized agg config for a Cardinality agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/count.ts b/src/plugins/data/common/search/aggs/metrics/count.ts index 9c9f36651f4d23..a50b627ae2398a 100644 --- a/src/plugins/data/common/search/aggs/metrics/count.ts +++ b/src/plugins/data/common/search/aggs/metrics/count.ts @@ -18,12 +18,14 @@ */ import { i18n } from '@kbn/i18n'; +import { aggCountFnName } from './count_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; export const getCountMetricAgg = () => new MetricAggType({ name: METRIC_TYPES.COUNT, + expressionName: aggCountFnName, title: i18n.translate('data.search.aggs.metrics.countTitle', { defaultMessage: 'Count', }), diff --git a/src/plugins/data/common/search/aggs/metrics/count_fn.ts b/src/plugins/data/common/search/aggs/metrics/count_fn.ts index 7d4616ffdc6191..a4df6f9ebd061a 100644 --- a/src/plugins/data/common/search/aggs/metrics/count_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/count_fn.ts @@ -21,15 +21,20 @@ import { i18n } from '@kbn/i18n'; import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; -const fnName = 'aggCount'; +export const aggCountFnName = 'aggCount'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggCountFnName, + Input, + AggArgs, + Output +>; export const aggCount = (): FunctionDefinition => ({ - name: fnName, + name: aggCountFnName, help: i18n.translate('data.search.aggs.function.metrics.count.help', { defaultMessage: 'Generates a serialized agg config for a Count agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/cumulative_sum.ts b/src/plugins/data/common/search/aggs/metrics/cumulative_sum.ts index b10bdd31a58179..bb0d15782c342c 100644 --- a/src/plugins/data/common/search/aggs/metrics/cumulative_sum.ts +++ b/src/plugins/data/common/search/aggs/metrics/cumulative_sum.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggCumulativeSumFnName } from './cumulative_sum_fn'; import { MetricAggType } from './metric_agg_type'; import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; @@ -43,6 +44,7 @@ export const getCumulativeSumMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.CUMULATIVE_SUM, + expressionName: aggCumulativeSumFnName, title: cumulativeSumTitle, makeLabel: (agg) => makeNestedLabel(agg, cumulativeSumLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/cumulative_sum_fn.ts b/src/plugins/data/common/search/aggs/metrics/cumulative_sum_fn.ts index 411cbd256c37e8..43df5301e1a042 100644 --- a/src/plugins/data/common/search/aggs/metrics/cumulative_sum_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/cumulative_sum_fn.ts @@ -23,16 +23,21 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggCumulativeSum'; +export const aggCumulativeSumFnName = 'aggCumulativeSum'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggCumulativeSumFnName, + Input, + Arguments, + Output +>; export const aggCumulativeSum = (): FunctionDefinition => ({ - name: fnName, + name: aggCumulativeSumFnName, help: i18n.translate('data.search.aggs.function.metrics.cumulative_sum.help', { defaultMessage: 'Generates a serialized agg config for a Cumulative Sum agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/derivative.ts b/src/plugins/data/common/search/aggs/metrics/derivative.ts index c03c33ba80710a..ee32d12e5c85da 100644 --- a/src/plugins/data/common/search/aggs/metrics/derivative.ts +++ b/src/plugins/data/common/search/aggs/metrics/derivative.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggDerivativeFnName } from './derivative_fn'; import { MetricAggType } from './metric_agg_type'; import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; @@ -43,6 +44,7 @@ export const getDerivativeMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.DERIVATIVE, + expressionName: aggDerivativeFnName, title: derivativeTitle, makeLabel(agg) { return makeNestedLabel(agg, derivativeLabel); diff --git a/src/plugins/data/common/search/aggs/metrics/derivative_fn.ts b/src/plugins/data/common/search/aggs/metrics/derivative_fn.ts index 1d87dfdac6da32..354166ad728ad4 100644 --- a/src/plugins/data/common/search/aggs/metrics/derivative_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/derivative_fn.ts @@ -23,16 +23,21 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggDerivative'; +export const aggDerivativeFnName = 'aggDerivative'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggDerivativeFnName, + Input, + Arguments, + Output +>; export const aggDerivative = (): FunctionDefinition => ({ - name: fnName, + name: aggDerivativeFnName, help: i18n.translate('data.search.aggs.function.metrics.derivative.help', { defaultMessage: 'Generates a serialized agg config for a Derivative agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/geo_bounds.ts b/src/plugins/data/common/search/aggs/metrics/geo_bounds.ts index c86f42f066bdf8..5157ef1a134a7e 100644 --- a/src/plugins/data/common/search/aggs/metrics/geo_bounds.ts +++ b/src/plugins/data/common/search/aggs/metrics/geo_bounds.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggGeoBoundsFnName } from './geo_bounds_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -38,6 +39,7 @@ const geoBoundsLabel = i18n.translate('data.search.aggs.metrics.geoBoundsLabel', export const getGeoBoundsMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.GEO_BOUNDS, + expressionName: aggGeoBoundsFnName, title: geoBoundsTitle, makeLabel: () => geoBoundsLabel, params: [ diff --git a/src/plugins/data/common/search/aggs/metrics/geo_bounds_fn.ts b/src/plugins/data/common/search/aggs/metrics/geo_bounds_fn.ts index 927f7f42d0f50b..af5ea3c80506c8 100644 --- a/src/plugins/data/common/search/aggs/metrics/geo_bounds_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/geo_bounds_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggGeoBounds'; +export const aggGeoBoundsFnName = 'aggGeoBounds'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggGeoBoundsFnName, + Input, + AggArgs, + Output +>; export const aggGeoBounds = (): FunctionDefinition => ({ - name: fnName, + name: aggGeoBoundsFnName, help: i18n.translate('data.search.aggs.function.metrics.geo_bounds.help', { defaultMessage: 'Generates a serialized agg config for a Geo Bounds agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/geo_centroid.ts b/src/plugins/data/common/search/aggs/metrics/geo_centroid.ts index b98ce45d35229c..c293d4a4b1620b 100644 --- a/src/plugins/data/common/search/aggs/metrics/geo_centroid.ts +++ b/src/plugins/data/common/search/aggs/metrics/geo_centroid.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggGeoCentroidFnName } from './geo_centroid_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -38,6 +39,7 @@ const geoCentroidLabel = i18n.translate('data.search.aggs.metrics.geoCentroidLab export const getGeoCentroidMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.GEO_CENTROID, + expressionName: aggGeoCentroidFnName, title: geoCentroidTitle, makeLabel: () => geoCentroidLabel, params: [ diff --git a/src/plugins/data/common/search/aggs/metrics/geo_centroid_fn.ts b/src/plugins/data/common/search/aggs/metrics/geo_centroid_fn.ts index 98bd7365f8b3f3..2c2d60711def32 100644 --- a/src/plugins/data/common/search/aggs/metrics/geo_centroid_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/geo_centroid_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggGeoCentroid'; +export const aggGeoCentroidFnName = 'aggGeoCentroid'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggGeoCentroidFnName, + Input, + AggArgs, + Output +>; export const aggGeoCentroid = (): FunctionDefinition => ({ - name: fnName, + name: aggGeoCentroidFnName, help: i18n.translate('data.search.aggs.function.metrics.geo_centroid.help', { defaultMessage: 'Generates a serialized agg config for a Geo Centroid agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/max.ts b/src/plugins/data/common/search/aggs/metrics/max.ts index 5b2f08c5b02609..f69b64c47f6521 100644 --- a/src/plugins/data/common/search/aggs/metrics/max.ts +++ b/src/plugins/data/common/search/aggs/metrics/max.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggMaxFnName } from './max_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -34,6 +35,7 @@ export interface AggParamsMax extends BaseAggParams { export const getMaxMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MAX, + expressionName: aggMaxFnName, title: maxTitle, makeLabel(aggConfig) { return i18n.translate('data.search.aggs.metrics.maxLabel', { diff --git a/src/plugins/data/common/search/aggs/metrics/max_fn.ts b/src/plugins/data/common/search/aggs/metrics/max_fn.ts index d1bccd08982f8c..9624cd30123989 100644 --- a/src/plugins/data/common/search/aggs/metrics/max_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/max_fn.ts @@ -22,15 +22,15 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggMax'; +export const aggMaxFnName = 'aggMax'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition; export const aggMax = (): FunctionDefinition => ({ - name: fnName, + name: aggMaxFnName, help: i18n.translate('data.search.aggs.function.metrics.max.help', { defaultMessage: 'Generates a serialized agg config for a Max agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/median.test.ts b/src/plugins/data/common/search/aggs/metrics/median.test.ts index 42298586cb68f7..42ea942098c4ae 100644 --- a/src/plugins/data/common/search/aggs/metrics/median.test.ts +++ b/src/plugins/data/common/search/aggs/metrics/median.test.ts @@ -82,4 +82,28 @@ describe('AggTypeMetricMedianProvider class', () => { }) ).toEqual(10); }); + + it('produces the expected expression ast', () => { + const agg = aggConfigs.getResponseAggs()[0]; + expect(agg.toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "bytes", + ], + "id": Array [ + "median", + ], + "schema": Array [ + "metric", + ], + }, + "function": "aggMedian", + "type": "function", + } + `); + }); }); diff --git a/src/plugins/data/common/search/aggs/metrics/median.ts b/src/plugins/data/common/search/aggs/metrics/median.ts index a1894610209155..c511a7018575d9 100644 --- a/src/plugins/data/common/search/aggs/metrics/median.ts +++ b/src/plugins/data/common/search/aggs/metrics/median.ts @@ -18,6 +18,7 @@ */ import { i18n } from '@kbn/i18n'; +import { aggMedianFnName } from './median_fn'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -34,6 +35,7 @@ export interface AggParamsMedian extends BaseAggParams { export const getMedianMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MEDIAN, + expressionName: aggMedianFnName, dslName: 'percentiles', title: medianTitle, makeLabel(aggConfig) { diff --git a/src/plugins/data/common/search/aggs/metrics/median_fn.ts b/src/plugins/data/common/search/aggs/metrics/median_fn.ts index c5e9edb86e81c5..e2ea8ae0fe2e71 100644 --- a/src/plugins/data/common/search/aggs/metrics/median_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/median_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggMedian'; +export const aggMedianFnName = 'aggMedian'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggMedianFnName, + Input, + AggArgs, + Output +>; export const aggMedian = (): FunctionDefinition => ({ - name: fnName, + name: aggMedianFnName, help: i18n.translate('data.search.aggs.function.metrics.median.help', { defaultMessage: 'Generates a serialized agg config for a Median agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/min.ts b/src/plugins/data/common/search/aggs/metrics/min.ts index 6472c3ae129901..a0ed0cd19c1271 100644 --- a/src/plugins/data/common/search/aggs/metrics/min.ts +++ b/src/plugins/data/common/search/aggs/metrics/min.ts @@ -20,6 +20,7 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; +import { aggMinFnName } from './min_fn'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BaseAggParams } from '../types'; @@ -34,6 +35,7 @@ export interface AggParamsMin extends BaseAggParams { export const getMinMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MIN, + expressionName: aggMinFnName, title: minTitle, makeLabel(aggConfig) { return i18n.translate('data.search.aggs.metrics.minLabel', { diff --git a/src/plugins/data/common/search/aggs/metrics/min_fn.ts b/src/plugins/data/common/search/aggs/metrics/min_fn.ts index 7a57c79a350fa5..b880937eea2d7f 100644 --- a/src/plugins/data/common/search/aggs/metrics/min_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/min_fn.ts @@ -22,15 +22,15 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggMin'; +export const aggMinFnName = 'aggMin'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition; export const aggMin = (): FunctionDefinition => ({ - name: fnName, + name: aggMinFnName, help: i18n.translate('data.search.aggs.function.metrics.min.help', { defaultMessage: 'Generates a serialized agg config for a Min agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/moving_avg.ts b/src/plugins/data/common/search/aggs/metrics/moving_avg.ts index 1791d49b984373..60e0f4293cb9e9 100644 --- a/src/plugins/data/common/search/aggs/metrics/moving_avg.ts +++ b/src/plugins/data/common/search/aggs/metrics/moving_avg.ts @@ -19,6 +19,7 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; +import { aggMovingAvgFnName } from './moving_avg_fn'; import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; @@ -45,6 +46,7 @@ export const getMovingAvgMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.MOVING_FN, + expressionName: aggMovingAvgFnName, dslName: 'moving_fn', title: movingAvgTitle, makeLabel: (agg) => makeNestedLabel(agg, movingAvgLabel), diff --git a/src/plugins/data/common/search/aggs/metrics/moving_avg_fn.ts b/src/plugins/data/common/search/aggs/metrics/moving_avg_fn.ts index e1c1637d3ad1d8..f517becf2bd650 100644 --- a/src/plugins/data/common/search/aggs/metrics/moving_avg_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/moving_avg_fn.ts @@ -23,16 +23,21 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggMovingAvg'; +export const aggMovingAvgFnName = 'aggMovingAvg'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggMovingAvgFnName, + Input, + Arguments, + Output +>; export const aggMovingAvg = (): FunctionDefinition => ({ - name: fnName, + name: aggMovingAvgFnName, help: i18n.translate('data.search.aggs.function.metrics.moving_avg.help', { defaultMessage: 'Generates a serialized agg config for a Moving Average agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/percentile_ranks.test.ts b/src/plugins/data/common/search/aggs/metrics/percentile_ranks.test.ts index 970daf5b624585..9955aeef4e0d2a 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentile_ranks.test.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentile_ranks.test.ts @@ -63,7 +63,7 @@ describe('AggTypesMetricsPercentileRanksProvider class', function () { ); }); - it('uses the custom label if it is set', function () { + it('uses the custom label if it is set', () => { const responseAggs: any = getPercentileRanksMetricAgg(aggTypesDependencies).getResponseAggs( aggConfigs.aggs[0] as IPercentileRanksAggConfig ); @@ -74,4 +74,62 @@ describe('AggTypesMetricsPercentileRanksProvider class', function () { expect(percentileRankLabelFor5kBytes).toBe('Percentile rank 5000 of "my custom field label"'); expect(percentileRankLabelFor10kBytes).toBe('Percentile rank 10000 of "my custom field label"'); }); + + it('produces the expected expression ast', () => { + const responseAggs: any = getPercentileRanksMetricAgg(aggTypesDependencies).getResponseAggs( + aggConfigs.aggs[0] as IPercentileRanksAggConfig + ); + expect(responseAggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "customLabel": Array [ + "my custom field label", + ], + "enabled": Array [ + true, + ], + "field": Array [ + "bytes", + ], + "id": Array [ + "percentile_ranks.5000", + ], + "schema": Array [ + "metric", + ], + "values": Array [ + "[5000,10000]", + ], + }, + "function": "aggPercentileRanks", + "type": "function", + } + `); + expect(responseAggs[1].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "customLabel": Array [ + "my custom field label", + ], + "enabled": Array [ + true, + ], + "field": Array [ + "bytes", + ], + "id": Array [ + "percentile_ranks.10000", + ], + "schema": Array [ + "metric", + ], + "values": Array [ + "[5000,10000]", + ], + }, + "function": "aggPercentileRanks", + "type": "function", + } + `); + }); }); diff --git a/src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts b/src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts index 664cc1ad02adae..5260f52731a88c 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentile_ranks.ts @@ -25,6 +25,7 @@ import { BaseAggParams } from '../types'; import { MetricAggType } from './metric_agg_type'; import { getResponseAggConfigClass, IResponseAggConfig } from './lib/get_response_agg_config_class'; +import { aggPercentileRanksFnName } from './percentile_ranks_fn'; import { getPercentileValue } from './percentiles_get_value'; import { METRIC_TYPES } from './metric_agg_types'; @@ -64,6 +65,7 @@ export const getPercentileRanksMetricAgg = ({ }: PercentileRanksMetricAggDependencies) => { return new MetricAggType({ name: METRIC_TYPES.PERCENTILE_RANKS, + expressionName: aggPercentileRanksFnName, title: i18n.translate('data.search.aggs.metrics.percentileRanksTitle', { defaultMessage: 'Percentile Ranks', }), diff --git a/src/plugins/data/common/search/aggs/metrics/percentile_ranks_fn.ts b/src/plugins/data/common/search/aggs/metrics/percentile_ranks_fn.ts index 08e1489a856dd0..9bf35c4dba9ff1 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentile_ranks_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentile_ranks_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggPercentileRanks'; +export const aggPercentileRanksFnName = 'aggPercentileRanks'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggPercentileRanksFnName, + Input, + AggArgs, + Output +>; export const aggPercentileRanks = (): FunctionDefinition => ({ - name: fnName, + name: aggPercentileRanksFnName, help: i18n.translate('data.search.aggs.function.metrics.percentile_ranks.help', { defaultMessage: 'Generates a serialized agg config for a Percentile Ranks agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/percentiles.test.ts b/src/plugins/data/common/search/aggs/metrics/percentiles.test.ts index 10e98df5a4eeb1..78b00a48a96110 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentiles.test.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentiles.test.ts @@ -66,4 +66,36 @@ describe('AggTypesMetricsPercentilesProvider class', () => { expect(ninetyFifthPercentileLabel).toBe('95th percentile of prince'); }); + + it('produces the expected expression ast', () => { + const responseAggs: any = getPercentilesMetricAgg().getResponseAggs( + aggConfigs.aggs[0] as IPercentileAggConfig + ); + expect(responseAggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "customLabel": Array [ + "prince", + ], + "enabled": Array [ + true, + ], + "field": Array [ + "bytes", + ], + "id": Array [ + "percentiles.95", + ], + "percents": Array [ + "[95]", + ], + "schema": Array [ + "metric", + ], + }, + "function": "aggPercentiles", + "type": "function", + } + `); + }); }); diff --git a/src/plugins/data/common/search/aggs/metrics/percentiles.ts b/src/plugins/data/common/search/aggs/metrics/percentiles.ts index 8ea493f3248116..22aeb820dbe0b6 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentiles.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentiles.ts @@ -22,6 +22,7 @@ import { MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; import { getResponseAggConfigClass, IResponseAggConfig } from './lib/get_response_agg_config_class'; +import { aggPercentilesFnName } from './percentiles_fn'; import { getPercentileValue } from './percentiles_get_value'; import { ordinalSuffix } from './lib/ordinal_suffix'; import { BaseAggParams } from '../types'; @@ -48,6 +49,7 @@ const valueProps = { export const getPercentilesMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.PERCENTILES, + expressionName: aggPercentilesFnName, title: i18n.translate('data.search.aggs.metrics.percentilesTitle', { defaultMessage: 'Percentiles', }), diff --git a/src/plugins/data/common/search/aggs/metrics/percentiles_fn.ts b/src/plugins/data/common/search/aggs/metrics/percentiles_fn.ts index eb8952267f5ea4..d7bcefc23f7116 100644 --- a/src/plugins/data/common/search/aggs/metrics/percentiles_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/percentiles_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggPercentiles'; +export const aggPercentilesFnName = 'aggPercentiles'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggPercentilesFnName, + Input, + AggArgs, + Output +>; export const aggPercentiles = (): FunctionDefinition => ({ - name: fnName, + name: aggPercentilesFnName, help: i18n.translate('data.search.aggs.function.metrics.percentiles.help', { defaultMessage: 'Generates a serialized agg config for a Percentiles agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/serial_diff.ts b/src/plugins/data/common/search/aggs/metrics/serial_diff.ts index a4e4d7a8990fae..30158a312289fd 100644 --- a/src/plugins/data/common/search/aggs/metrics/serial_diff.ts +++ b/src/plugins/data/common/search/aggs/metrics/serial_diff.ts @@ -19,6 +19,7 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; +import { aggSerialDiffFnName } from './serial_diff_fn'; import { parentPipelineAggHelper } from './lib/parent_pipeline_agg_helper'; import { makeNestedLabel } from './lib/make_nested_label'; import { METRIC_TYPES } from './metric_agg_types'; @@ -43,6 +44,7 @@ export const getSerialDiffMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.SERIAL_DIFF, + expressionName: aggSerialDiffFnName, title: serialDiffTitle, makeLabel: (agg) => makeNestedLabel(agg, serialDiffLabel), subtype, diff --git a/src/plugins/data/common/search/aggs/metrics/serial_diff_fn.ts b/src/plugins/data/common/search/aggs/metrics/serial_diff_fn.ts index 3cc1dacb87b3d7..96f82e430a0b4b 100644 --- a/src/plugins/data/common/search/aggs/metrics/serial_diff_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/serial_diff_fn.ts @@ -23,16 +23,21 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggSerialDiff'; +export const aggSerialDiffFnName = 'aggSerialDiff'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Arguments = Assign; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggSerialDiffFnName, + Input, + Arguments, + Output +>; export const aggSerialDiff = (): FunctionDefinition => ({ - name: fnName, + name: aggSerialDiffFnName, help: i18n.translate('data.search.aggs.function.metrics.serial_diff.help', { defaultMessage: 'Generates a serialized agg config for a Serial Differencing agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/std_deviation.test.ts b/src/plugins/data/common/search/aggs/metrics/std_deviation.test.ts index f2f30fcde42eb7..6ca0c6698376f7 100644 --- a/src/plugins/data/common/search/aggs/metrics/std_deviation.test.ts +++ b/src/plugins/data/common/search/aggs/metrics/std_deviation.test.ts @@ -82,4 +82,29 @@ describe('AggTypeMetricStandardDeviationProvider class', () => { expect(lowerStdDevLabel).toBe('Lower Standard Deviation of memory'); expect(upperStdDevLabel).toBe('Upper Standard Deviation of memory'); }); + + it('produces the expected expression ast', () => { + const aggConfigs = getAggConfigs(); + + const responseAggs: any = getStdDeviationMetricAgg().getResponseAggs( + aggConfigs.aggs[0] as IStdDevAggConfig + ); + expect(responseAggs[0].toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "enabled": Array [ + true, + ], + "id": Array [ + "std_dev.std_lower", + ], + "schema": Array [ + "metric", + ], + }, + "function": "aggStdDeviation", + "type": "function", + } + `); + }); }); diff --git a/src/plugins/data/common/search/aggs/metrics/std_deviation.ts b/src/plugins/data/common/search/aggs/metrics/std_deviation.ts index 9aba0637762522..88b2fd69e2b85e 100644 --- a/src/plugins/data/common/search/aggs/metrics/std_deviation.ts +++ b/src/plugins/data/common/search/aggs/metrics/std_deviation.ts @@ -20,6 +20,7 @@ import { get } from 'lodash'; import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; +import { aggStdDeviationFnName } from './std_deviation_fn'; import { METRIC_TYPES } from './metric_agg_types'; import { getResponseAggConfigClass, IResponseAggConfig } from './lib/get_response_agg_config_class'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -83,6 +84,7 @@ const responseAggConfigProps = { export const getStdDeviationMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.STD_DEV, + expressionName: aggStdDeviationFnName, dslName: 'extended_stats', title: i18n.translate('data.search.aggs.metrics.standardDeviationTitle', { defaultMessage: 'Standard Deviation', diff --git a/src/plugins/data/common/search/aggs/metrics/std_deviation_fn.ts b/src/plugins/data/common/search/aggs/metrics/std_deviation_fn.ts index 61b8a6f28f0889..2a3c1bd33e17d0 100644 --- a/src/plugins/data/common/search/aggs/metrics/std_deviation_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/std_deviation_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggStdDeviation'; +export const aggStdDeviationFnName = 'aggStdDeviation'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggStdDeviationFnName, + Input, + AggArgs, + Output +>; export const aggStdDeviation = (): FunctionDefinition => ({ - name: fnName, + name: aggStdDeviationFnName, help: i18n.translate('data.search.aggs.function.metrics.std_deviation.help', { defaultMessage: 'Generates a serialized agg config for a Standard Deviation agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/sum.ts b/src/plugins/data/common/search/aggs/metrics/sum.ts index fa44af98554dab..c24887b5e08188 100644 --- a/src/plugins/data/common/search/aggs/metrics/sum.ts +++ b/src/plugins/data/common/search/aggs/metrics/sum.ts @@ -19,6 +19,7 @@ import { i18n } from '@kbn/i18n'; import { MetricAggType } from './metric_agg_type'; +import { aggSumFnName } from './sum_fn'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; import { BaseAggParams } from '../types'; @@ -34,6 +35,7 @@ export interface AggParamsSum extends BaseAggParams { export const getSumMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.SUM, + expressionName: aggSumFnName, title: sumTitle, makeLabel(aggConfig) { return i18n.translate('data.search.aggs.metrics.sumLabel', { diff --git a/src/plugins/data/common/search/aggs/metrics/sum_fn.ts b/src/plugins/data/common/search/aggs/metrics/sum_fn.ts index e625befc8f1d96..a42510dc594ad6 100644 --- a/src/plugins/data/common/search/aggs/metrics/sum_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/sum_fn.ts @@ -22,15 +22,15 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggSum'; +export const aggSumFnName = 'aggSum'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition; export const aggSum = (): FunctionDefinition => ({ - name: fnName, + name: aggSumFnName, help: i18n.translate('data.search.aggs.function.metrics.sum.help', { defaultMessage: 'Generates a serialized agg config for a Sum agg', }), diff --git a/src/plugins/data/common/search/aggs/metrics/top_hit.test.ts b/src/plugins/data/common/search/aggs/metrics/top_hit.test.ts index c0cbfb33c842b5..2fdefa7679e9b0 100644 --- a/src/plugins/data/common/search/aggs/metrics/top_hit.test.ts +++ b/src/plugins/data/common/search/aggs/metrics/top_hit.test.ts @@ -102,6 +102,42 @@ describe('Top hit metric', () => { expect(getTopHitMetricAgg().makeLabel(aggConfig)).toEqual('First bytes'); }); + it('produces the expected expression ast', () => { + init({ fieldName: 'machine.os' }); + expect(aggConfig.toExpressionAst()).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "aggregate": Array [ + "concat", + ], + "enabled": Array [ + true, + ], + "field": Array [ + "machine.os", + ], + "id": Array [ + "1", + ], + "schema": Array [ + "metric", + ], + "size": Array [ + 1, + ], + "sortField": Array [ + "machine.os", + ], + "sortOrder": Array [ + "desc", + ], + }, + "function": "aggTopHit", + "type": "function", + } + `); + }); + it('should request the _source field', () => { init({ field: '_source' }); expect(aggDsl.top_hits._source).toBeTruthy(); diff --git a/src/plugins/data/common/search/aggs/metrics/top_hit.ts b/src/plugins/data/common/search/aggs/metrics/top_hit.ts index bee731dcc2e0d6..3ef9f9ffa3ad08 100644 --- a/src/plugins/data/common/search/aggs/metrics/top_hit.ts +++ b/src/plugins/data/common/search/aggs/metrics/top_hit.ts @@ -19,6 +19,7 @@ import _ from 'lodash'; import { i18n } from '@kbn/i18n'; +import { aggTopHitFnName } from './top_hit_fn'; import { IMetricAggConfig, MetricAggType } from './metric_agg_type'; import { METRIC_TYPES } from './metric_agg_types'; import { KBN_FIELD_TYPES } from '../../../../common'; @@ -41,6 +42,7 @@ const isNumericFieldSelected = (agg: IMetricAggConfig) => { export const getTopHitMetricAgg = () => { return new MetricAggType({ name: METRIC_TYPES.TOP_HITS, + expressionName: aggTopHitFnName, title: i18n.translate('data.search.aggs.metrics.topHitTitle', { defaultMessage: 'Top Hit', }), diff --git a/src/plugins/data/common/search/aggs/metrics/top_hit_fn.ts b/src/plugins/data/common/search/aggs/metrics/top_hit_fn.ts index e0c3fd0d070b27..38a3bc6a59bfca 100644 --- a/src/plugins/data/common/search/aggs/metrics/top_hit_fn.ts +++ b/src/plugins/data/common/search/aggs/metrics/top_hit_fn.ts @@ -22,15 +22,20 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { AggExpressionType, AggExpressionFunctionArgs, METRIC_TYPES } from '../'; import { getParsedValue } from '../utils/get_parsed_value'; -const fnName = 'aggTopHit'; +export const aggTopHitFnName = 'aggTopHit'; type Input = any; type AggArgs = AggExpressionFunctionArgs; type Output = AggExpressionType; -type FunctionDefinition = ExpressionFunctionDefinition; +type FunctionDefinition = ExpressionFunctionDefinition< + typeof aggTopHitFnName, + Input, + AggArgs, + Output +>; export const aggTopHit = (): FunctionDefinition => ({ - name: fnName, + name: aggTopHitFnName, help: i18n.translate('data.search.aggs.function.metrics.top_hit.help', { defaultMessage: 'Generates a serialized agg config for a Top Hit agg', }), diff --git a/src/plugins/data/common/search/es_search/es_search_rxjs_utils.ts b/src/plugins/data/common/search/es_search/es_search_rxjs_utils.ts deleted file mode 100644 index e3238ea62db57c..00000000000000 --- a/src/plugins/data/common/search/es_search/es_search_rxjs_utils.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { from } from 'rxjs'; -import { map } from 'rxjs/operators'; - -import type { SearchResponse } from 'elasticsearch'; -import type { ApiResponse } from '@elastic/elasticsearch'; - -import { shimAbortSignal } from './shim_abort_signal'; -import { getTotalLoaded } from './get_total_loaded'; - -import type { IEsRawSearchResponse } from './types'; -import type { IKibanaSearchResponse } from '../types'; - -export const doSearch = ( - searchMethod: () => Promise, - abortSignal?: AbortSignal -) => from(shimAbortSignal(searchMethod(), abortSignal)); - -export const toKibanaSearchResponse = < - SearchResponse extends IEsRawSearchResponse = IEsRawSearchResponse, - KibanaResponse extends IKibanaSearchResponse = IKibanaSearchResponse ->() => - map, KibanaResponse>( - (response) => - ({ - id: response.body.id, - isPartial: response.body.is_partial || false, - isRunning: response.body.is_running || false, - rawResponse: response.body, - } as KibanaResponse) - ); - -export const includeTotalLoaded = () => - map((response: IKibanaSearchResponse>) => ({ - ...response, - ...getTotalLoaded(response.rawResponse._shards), - })); diff --git a/src/plugins/data/common/search/es_search/get_total_loaded.test.ts b/src/plugins/data/common/search/es_search/get_total_loaded.test.ts deleted file mode 100644 index 74e2873ede7628..00000000000000 --- a/src/plugins/data/common/search/es_search/get_total_loaded.test.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { getTotalLoaded } from './get_total_loaded'; - -describe('getTotalLoaded', () => { - it('returns the total/loaded, not including skipped', () => { - const result = getTotalLoaded({ - successful: 10, - failed: 5, - skipped: 5, - total: 100, - }); - - expect(result).toEqual({ - total: 100, - loaded: 15, - }); - }); -}); diff --git a/src/plugins/data/common/search/es_search/get_total_loaded.ts b/src/plugins/data/common/search/es_search/get_total_loaded.ts deleted file mode 100644 index 233bcf81866664..00000000000000 --- a/src/plugins/data/common/search/es_search/get_total_loaded.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import type { ShardsResponse } from 'elasticsearch'; - -/** - * Get the `total`/`loaded` for this response (see `IKibanaSearchResponse`). Note that `skipped` is - * not included as it is already included in `successful`. - * @internal - */ -export function getTotalLoaded({ total, failed, successful }: ShardsResponse) { - const loaded = failed + successful; - return { total, loaded }; -} diff --git a/src/plugins/data/common/search/es_search/index.ts b/src/plugins/data/common/search/es_search/index.ts index 555667a9f53009..d8f7b5091eb8f6 100644 --- a/src/plugins/data/common/search/es_search/index.ts +++ b/src/plugins/data/common/search/es_search/index.ts @@ -18,8 +18,3 @@ */ export * from './types'; -export * from './utils'; -export * from './es_search_rxjs_utils'; -export * from './shim_abort_signal'; -export * from './to_snake_case'; -export * from './get_total_loaded'; diff --git a/src/plugins/data/common/search/es_search/shim_abort_signal.test.ts b/src/plugins/data/common/search/es_search/shim_abort_signal.test.ts deleted file mode 100644 index 61af8b4c782ae0..00000000000000 --- a/src/plugins/data/common/search/es_search/shim_abort_signal.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { shimAbortSignal } from './shim_abort_signal'; - -const createSuccessTransportRequestPromise = ( - body: any, - { statusCode = 200 }: { statusCode?: number } = {} -) => { - const promise = Promise.resolve({ body, statusCode }) as any; - promise.abort = jest.fn(); - - return promise; -}; - -describe('shimAbortSignal', () => { - test('aborts the promise if the signal is aborted', () => { - const promise = createSuccessTransportRequestPromise({ - success: true, - }); - const controller = new AbortController(); - shimAbortSignal(promise, controller.signal); - controller.abort(); - - expect(promise.abort).toHaveBeenCalled(); - }); - - test('returns the original promise', async () => { - const promise = createSuccessTransportRequestPromise({ - success: true, - }); - const controller = new AbortController(); - const response = await shimAbortSignal(promise, controller.signal); - - expect(response).toEqual(expect.objectContaining({ body: { success: true } })); - }); - - test('allows the promise to be aborted manually', () => { - const promise = createSuccessTransportRequestPromise({ - success: true, - }); - const controller = new AbortController(); - const enhancedPromise = shimAbortSignal(promise, controller.signal); - - enhancedPromise.abort(); - expect(promise.abort).toHaveBeenCalled(); - }); -}); diff --git a/src/plugins/data/common/search/es_search/shim_abort_signal.ts b/src/plugins/data/common/search/es_search/shim_abort_signal.ts deleted file mode 100644 index 554a24e2688155..00000000000000 --- a/src/plugins/data/common/search/es_search/shim_abort_signal.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * @internal - * TransportRequestPromise extends base Promise with an "abort" method - */ -export interface TransportRequestPromise extends Promise { - abort?: () => void; -} - -/** - * - * @internal - * NOTE: Temporary workaround until https://github.com/elastic/elasticsearch-js/issues/1297 - * is resolved - * - * @param promise a TransportRequestPromise - * @param signal optional AbortSignal - * - * @returns a TransportRequestPromise that will be aborted if the signal is aborted - */ - -export const shimAbortSignal = >( - promise: T, - signal: AbortSignal | undefined -): T => { - if (signal) { - signal.addEventListener('abort', () => promise.abort && promise.abort()); - } - return promise; -}; diff --git a/src/plugins/data/common/search/es_search/to_snake_case.ts b/src/plugins/data/common/search/es_search/to_snake_case.ts deleted file mode 100644 index b222a56fbf6020..00000000000000 --- a/src/plugins/data/common/search/es_search/to_snake_case.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { mapKeys, snakeCase } from 'lodash'; - -export function toSnakeCase(obj: Record): Record { - return mapKeys(obj, (value, key) => snakeCase(key)); -} diff --git a/src/plugins/data/common/search/es_search/types.ts b/src/plugins/data/common/search/es_search/types.ts index 7d81cf42e18665..7dbbd01d2cdadf 100644 --- a/src/plugins/data/common/search/es_search/types.ts +++ b/src/plugins/data/common/search/es_search/types.ts @@ -30,10 +30,4 @@ export interface IEsSearchRequest extends IKibanaSearchRequest extends SearchResponse { - id?: string; - is_partial?: boolean; - is_running?: boolean; -} - export type IEsSearchResponse = IKibanaSearchResponse>; diff --git a/src/plugins/data/common/search/es_search/utils.ts b/src/plugins/data/common/search/es_search/utils.ts deleted file mode 100644 index 6ed222ab0830cf..00000000000000 --- a/src/plugins/data/common/search/es_search/utils.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import type { IKibanaSearchResponse } from '../types'; - -/** - * @returns true if response had an error while executing in ES - */ -export const isErrorResponse = (response?: IKibanaSearchResponse) => { - return !response || (!response.isRunning && response.isPartial); -}; - -/** - * @returns true if response is completed successfully - */ -export const isCompleteResponse = (response?: IKibanaSearchResponse) => { - return Boolean(response && !response.isRunning && !response.isPartial); -}; - -/** - * @returns true if request is still running an/d response contains partial results - */ -export const isPartialResponse = (response?: IKibanaSearchResponse) => { - return Boolean(response && response.isRunning && response.isPartial); -}; diff --git a/src/plugins/data/common/search/expressions/esaggs.ts b/src/plugins/data/common/search/expressions/esaggs.ts deleted file mode 100644 index 47d97a81a67b1f..00000000000000 --- a/src/plugins/data/common/search/expressions/esaggs.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Datatable, ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; -import { KibanaContext } from './kibana_context_type'; - -type Input = KibanaContext | null; -type Output = Promise; - -interface Arguments { - index: string; - metricsAtAllLevels: boolean; - partialRows: boolean; - includeFormatHints: boolean; - aggConfigs: string; - timeFields?: string[]; -} - -export type EsaggsExpressionFunctionDefinition = ExpressionFunctionDefinition< - 'esaggs', - Input, - Arguments, - Output ->; diff --git a/src/plugins/data/public/search/expressions/esaggs/build_tabular_inspector_data.ts b/src/plugins/data/common/search/expressions/esaggs/build_tabular_inspector_data.ts similarity index 95% rename from src/plugins/data/public/search/expressions/esaggs/build_tabular_inspector_data.ts rename to src/plugins/data/common/search/expressions/esaggs/build_tabular_inspector_data.ts index 79dedf4131764b..2db3694884e2c3 100644 --- a/src/plugins/data/public/search/expressions/esaggs/build_tabular_inspector_data.ts +++ b/src/plugins/data/common/search/expressions/esaggs/build_tabular_inspector_data.ts @@ -23,9 +23,10 @@ import { TabularData, TabularDataValue, } from '../../../../../../plugins/inspector/common'; -import { Filter, TabbedTable } from '../../../../common'; -import { FormatFactory } from '../../../../common/field_formats/utils'; -import { createFilter } from '../create_filter'; +import { Filter } from '../../../es_query'; +import { FormatFactory } from '../../../field_formats/utils'; +import { TabbedTable } from '../../tabify'; +import { createFilter } from './create_filter'; /** * Type borrowed from the client-side FilterManager['addFilters']. diff --git a/src/plugins/data/public/search/expressions/create_filter.test.ts b/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts similarity index 91% rename from src/plugins/data/public/search/expressions/create_filter.test.ts rename to src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts index 7cc336a1c20e96..de0990ea9e2873 100644 --- a/src/plugins/data/public/search/expressions/create_filter.test.ts +++ b/src/plugins/data/common/search/expressions/esaggs/create_filter.test.ts @@ -17,15 +17,11 @@ * under the License. */ -import { - AggConfigs, - IAggConfig, - TabbedTable, - isRangeFilter, - BytesFormat, - FieldFormatsGetConfigFn, -} from '../../../common'; -import { mockAggTypesRegistry } from '../../../common/search/aggs/test_helpers'; +import { isRangeFilter } from '../../../es_query/filters'; +import { BytesFormat, FieldFormatsGetConfigFn } from '../../../field_formats'; +import { AggConfigs, IAggConfig } from '../../aggs'; +import { mockAggTypesRegistry } from '../../aggs/test_helpers'; +import { TabbedTable } from '../../tabify'; import { createFilter } from './create_filter'; diff --git a/src/plugins/data/public/search/expressions/create_filter.ts b/src/plugins/data/common/search/expressions/esaggs/create_filter.ts similarity index 94% rename from src/plugins/data/public/search/expressions/create_filter.ts rename to src/plugins/data/common/search/expressions/esaggs/create_filter.ts index 09200c2e17b319..cfb406e18e6c35 100644 --- a/src/plugins/data/public/search/expressions/create_filter.ts +++ b/src/plugins/data/common/search/expressions/esaggs/create_filter.ts @@ -17,7 +17,9 @@ * under the License. */ -import { Filter, IAggConfig, TabbedTable } from '../../../common'; +import { Filter } from '../../../es_query'; +import { IAggConfig } from '../../aggs'; +import { TabbedTable } from '../../tabify'; const getOtherBucketFilterTerms = (table: TabbedTable, columnIndex: number, rowIndex: number) => { if (rowIndex === -1) { diff --git a/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts b/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts new file mode 100644 index 00000000000000..ca1234276f4161 --- /dev/null +++ b/src/plugins/data/common/search/expressions/esaggs/esaggs_fn.ts @@ -0,0 +1,154 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; + +import { + Datatable, + DatatableColumn, + ExpressionFunctionDefinition, +} from 'src/plugins/expressions/common'; + +import { FormatFactory } from '../../../field_formats/utils'; +import { IndexPatternsContract } from '../../../index_patterns/index_patterns'; +import { calculateBounds } from '../../../query'; + +import { AggsStart } from '../../aggs'; +import { ISearchStartSearchSource } from '../../search_source'; + +import { KibanaContext } from '../kibana_context_type'; +import { AddFilters } from './build_tabular_inspector_data'; +import { handleRequest, RequestHandlerParams } from './request_handler'; + +const name = 'esaggs'; + +type Input = KibanaContext | null; +type Output = Promise; + +interface Arguments { + index: string; + metricsAtAllLevels: boolean; + partialRows: boolean; + includeFormatHints: boolean; + aggConfigs: string; + timeFields?: string[]; +} + +export type EsaggsExpressionFunctionDefinition = ExpressionFunctionDefinition< + 'esaggs', + Input, + Arguments, + Output +>; + +/** @internal */ +export interface EsaggsStartDependencies { + addFilters?: AddFilters; + aggs: AggsStart; + deserializeFieldFormat: FormatFactory; + indexPatterns: IndexPatternsContract; + searchSource: ISearchStartSearchSource; +} + +/** @internal */ +export const getEsaggsMeta: () => Omit = () => ({ + name, + type: 'datatable', + inputTypes: ['kibana_context', 'null'], + help: i18n.translate('data.functions.esaggs.help', { + defaultMessage: 'Run AggConfig aggregation', + }), + args: { + index: { + types: ['string'], + help: '', + }, + metricsAtAllLevels: { + types: ['boolean'], + default: false, + help: '', + }, + partialRows: { + types: ['boolean'], + default: false, + help: '', + }, + includeFormatHints: { + types: ['boolean'], + default: false, + help: '', + }, + aggConfigs: { + types: ['string'], + default: '""', + help: '', + }, + timeFields: { + types: ['string'], + help: '', + multi: true, + }, + }, +}); + +/** @internal */ +export async function handleEsaggsRequest( + input: Input, + args: Arguments, + params: RequestHandlerParams +): Promise { + const resolvedTimeRange = input?.timeRange && calculateBounds(input.timeRange); + + const response = await handleRequest(params); + + const table: Datatable = { + type: 'datatable', + rows: response.rows, + columns: response.columns.map((column) => { + const cleanedColumn: DatatableColumn = { + id: column.id, + name: column.name, + meta: { + type: column.aggConfig.params.field?.type || 'number', + field: column.aggConfig.params.field?.name, + index: params.indexPattern?.title, + params: column.aggConfig.toSerializedFieldFormat(), + source: name, + sourceParams: { + indexPatternId: params.indexPattern?.id, + appliedTimeRange: + column.aggConfig.params.field?.name && + input?.timeRange && + args.timeFields && + args.timeFields.includes(column.aggConfig.params.field?.name) + ? { + from: resolvedTimeRange?.min?.toISOString(), + to: resolvedTimeRange?.max?.toISOString(), + } + : undefined, + ...column.aggConfig.serialize(), + }, + }, + }; + return cleanedColumn; + }), + }; + + return table; +} diff --git a/src/plugins/data/public/search/expressions/esaggs/index.ts b/src/plugins/data/common/search/expressions/esaggs/index.ts similarity index 100% rename from src/plugins/data/public/search/expressions/esaggs/index.ts rename to src/plugins/data/common/search/expressions/esaggs/index.ts diff --git a/src/plugins/data/common/search/expressions/esaggs/request_handler.ts b/src/plugins/data/common/search/expressions/esaggs/request_handler.ts new file mode 100644 index 00000000000000..a424ed9e0513d9 --- /dev/null +++ b/src/plugins/data/common/search/expressions/esaggs/request_handler.ts @@ -0,0 +1,215 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import { Adapters } from 'src/plugins/inspector/common'; + +import { + calculateBounds, + Filter, + getTime, + IndexPattern, + isRangeFilter, + Query, + TimeRange, +} from '../../../../common'; +import { + getRequestInspectorStats, + getResponseInspectorStats, + IAggConfigs, + ISearchStartSearchSource, + tabifyAggResponse, +} from '../../../../common/search'; +import { FormatFactory } from '../../../../common/field_formats/utils'; + +import { AddFilters, buildTabularInspectorData } from './build_tabular_inspector_data'; + +/** @internal */ +export interface RequestHandlerParams { + abortSignal?: AbortSignal; + addFilters?: AddFilters; + aggs: IAggConfigs; + deserializeFieldFormat: FormatFactory; + filters?: Filter[]; + indexPattern?: IndexPattern; + inspectorAdapters: Adapters; + metricsAtAllLevels?: boolean; + partialRows?: boolean; + query?: Query; + searchSessionId?: string; + searchSourceService: ISearchStartSearchSource; + timeFields?: string[]; + timeRange?: TimeRange; +} + +export const handleRequest = async ({ + abortSignal, + addFilters, + aggs, + deserializeFieldFormat, + filters, + indexPattern, + inspectorAdapters, + metricsAtAllLevels, + partialRows, + query, + searchSessionId, + searchSourceService, + timeFields, + timeRange, +}: RequestHandlerParams) => { + const searchSource = await searchSourceService.create(); + + searchSource.setField('index', indexPattern); + searchSource.setField('size', 0); + + // Create a new search source that inherits the original search source + // but has the appropriate timeRange applied via a filter. + // This is a temporary solution until we properly pass down all required + // information for the request to the request handler (https://github.com/elastic/kibana/issues/16641). + // Using callParentStartHandlers: true we make sure, that the parent searchSource + // onSearchRequestStart will be called properly even though we use an inherited + // search source. + const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true }); + const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true }); + + aggs.setTimeRange(timeRange as TimeRange); + + // For now we need to mirror the history of the passed search source, since + // the request inspector wouldn't work otherwise. + Object.defineProperty(requestSearchSource, 'history', { + get() { + return searchSource.history; + }, + set(history) { + return (searchSource.history = history); + }, + }); + + requestSearchSource.setField('aggs', function () { + return aggs.toDsl(metricsAtAllLevels); + }); + + requestSearchSource.onRequestStart((paramSearchSource, options) => { + return aggs.onSearchRequestStart(paramSearchSource, options); + }); + + // If timeFields have been specified, use the specified ones, otherwise use primary time field of index + // pattern if it's available. + const defaultTimeField = indexPattern?.getTimeField?.(); + const defaultTimeFields = defaultTimeField ? [defaultTimeField.name] : []; + const allTimeFields = timeFields && timeFields.length > 0 ? timeFields : defaultTimeFields; + + // If a timeRange has been specified and we had at least one timeField available, create range + // filters for that those time fields + if (timeRange && allTimeFields.length > 0) { + timeFilterSearchSource.setField('filter', () => { + return allTimeFields + .map((fieldName) => getTime(indexPattern, timeRange, { fieldName })) + .filter(isRangeFilter); + }); + } + + requestSearchSource.setField('filter', filters); + requestSearchSource.setField('query', query); + + let request; + if (inspectorAdapters.requests) { + inspectorAdapters.requests.reset(); + request = inspectorAdapters.requests.start( + i18n.translate('data.functions.esaggs.inspector.dataRequest.title', { + defaultMessage: 'Data', + }), + { + description: i18n.translate('data.functions.esaggs.inspector.dataRequest.description', { + defaultMessage: + 'This request queries Elasticsearch to fetch the data for the visualization.', + }), + searchSessionId, + } + ); + request.stats(getRequestInspectorStats(requestSearchSource)); + } + + try { + const response = await requestSearchSource.fetch({ + abortSignal, + sessionId: searchSessionId, + }); + + if (request) { + request.stats(getResponseInspectorStats(response, searchSource)).ok({ json: response }); + } + + (searchSource as any).rawResponse = response; + } catch (e) { + // Log any error during request to the inspector + if (request) { + request.error({ json: e }); + } + throw e; + } finally { + // Add the request body no matter if things went fine or not + if (request) { + request.json(await requestSearchSource.getSearchRequestBody()); + } + } + + // Note that rawResponse is not deeply cloned here, so downstream applications using courier + // must take care not to mutate it, or it could have unintended side effects, e.g. displaying + // response data incorrectly in the inspector. + let response = (searchSource as any).rawResponse; + for (const agg of aggs.aggs) { + if (typeof agg.type.postFlightRequest === 'function') { + response = await agg.type.postFlightRequest( + response, + aggs, + agg, + requestSearchSource, + inspectorAdapters.requests, + abortSignal, + searchSessionId + ); + } + } + + const parsedTimeRange = timeRange ? calculateBounds(timeRange) : null; + const tabifyParams = { + metricsAtAllLevels, + partialRows, + timeRange: parsedTimeRange + ? { from: parsedTimeRange.min, to: parsedTimeRange.max, timeFields: allTimeFields } + : undefined, + }; + + const tabifiedResponse = tabifyAggResponse(aggs, response, tabifyParams); + + if (inspectorAdapters.data) { + inspectorAdapters.data.setTabularLoader( + () => + buildTabularInspectorData(tabifiedResponse, { + addFilters, + deserializeFieldFormat, + }), + { returnsFormattedValues: true } + ); + } + + return tabifiedResponse; +}; diff --git a/src/plugins/data/common/search/index.ts b/src/plugins/data/common/search/index.ts index e650cf10db87c0..d5939b4ec9cbf6 100644 --- a/src/plugins/data/common/search/index.ts +++ b/src/plugins/data/common/search/index.ts @@ -23,4 +23,4 @@ export * from './expressions'; export * from './search_source'; export * from './tabify'; export * from './types'; -export * from './session'; +export * from './utils'; diff --git a/src/plugins/data/common/search/search_source/filter_docvalue_fields.test.ts b/src/plugins/data/common/search/search_source/filter_docvalue_fields.test.ts deleted file mode 100644 index 522117fe228047..00000000000000 --- a/src/plugins/data/common/search/search_source/filter_docvalue_fields.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { filterDocvalueFields } from './filter_docvalue_fields'; - -test('Should exclude docvalue_fields that are not contained in fields', () => { - const docvalueFields = [ - 'my_ip_field', - { field: 'my_keyword_field' }, - { field: 'my_date_field', format: 'epoch_millis' }, - ]; - const out = filterDocvalueFields(docvalueFields, ['my_ip_field', 'my_keyword_field']); - expect(out).toEqual(['my_ip_field', { field: 'my_keyword_field' }]); -}); diff --git a/src/plugins/data/common/search/search_source/filter_docvalue_fields.ts b/src/plugins/data/common/search/search_source/filter_docvalue_fields.ts deleted file mode 100644 index bbac30d7dfdc57..00000000000000 --- a/src/plugins/data/common/search/search_source/filter_docvalue_fields.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -interface DocvalueField { - field: string; - [key: string]: unknown; -} - -export function filterDocvalueFields( - docvalueFields: Array, - fields: string[] -) { - return docvalueFields.filter((docValue) => { - const docvalueFieldName = typeof docValue === 'string' ? docValue : docValue.field; - return fields.includes(docvalueFieldName); - }); -} diff --git a/src/plugins/data/common/search/search_source/mocks.ts b/src/plugins/data/common/search/search_source/mocks.ts index ea7d6b4441ccfe..dd2b0eaccc86e1 100644 --- a/src/plugins/data/common/search/search_source/mocks.ts +++ b/src/plugins/data/common/search/search_source/mocks.ts @@ -28,6 +28,7 @@ export const searchSourceInstanceMock: MockedKeys = { setPreferredSearchStrategyId: jest.fn(), setFields: jest.fn().mockReturnThis(), setField: jest.fn().mockReturnThis(), + removeField: jest.fn().mockReturnThis(), getId: jest.fn(), getFields: jest.fn(), getField: jest.fn(), diff --git a/src/plugins/data/common/search/search_source/search_source.test.ts b/src/plugins/data/common/search/search_source/search_source.test.ts index 98d66310c040e1..ec5174df50f138 100644 --- a/src/plugins/data/common/search/search_source/search_source.test.ts +++ b/src/plugins/data/common/search/search_source/search_source.test.ts @@ -29,7 +29,7 @@ jest.mock('./legacy', () => ({ const getComputedFields = () => ({ storedFields: [], - scriptFields: [], + scriptFields: {}, docvalueFields: [], }); @@ -51,6 +51,7 @@ const indexPattern2 = ({ describe('SearchSource', () => { let mockSearchMethod: any; let searchSourceDependencies: SearchSourceDependencies; + let searchSource: SearchSource; beforeEach(() => { mockSearchMethod = jest.fn().mockReturnValue(of({ rawResponse: '' })); @@ -64,63 +65,419 @@ describe('SearchSource', () => { loadingCount$: new BehaviorSubject(0), }, }; + + searchSource = new SearchSource({}, searchSourceDependencies); }); - describe('#setField()', () => { - test('sets the value for the property', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); + describe('#getField()', () => { + test('gets the value for the property', () => { searchSource.setField('aggs', 5); expect(searchSource.getField('aggs')).toBe(5); }); }); - describe('#getField()', () => { - test('gets the value for the property', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); + describe('#removeField()', () => { + test('remove property', () => { + searchSource = new SearchSource({}, searchSourceDependencies); searchSource.setField('aggs', 5); - expect(searchSource.getField('aggs')).toBe(5); + searchSource.removeField('aggs'); + expect(searchSource.getField('aggs')).toBeFalsy(); }); }); - describe(`#setField('index')`, () => { - describe('auto-sourceFiltering', () => { - describe('new index pattern assigned', () => { - test('generates a searchSource filter', async () => { - const searchSource = new SearchSource({}, searchSourceDependencies); - expect(searchSource.getField('index')).toBe(undefined); - expect(searchSource.getField('source')).toBe(undefined); - searchSource.setField('index', indexPattern); - expect(searchSource.getField('index')).toBe(indexPattern); - const request = await searchSource.getSearchRequestBody(); - expect(request._source).toBe(mockSource); + describe('#setField() / #flatten', () => { + test('sets the value for the property', () => { + searchSource.setField('aggs', 5); + expect(searchSource.getField('aggs')).toBe(5); + }); + + describe('computed fields handling', () => { + test('still provides computed fields when no fields are specified', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: ['hello'], + scriptFields: { world: {} }, + docvalueFields: ['@timestamp'], + }), + } as unknown) as IndexPattern); + + const request = await searchSource.getSearchRequestBody(); + expect(request.stored_fields).toEqual(['hello']); + expect(request.script_fields).toEqual({ world: {} }); + expect(request.fields).toEqual(['@timestamp']); + }); + + test('never includes docvalue_fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: ['@timestamp'], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['@timestamp']); + searchSource.setField('fieldsFromSource', ['foo']); + + const request = await searchSource.getSearchRequestBody(); + expect(request).not.toHaveProperty('docvalue_fields'); + }); + + test('overrides computed docvalue fields with ones that are provided', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: ['hello'], + }), + } as unknown) as IndexPattern); + // @ts-expect-error TS won't like using this field name, but technically it's possible. + searchSource.setField('docvalue_fields', ['world']); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('docvalue_fields'); + expect(request.docvalue_fields).toEqual(['world']); + }); + + test('allows explicitly provided docvalue fields to override fields API when fetching fieldsFromSource', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: [{ field: 'a', format: 'date_time' }], + }), + } as unknown) as IndexPattern); + // @ts-expect-error TS won't like using this field name, but technically it's possible. + searchSource.setField('docvalue_fields', [{ field: 'b', format: 'date_time' }]); + searchSource.setField('fields', ['c']); + searchSource.setField('fieldsFromSource', ['a', 'b', 'd']); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('docvalue_fields'); + expect(request._source.includes).toEqual(['c', 'a', 'b', 'd']); + expect(request.docvalue_fields).toEqual([{ field: 'b', format: 'date_time' }]); + expect(request.fields).toEqual(['c', { field: 'a', format: 'date_time' }]); + }); + + test('allows you to override computed fields if you provide a format', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: [{ field: 'hello', format: 'date_time' }], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', [{ field: 'hello', format: 'strict_date_time' }]); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('fields'); + expect(request.fields).toEqual([{ field: 'hello', format: 'strict_date_time' }]); + }); + + test('injects a date format for computed docvalue fields if none is provided', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: [{ field: 'hello', format: 'date_time' }], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello']); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('fields'); + expect(request.fields).toEqual([{ field: 'hello', format: 'date_time' }]); + }); + + test('injects a date format for computed docvalue fields while merging other properties', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: [{ field: 'hello', format: 'date_time', a: 'test', b: 'test' }], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', [{ field: 'hello', a: 'a', c: 'c' }]); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('fields'); + expect(request.fields).toEqual([ + { field: 'hello', format: 'date_time', a: 'a', b: 'test', c: 'c' }, + ]); + }); + + test('merges provided script fields with computed fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + // @ts-expect-error TS won't like using this field name, but technically it's possible. + searchSource.setField('script_fields', { world: {} }); + + const request = await searchSource.getSearchRequestBody(); + expect(request).toHaveProperty('script_fields'); + expect(request.script_fields).toEqual({ + hello: {}, + world: {}, + }); + }); + + test(`requests any fields that aren't script_fields from stored_fields`, async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello', 'a', { field: 'c' }]); + + const request = await searchSource.getSearchRequestBody(); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['a', 'c']); + }); + + test('ignores objects without a `field` property when setting stored_fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello', 'a', { foo: 'c' }]); + + const request = await searchSource.getSearchRequestBody(); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['a']); + }); + + test(`requests any fields that aren't script_fields from stored_fields with fieldsFromSource`, async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + searchSource.setField('fieldsFromSource', ['hello', 'a']); + + const request = await searchSource.getSearchRequestBody(); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['a']); + }); + + test('defaults to * for stored fields when no fields are provided', async () => { + const requestA = await searchSource.getSearchRequestBody(); + expect(requestA.stored_fields).toEqual(['*']); + + searchSource.setField('fields', ['*']); + const requestB = await searchSource.getSearchRequestBody(); + expect(requestB.stored_fields).toEqual(['*']); + }); + + test('defaults to * for stored fields when no fields are provided with fieldsFromSource', async () => { + searchSource.setField('fieldsFromSource', ['*']); + const request = await searchSource.getSearchRequestBody(); + expect(request.stored_fields).toEqual(['*']); + }); + }); + + describe('source filters handling', () => { + test('excludes docvalue fields based on source filtering', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: ['@timestamp', 'exclude-me'], + }), + } as unknown) as IndexPattern); + // @ts-expect-error Typings for excludes filters need to be fixed. + searchSource.setField('source', { excludes: ['exclude-*'] }); + + const request = await searchSource.getSearchRequestBody(); + expect(request.fields).toEqual(['@timestamp']); + }); + + test('defaults to source filters from index pattern', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: {}, + docvalueFields: ['@timestamp', 'foo-bar', 'foo-baz'], + }), + } as unknown) as IndexPattern); + + const request = await searchSource.getSearchRequestBody(); + expect(request.fields).toEqual(['@timestamp']); + }); + + test('filters script fields to only include specified fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {}, world: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello']); + + const request = await searchSource.getSearchRequestBody(); + expect(request.script_fields).toEqual({ hello: {} }); + }); + + test('returns all scripted fields when one fields entry is *', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {}, world: {} }, + docvalueFields: [], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['timestamp', '*']); + + const request = await searchSource.getSearchRequestBody(); + expect(request.script_fields).toEqual({ hello: {}, world: {} }); + }); + }); + + describe('handling for when specific fields are provided', () => { + test('fieldsFromSource will request any fields outside of script_fields from _source & stored fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: [], + scriptFields: { hello: {}, world: {} }, + docvalueFields: ['@timestamp'], + }), + } as unknown) as IndexPattern); + searchSource.setField('fieldsFromSource', [ + 'hello', + 'world', + '@timestamp', + 'foo-a', + 'bar-b', + ]); + + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toEqual({ + includes: ['@timestamp', 'bar-b'], + }); + expect(request.stored_fields).toEqual(['@timestamp', 'bar-b']); + }); + + test('filters request when a specific list of fields is provided', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: ['*'], + scriptFields: { hello: {}, world: {} }, + docvalueFields: ['@timestamp', 'date'], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello', '@timestamp', 'foo-a', 'bar']); + + const request = await searchSource.getSearchRequestBody(); + expect(request.fields).toEqual(['hello', '@timestamp', 'bar']); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['@timestamp', 'bar']); + }); + + test('filters request when a specific list of fields is provided with fieldsFromSource', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: ['*'], + scriptFields: { hello: {}, world: {} }, + docvalueFields: ['@timestamp', 'date'], + }), + } as unknown) as IndexPattern); + searchSource.setField('fieldsFromSource', ['hello', '@timestamp', 'foo-a', 'bar']); + + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toEqual({ + includes: ['@timestamp', 'bar'], }); + expect(request.fields).toEqual(['@timestamp']); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['@timestamp', 'bar']); + }); + + test('filters request when a specific list of fields is provided with fieldsFromSource or fields', async () => { + searchSource.setField('index', ({ + ...indexPattern, + getComputedFields: () => ({ + storedFields: ['*'], + scriptFields: { hello: {}, world: {} }, + docvalueFields: ['@timestamp', 'date', 'time'], + }), + } as unknown) as IndexPattern); + searchSource.setField('fields', ['hello', '@timestamp', 'foo-a', 'bar']); + searchSource.setField('fieldsFromSource', ['foo-b', 'date', 'baz']); - test('removes created searchSource filter on removal', async () => { - const searchSource = new SearchSource({}, searchSourceDependencies); - searchSource.setField('index', indexPattern); - searchSource.setField('index', undefined); - const request = await searchSource.getSearchRequestBody(); - expect(request._source).toBe(undefined); + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toEqual({ + includes: ['@timestamp', 'bar', 'date', 'baz'], }); + expect(request.fields).toEqual(['hello', '@timestamp', 'bar', 'date']); + expect(request.script_fields).toEqual({ hello: {} }); + expect(request.stored_fields).toEqual(['@timestamp', 'bar', 'date', 'baz']); }); + }); + + describe(`#setField('index')`, () => { + describe('auto-sourceFiltering', () => { + describe('new index pattern assigned', () => { + test('generates a searchSource filter', async () => { + expect(searchSource.getField('index')).toBe(undefined); + expect(searchSource.getField('source')).toBe(undefined); + searchSource.setField('index', indexPattern); + expect(searchSource.getField('index')).toBe(indexPattern); + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toBe(mockSource); + }); - describe('new index pattern assigned over another', () => { - test('replaces searchSource filter with new', async () => { - const searchSource = new SearchSource({}, searchSourceDependencies); - searchSource.setField('index', indexPattern); - searchSource.setField('index', indexPattern2); - expect(searchSource.getField('index')).toBe(indexPattern2); - const request = await searchSource.getSearchRequestBody(); - expect(request._source).toBe(mockSource2); + test('removes created searchSource filter on removal', async () => { + searchSource.setField('index', indexPattern); + searchSource.setField('index', undefined); + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toBe(undefined); + }); }); - test('removes created searchSource filter on removal', async () => { - const searchSource = new SearchSource({}, searchSourceDependencies); - searchSource.setField('index', indexPattern); - searchSource.setField('index', indexPattern2); - searchSource.setField('index', undefined); - const request = await searchSource.getSearchRequestBody(); - expect(request._source).toBe(undefined); + describe('new index pattern assigned over another', () => { + test('replaces searchSource filter with new', async () => { + searchSource.setField('index', indexPattern); + searchSource.setField('index', indexPattern2); + expect(searchSource.getField('index')).toBe(indexPattern2); + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toBe(mockSource2); + }); + + test('removes created searchSource filter on removal', async () => { + searchSource.setField('index', indexPattern); + searchSource.setField('index', indexPattern2); + searchSource.setField('index', undefined); + const request = await searchSource.getSearchRequestBody(); + expect(request._source).toBe(undefined); + }); }); }); }); @@ -128,7 +485,7 @@ describe('SearchSource', () => { describe('#onRequestStart()', () => { test('should be called when starting a request', async () => { - const searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); + searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); const fn = jest.fn(); searchSource.onRequestStart(fn); const options = {}; @@ -138,7 +495,7 @@ describe('SearchSource', () => { test('should not be called on parent searchSource', async () => { const parent = new SearchSource({}, searchSourceDependencies); - const searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); + searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); const fn = jest.fn(); searchSource.onRequestStart(fn); @@ -153,12 +510,12 @@ describe('SearchSource', () => { test('should be called on parent searchSource if callParentStartHandlers is true', async () => { const parent = new SearchSource({}, searchSourceDependencies); - const searchSource = new SearchSource( - { index: indexPattern }, - searchSourceDependencies - ).setParent(parent, { - callParentStartHandlers: true, - }); + searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies).setParent( + parent, + { + callParentStartHandlers: true, + } + ); const fn = jest.fn(); searchSource.onRequestStart(fn); @@ -183,7 +540,7 @@ describe('SearchSource', () => { }); test('should call msearch', async () => { - const searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); + searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); const options = {}; await searchSource.fetch(options); expect(fetchSoon).toBeCalledTimes(1); @@ -192,7 +549,7 @@ describe('SearchSource', () => { describe('#search service fetch()', () => { test('should call msearch', async () => { - const searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); + searchSource = new SearchSource({ index: indexPattern }, searchSourceDependencies); const options = {}; await searchSource.fetch(options); @@ -203,7 +560,6 @@ describe('SearchSource', () => { describe('#serialize', () => { test('should reference index patterns', () => { const indexPattern123 = { id: '123' } as IndexPattern; - const searchSource = new SearchSource({}, searchSourceDependencies); searchSource.setField('index', indexPattern123); const { searchSourceJSON, references } = searchSource.serialize(); expect(references[0].id).toEqual('123'); @@ -212,7 +568,6 @@ describe('SearchSource', () => { }); test('should add other fields', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); searchSource.setField('highlightAll', true); searchSource.setField('from', 123456); const { searchSourceJSON } = searchSource.serialize(); @@ -221,7 +576,6 @@ describe('SearchSource', () => { }); test('should omit sort and size', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); searchSource.setField('highlightAll', true); searchSource.setField('from', 123456); searchSource.setField('sort', { field: SortDirection.asc }); @@ -231,7 +585,6 @@ describe('SearchSource', () => { }); test('should serialize filters', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); const filter = [ { query: 'query', @@ -248,7 +601,6 @@ describe('SearchSource', () => { }); test('should reference index patterns in filters separately from index field', () => { - const searchSource = new SearchSource({}, searchSourceDependencies); const indexPattern123 = { id: '123' } as IndexPattern; searchSource.setField('index', indexPattern123); const filter = [ diff --git a/src/plugins/data/common/search/search_source/search_source.ts b/src/plugins/data/common/search/search_source/search_source.ts index 9bc65ca3419806..fce0b737b962ba 100644 --- a/src/plugins/data/common/search/search_source/search_source.ts +++ b/src/plugins/data/common/search/search_source/search_source.ts @@ -70,14 +70,18 @@ */ import { setWith } from '@elastic/safer-lodash-set'; -import { uniqueId, uniq, extend, pick, difference, omit, isObject, keys, isFunction } from 'lodash'; +import { uniqueId, keyBy, pick, difference, omit, isObject, isFunction } from 'lodash'; import { map } from 'rxjs/operators'; import { normalizeSortRequest } from './normalize_sort_request'; -import { filterDocvalueFields } from './filter_docvalue_fields'; import { fieldWildcardFilter } from '../../../../kibana_utils/common'; import { IIndexPattern } from '../../index_patterns'; import { ISearchGeneric, ISearchOptions } from '../..'; -import type { ISearchSource, SearchSourceOptions, SearchSourceFields } from './types'; +import type { + ISearchSource, + SearchFieldValue, + SearchSourceOptions, + SearchSourceFields, +} from './types'; import { FetchHandlers, RequestFailure, getSearchParamsFromRequest, SearchRequest } from './fetch'; import { getEsQueryConfig, buildEsQuery, Filter, UI_SETTINGS } from '../../../common'; @@ -142,10 +146,18 @@ export class SearchSource { */ setField(field: K, value: SearchSourceFields[K]) { if (value == null) { - delete this.fields[field]; - } else { - this.fields[field] = value; + return this.removeField(field); } + this.fields[field] = value; + return this; + } + + /** + * remove field + * @param field: field name + */ + removeField(field: K) { + delete this.fields[field]; return this; } @@ -396,7 +408,16 @@ export class SearchSource { case 'query': return addToRoot(key, (data[key] || []).concat(val)); case 'fields': - const fields = uniq((data[key] || []).concat(val)); + // This will pass the passed in parameters to the new fields API. + // Also if will only return scripted fields that are part of the specified + // array of fields. If you specify the wildcard `*` as an array element + // the fields API will return all fields, and all scripted fields will be returned. + // NOTE: While the fields API supports wildcards within names, e.g. `user.*` + // scripted fields won't be considered for this. + return addToBody('fields', val); + case 'fieldsFromSource': + // preserves legacy behavior + const fields = [...new Set((data[key] || []).concat(val))]; return addToRoot(key, fields); case 'index': case 'type': @@ -443,49 +464,129 @@ export class SearchSource { } private flatten() { + const { getConfig } = this.dependencies; const searchRequest = this.mergeProps(); searchRequest.body = searchRequest.body || {}; - const { body, index, fields, query, filters, highlightAll } = searchRequest; + const { body, index, query, filters, highlightAll } = searchRequest; searchRequest.indexType = this.getIndexType(index); - const computedFields = index ? index.getComputedFields() : {}; + // get some special field types from the index pattern + const { docvalueFields, scriptFields, storedFields } = index + ? index.getComputedFields() + : { + docvalueFields: [], + scriptFields: {}, + storedFields: ['*'], + }; + + const fieldListProvided = !!body.fields; + const getFieldName = (fld: string | Record): string => + typeof fld === 'string' ? fld : fld.field; + + // set defaults + let fieldsFromSource = searchRequest.fieldsFromSource || []; + body.fields = body.fields || []; + body.script_fields = { + ...body.script_fields, + ...scriptFields, + }; + body.stored_fields = storedFields; + + // apply source filters from index pattern if specified by the user + let filteredDocvalueFields = docvalueFields; + if (index) { + const sourceFilters = index.getSourceFiltering(); + if (!body.hasOwnProperty('_source')) { + body._source = sourceFilters; + } + if (body._source.excludes) { + const filter = fieldWildcardFilter( + body._source.excludes, + getConfig(UI_SETTINGS.META_FIELDS) + ); + // also apply filters to provided fields & default docvalueFields + body.fields = body.fields.filter((fld: SearchFieldValue) => filter(getFieldName(fld))); + fieldsFromSource = fieldsFromSource.filter((fld: SearchFieldValue) => + filter(getFieldName(fld)) + ); + filteredDocvalueFields = filteredDocvalueFields.filter((fld: SearchFieldValue) => + filter(getFieldName(fld)) + ); + } + } - body.stored_fields = computedFields.storedFields; - body.script_fields = body.script_fields || {}; - extend(body.script_fields, computedFields.scriptFields); + // specific fields were provided, so we need to exclude any others + if (fieldListProvided || fieldsFromSource.length) { + const bodyFieldNames = body.fields.map((field: string | Record) => + getFieldName(field) + ); + const uniqFieldNames = [...new Set([...bodyFieldNames, ...fieldsFromSource])]; - const defaultDocValueFields = computedFields.docvalueFields - ? computedFields.docvalueFields - : []; - body.docvalue_fields = body.docvalue_fields || defaultDocValueFields; + if (!uniqFieldNames.includes('*')) { + // filter down script_fields to only include items specified + body.script_fields = pick( + body.script_fields, + Object.keys(body.script_fields).filter((f) => uniqFieldNames.includes(f)) + ); + } - if (!body.hasOwnProperty('_source') && index) { - body._source = index.getSourceFiltering(); - } + // request the remaining fields from stored_fields just in case, since the + // fields API does not handle stored fields + const remainingFields = difference(uniqFieldNames, Object.keys(body.script_fields)).filter( + Boolean + ); - const { getConfig } = this.dependencies; + // only include unique values + body.stored_fields = [...new Set(remainingFields)]; - if (body._source) { - // exclude source fields for this index pattern specified by the user - const filter = fieldWildcardFilter(body._source.excludes, getConfig(UI_SETTINGS.META_FIELDS)); - body.docvalue_fields = body.docvalue_fields.filter((docvalueField: any) => - filter(docvalueField.field) - ); - } + if (fieldsFromSource.length) { + // include remaining fields in _source + setWith(body, '_source.includes', remainingFields, (nsValue) => + isObject(nsValue) ? {} : nsValue + ); - // if we only want to search for certain fields - if (fields) { - // filter out the docvalue_fields, and script_fields to only include those that we are concerned with - body.docvalue_fields = filterDocvalueFields(body.docvalue_fields, fields); - body.script_fields = pick(body.script_fields, fields); - - // request the remaining fields from both stored_fields and _source - const remainingFields = difference(fields, keys(body.script_fields)); - body.stored_fields = remainingFields; - setWith(body, '_source.includes', remainingFields, (nsValue) => - isObject(nsValue) ? {} : nsValue - ); + // if items that are in the docvalueFields are provided, we should + // make sure those are added to the fields API unless they are + // already set in docvalue_fields + body.fields = [ + ...body.fields, + ...filteredDocvalueFields.filter((fld: SearchFieldValue) => { + return ( + fieldsFromSource.includes(getFieldName(fld)) && + !(body.docvalue_fields || []) + .map((d: string | Record) => getFieldName(d)) + .includes(getFieldName(fld)) + ); + }), + ]; + + // delete fields array if it is still set to the empty default + if (!fieldListProvided && body.fields.length === 0) delete body.fields; + } else { + // remove _source, since everything's coming from fields API, scripted, or stored fields + body._source = false; + + // if items that are in the docvalueFields are provided, we should + // inject the format from the computed fields if one isn't given + const docvaluesIndex = keyBy(filteredDocvalueFields, 'field'); + body.fields = body.fields.map((fld: SearchFieldValue) => { + const fieldName = getFieldName(fld); + if (Object.keys(docvaluesIndex).includes(fieldName)) { + // either provide the field object from computed docvalues, + // or merge the user-provided field with the one in docvalues + return typeof fld === 'string' + ? docvaluesIndex[fld] + : { + ...docvaluesIndex[fieldName], + ...fld, + }; + } + return fld; + }); + } + } else { + body.fields = filteredDocvalueFields; } const esQueryConfigs = getEsQueryConfig({ get: getConfig }); diff --git a/src/plugins/data/common/search/search_source/types.ts b/src/plugins/data/common/search/search_source/types.ts index 5fc747d454a018..c428dcf7fb484c 100644 --- a/src/plugins/data/common/search/search_source/types.ts +++ b/src/plugins/data/common/search/search_source/types.ts @@ -59,6 +59,13 @@ export interface SortDirectionNumeric { export type EsQuerySortValue = Record; +interface SearchField { + [key: string]: SearchFieldValue; +} + +// @internal +export type SearchFieldValue = string | SearchField; + /** * search source fields */ @@ -86,7 +93,16 @@ export interface SearchSourceFields { size?: number; source?: NameList; version?: boolean; - fields?: NameList; + /** + * Retrieve fields via the search Fields API + */ + fields?: SearchFieldValue[]; + /** + * Retreive fields directly from _source (legacy behavior) + * + * @deprecated It is recommended to use `fields` wherever possible. + */ + fieldsFromSource?: NameList; /** * {@link IndexPatternService} */ diff --git a/src/plugins/data/common/search/session/index.ts b/src/plugins/data/common/search/session/index.ts deleted file mode 100644 index 0feb43f8f1d4b9..00000000000000 --- a/src/plugins/data/common/search/session/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export * from './status'; -export * from './types'; diff --git a/src/plugins/data/common/search/session/mocks.ts b/src/plugins/data/common/search/session/mocks.ts deleted file mode 100644 index 4604e15e4e93b8..00000000000000 --- a/src/plugins/data/common/search/session/mocks.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { BehaviorSubject } from 'rxjs'; -import { ISessionService } from './types'; - -export function getSessionServiceMock(): jest.Mocked { - return { - clear: jest.fn(), - start: jest.fn(), - restore: jest.fn(), - getSessionId: jest.fn(), - getSession$: jest.fn(() => new BehaviorSubject(undefined).asObservable()), - isStored: jest.fn(), - isRestore: jest.fn(), - save: jest.fn(), - get: jest.fn(), - find: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - }; -} diff --git a/src/plugins/data/common/search/session/status.ts b/src/plugins/data/common/search/session/status.ts deleted file mode 100644 index 1f6b6eb3084bb5..00000000000000 --- a/src/plugins/data/common/search/session/status.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export enum BackgroundSessionStatus { - IN_PROGRESS = 'in_progress', - ERROR = 'error', - COMPLETE = 'complete', - CANCELLED = 'cancelled', - EXPIRED = 'expired', -} diff --git a/src/plugins/data/common/search/session/types.ts b/src/plugins/data/common/search/session/types.ts deleted file mode 100644 index d1ab22057695a7..00000000000000 --- a/src/plugins/data/common/search/session/types.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { Observable } from 'rxjs'; -import type { SavedObject, SavedObjectsFindResponse } from 'kibana/server'; - -export interface ISessionService { - /** - * Returns the active session ID - * @returns The active session ID - */ - getSessionId: () => string | undefined; - /** - * Returns the observable that emits an update every time the session ID changes - * @returns `Observable` - */ - getSession$: () => Observable; - - /** - * Whether the active session is already saved (i.e. sent to background) - */ - isStored: () => boolean; - - /** - * Whether the active session is restored (i.e. reusing previous search IDs) - */ - isRestore: () => boolean; - - /** - * Starts a new session - */ - start: () => string; - - /** - * Restores existing session - */ - restore: (sessionId: string) => Promise>; - - /** - * Clears the active session. - */ - clear: () => void; - - /** - * Saves a session - */ - save: (name: string, url: string) => Promise>; - - /** - * Gets a saved session - */ - get: (sessionId: string) => Promise>; - - /** - * Gets a list of saved sessions - */ - find: ( - options: SearchSessionFindOptions - ) => Promise>; - - /** - * Updates a session - */ - update: ( - sessionId: string, - attributes: Partial - ) => Promise; - - /** - * Deletes a session - */ - delete: (sessionId: string) => Promise; -} - -export interface BackgroundSessionSavedObjectAttributes { - name: string; - created: string; - expires: string; - status: string; - initialState: Record; - restoreState: Record; - idMapping: Record; -} - -export interface SearchSessionFindOptions { - page?: number; - perPage?: number; - sortField?: string; - sortOrder?: string; - filter?: string; -} diff --git a/src/plugins/data/common/search/utils.test.ts b/src/plugins/data/common/search/utils.test.ts new file mode 100644 index 00000000000000..94f7b14de4bc3b --- /dev/null +++ b/src/plugins/data/common/search/utils.test.ts @@ -0,0 +1,106 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { isErrorResponse, isCompleteResponse, isPartialResponse } from './utils'; + +describe('utils', () => { + describe('isErrorResponse', () => { + it('returns `true` if the response is undefined', () => { + const isError = isErrorResponse(); + expect(isError).toBe(true); + }); + + it('returns `true` if the response is not running and partial', () => { + const isError = isErrorResponse({ + isPartial: true, + isRunning: false, + rawResponse: {}, + }); + expect(isError).toBe(true); + }); + + it('returns `false` if the response is running and partial', () => { + const isError = isErrorResponse({ + isPartial: true, + isRunning: true, + rawResponse: {}, + }); + expect(isError).toBe(false); + }); + + it('returns `false` if the response is complete', () => { + const isError = isErrorResponse({ + isPartial: false, + isRunning: false, + rawResponse: {}, + }); + expect(isError).toBe(false); + }); + }); + + describe('isCompleteResponse', () => { + it('returns `false` if the response is undefined', () => { + const isError = isCompleteResponse(); + expect(isError).toBe(false); + }); + + it('returns `false` if the response is running and partial', () => { + const isError = isCompleteResponse({ + isPartial: true, + isRunning: true, + rawResponse: {}, + }); + expect(isError).toBe(false); + }); + + it('returns `true` if the response is complete', () => { + const isError = isCompleteResponse({ + isPartial: false, + isRunning: false, + rawResponse: {}, + }); + expect(isError).toBe(true); + }); + }); + + describe('isPartialResponse', () => { + it('returns `false` if the response is undefined', () => { + const isError = isPartialResponse(); + expect(isError).toBe(false); + }); + + it('returns `true` if the response is running and partial', () => { + const isError = isPartialResponse({ + isPartial: true, + isRunning: true, + rawResponse: {}, + }); + expect(isError).toBe(true); + }); + + it('returns `false` if the response is complete', () => { + const isError = isPartialResponse({ + isPartial: false, + isRunning: false, + rawResponse: {}, + }); + expect(isError).toBe(false); + }); + }); +}); diff --git a/src/plugins/data/common/search/utils.ts b/src/plugins/data/common/search/utils.ts new file mode 100644 index 00000000000000..0d544a51c2d457 --- /dev/null +++ b/src/plugins/data/common/search/utils.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import type { IKibanaSearchResponse } from './types'; + +/** + * @returns true if response had an error while executing in ES + */ +export const isErrorResponse = (response?: IKibanaSearchResponse) => { + return !response || (!response.isRunning && response.isPartial); +}; + +/** + * @returns true if response is completed successfully + */ +export const isCompleteResponse = (response?: IKibanaSearchResponse) => { + return Boolean(response && !response.isRunning && !response.isPartial); +}; + +/** + * @returns true if request is still running an/d response contains partial results + */ +export const isPartialResponse = (response?: IKibanaSearchResponse) => { + return Boolean(response && response.isRunning && response.isPartial); +}; diff --git a/src/plugins/data/jest.config.js b/src/plugins/data/jest.config.js new file mode 100644 index 00000000000000..3c6e854a53d7bc --- /dev/null +++ b/src/plugins/data/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/data'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/data/kibana.json b/src/plugins/data/kibana.json index d6f2534bd5e3be..06b083e0ff3aaa 100644 --- a/src/plugins/data/kibana.json +++ b/src/plugins/data/kibana.json @@ -4,8 +4,10 @@ "server": true, "ui": true, "requiredPlugins": [ + "bfetch", "expressions", - "uiActions" + "uiActions", + "share" ], "optionalPlugins": ["usageCollection"], "extraPublicDirs": ["common"], diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index 129addf3de70ee..9eced777a8e369 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -212,6 +212,16 @@ export { FieldFormat, } from '../common'; +/** + * Exporters (CSV) + */ + +import { datatableToCSV, CSV_MIME_TYPE } from '../common'; +export const exporters = { + datatableToCSV, + CSV_MIME_TYPE, +}; + /* * Index patterns: */ @@ -225,7 +235,6 @@ import { ILLEGAL_CHARACTERS, isDefault, validateIndexPattern, - getFromSavedObject, flattenHitWrapper, formatHitProvider, } from './index_patterns'; @@ -242,7 +251,6 @@ export const indexPatterns = { isFilterable, isNestedField, validate: validateIndexPattern, - getFromSavedObject, flattenHitWrapper, formatHitProvider, }; @@ -375,6 +383,7 @@ export { SearchRequest, SearchSourceFields, SortDirection, + SessionState, // expression functions and types EsdslExpressionFunctionDefinition, EsRawResponseExpressionTypeDefinition, @@ -385,7 +394,12 @@ export { PainlessError, } from './search'; -export type { SearchSource, ISessionService } from './search'; +export type { + SearchSource, + ISessionService, + SearchSessionInfoProvider, + ISessionsClient, +} from './search'; export { ISearchOptions, isErrorResponse, isCompleteResponse, isPartialResponse } from '../common'; diff --git a/src/plugins/data/public/index_patterns/expressions/load_index_pattern.test.ts b/src/plugins/data/public/index_patterns/expressions/load_index_pattern.test.ts index 378ceb376f5f11..eebe1ab80a5364 100644 --- a/src/plugins/data/public/index_patterns/expressions/load_index_pattern.test.ts +++ b/src/plugins/data/public/index_patterns/expressions/load_index_pattern.test.ts @@ -17,22 +17,27 @@ * under the License. */ -import { indexPatternLoad } from './load_index_pattern'; - -jest.mock('../../services', () => ({ - getIndexPatterns: () => ({ - get: (id: string) => ({ - toSpec: () => ({ - title: 'value', - }), - }), - }), -})); +import { IndexPatternLoadStartDependencies } from '../../../common/index_patterns/expressions'; +import { getFunctionDefinition } from './load_index_pattern'; describe('indexPattern expression function', () => { + let getStartDependencies: () => Promise; + + beforeEach(() => { + getStartDependencies = jest.fn().mockResolvedValue({ + indexPatterns: { + get: (id: string) => ({ + toSpec: () => ({ + title: 'value', + }), + }), + }, + }); + }); + test('returns serialized index pattern', async () => { - const indexPatternDefinition = indexPatternLoad(); - const result = await indexPatternDefinition.fn(null, { id: '1' }, {} as any); + const indexPatternDefinition = getFunctionDefinition({ getStartDependencies }); + const result = await indexPatternDefinition().fn(null, { id: '1' }, {} as any); expect(result.type).toEqual('index_pattern'); expect(result.value.title).toEqual('value'); }); diff --git a/src/plugins/data/public/index_patterns/expressions/load_index_pattern.ts b/src/plugins/data/public/index_patterns/expressions/load_index_pattern.ts index 901d6aac7fbff2..64e86f967c2b1b 100644 --- a/src/plugins/data/public/index_patterns/expressions/load_index_pattern.ts +++ b/src/plugins/data/public/index_patterns/expressions/load_index_pattern.ts @@ -17,46 +17,66 @@ * under the License. */ -import { i18n } from '@kbn/i18n'; -import { ExpressionFunctionDefinition } from '../../../../../plugins/expressions/public'; -import { getIndexPatterns } from '../../services'; -import { IndexPatternSpec } from '../../../common/index_patterns'; +import { StartServicesAccessor } from 'src/core/public'; +import { + getIndexPatternLoadMeta, + IndexPatternLoadExpressionFunctionDefinition, + IndexPatternLoadStartDependencies, +} from '../../../common/index_patterns/expressions'; +import { DataPublicPluginStart, DataStartDependencies } from '../../types'; -const name = 'indexPatternLoad'; +/** + * Returns the expression function definition. Any stateful dependencies are accessed + * at runtime via the `getStartDependencies` param, which provides the specific services + * needed for this function to run. + * + * This function is an implementation detail of this module, and is exported separately + * only for testing purposes. + * + * @param getStartDependencies - async function that resolves with IndexPatternLoadStartDependencies + * + * @internal + */ +export function getFunctionDefinition({ + getStartDependencies, +}: { + getStartDependencies: () => Promise; +}) { + return (): IndexPatternLoadExpressionFunctionDefinition => ({ + ...getIndexPatternLoadMeta(), + async fn(input, args) { + const { indexPatterns } = await getStartDependencies(); -type Input = null; -type Output = Promise<{ type: 'index_pattern'; value: IndexPatternSpec }>; + const indexPattern = await indexPatterns.get(args.id); -interface Arguments { - id: string; + return { type: 'index_pattern', value: indexPattern.toSpec() }; + }, + }); } -export const indexPatternLoad = (): ExpressionFunctionDefinition< - typeof name, - Input, - Arguments, - Output -> => ({ - name, - type: 'index_pattern', - inputTypes: ['null'], - help: i18n.translate('data.functions.indexPatternLoad.help', { - defaultMessage: 'Loads an index pattern', - }), - args: { - id: { - types: ['string'], - required: true, - help: i18n.translate('data.functions.indexPatternLoad.id.help', { - defaultMessage: 'index pattern id to load', - }), +/** + * This is some glue code that takes in `core.getStartServices`, extracts the dependencies + * needed for this function, and wraps them behind a `getStartDependencies` function that + * is then called at runtime. + * + * We do this so that we can be explicit about exactly which dependencies the function + * requires, without cluttering up the top-level `plugin.ts` with this logic. It also + * makes testing the expression function a bit easier since `getStartDependencies` is + * the only thing you should need to mock. + * + * @param getStartServices - core's StartServicesAccessor for this plugin + * + * @internal + */ +export function getIndexPatternLoad({ + getStartServices, +}: { + getStartServices: StartServicesAccessor; +}) { + return getFunctionDefinition({ + getStartDependencies: async () => { + const [, , { indexPatterns }] = await getStartServices(); + return { indexPatterns }; }, - }, - async fn(input, args) { - const indexPatterns = getIndexPatterns(); - - const indexPattern = await indexPatterns.get(args.id); - - return { type: 'index_pattern', value: indexPattern.toSpec() }; - }, -}); + }); +} diff --git a/src/plugins/data/public/index_patterns/index.ts b/src/plugins/data/public/index_patterns/index.ts index 9cd5e5a4736f10..6c39457599c743 100644 --- a/src/plugins/data/public/index_patterns/index.ts +++ b/src/plugins/data/public/index_patterns/index.ts @@ -23,7 +23,6 @@ export { ILLEGAL_CHARACTERS_VISIBLE, ILLEGAL_CHARACTERS, validateIndexPattern, - getFromSavedObject, isDefault, } from '../../common/index_patterns/lib'; export { flattenHitWrapper, formatHitProvider, onRedirectNoIndexPattern } from './index_patterns'; diff --git a/src/plugins/data/public/mocks.ts b/src/plugins/data/public/mocks.ts index 1b83eb569b1a1c..67c1ff7e09dd74 100644 --- a/src/plugins/data/public/mocks.ts +++ b/src/plugins/data/public/mocks.ts @@ -64,6 +64,7 @@ const createStartContract = (): Start => { SearchBar: jest.fn().mockReturnValue(null), }, indexPatterns: ({ + find: jest.fn((search) => [{ id: search, title: search }]), createField: jest.fn(() => {}), createFieldList: jest.fn(() => []), ensureDefaultIndexPattern: jest.fn(), diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index 7e8283476ffc5f..458024151c585b 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -48,7 +48,6 @@ import { setUiSettings, } from './services'; import { createSearchBar } from './ui/search_bar/create_search_bar'; -import { getEsaggs } from './search/expressions'; import { SELECT_RANGE_TRIGGER, VALUE_CLICK_TRIGGER, @@ -69,7 +68,7 @@ import { } from './actions'; import { SavedObjectsClientPublicToCommon } from './index_patterns'; -import { indexPatternLoad } from './index_patterns/expressions/load_index_pattern'; +import { getIndexPatternLoad } from './index_patterns/expressions'; import { UsageCollectionSetup } from '../../usage_collection/public'; declare module '../../ui_actions/public' { @@ -105,26 +104,11 @@ export class DataPublicPlugin public setup( core: CoreSetup, - { expressions, uiActions, usageCollection }: DataSetupDependencies + { bfetch, expressions, uiActions, usageCollection }: DataSetupDependencies ): DataPublicPluginSetup { const startServices = createStartServicesGetter(core.getStartServices); - expressions.registerFunction(indexPatternLoad); - expressions.registerFunction( - getEsaggs({ - getStartDependencies: async () => { - const [, , self] = await core.getStartServices(); - const { fieldFormats, indexPatterns, query, search } = self; - return { - addFilters: query.filterManager.addFilters.bind(query.filterManager), - aggs: search.aggs, - deserializeFieldFormat: fieldFormats.deserialize.bind(fieldFormats), - indexPatterns, - searchSource: search.searchSource, - }; - }, - }) - ); + expressions.registerFunction(getIndexPatternLoad({ getStartServices: core.getStartServices })); this.usageCollection = usageCollection; @@ -152,6 +136,7 @@ export class DataPublicPlugin ); const searchService = this.searchService.setup(core, { + bfetch, usageCollection, expressions, }); @@ -222,13 +207,16 @@ export class DataPublicPlugin core, data: dataServices, storage: this.storage, - trackUiMetric: this.usageCollection?.reportUiStats.bind(this.usageCollection, 'data_plugin'), + trackUiMetric: this.usageCollection?.reportUiCounter.bind( + this.usageCollection, + 'data_plugin' + ), }); return { ...dataServices, ui: { - IndexPatternSelect: createIndexPatternSelect(core.savedObjects.client), + IndexPatternSelect: createIndexPatternSelect(indexPatterns), SearchBar, }, }; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index fc9b8d4839ea3c..df599a7c0188e2 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -12,12 +12,14 @@ import { ApiResponse as ApiResponse_2 } from '@elastic/elasticsearch/lib/Transpo import { ApplicationStart } from 'kibana/public'; import { Assign } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; +import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; import Boom from '@hapi/boom'; import { CoreSetup } from 'src/core/public'; import { CoreSetup as CoreSetup_2 } from 'kibana/public'; import { CoreStart } from 'kibana/public'; import { CoreStart as CoreStart_2 } from 'src/core/public'; -import { Datatable as Datatable_2 } from 'src/plugins/expressions/common'; +import { Datatable as Datatable_2 } from 'src/plugins/expressions'; +import { Datatable as Datatable_3 } from 'src/plugins/expressions/common'; import { DatatableColumn as DatatableColumn_2 } from 'src/plugins/expressions'; import { Ensure } from '@kbn/utility-types'; import { EnvironmentMode } from '@kbn/config'; @@ -26,6 +28,7 @@ import { EuiBreadcrumb } from '@elastic/eui'; import { EuiButtonEmptyProps } from '@elastic/eui'; import { EuiComboBoxProps } from '@elastic/eui'; import { EuiConfirmModalProps } from '@elastic/eui'; +import { EuiFlyoutSize } from '@elastic/eui'; import { EuiGlobalToastListToast } from '@elastic/eui'; import { EventEmitter } from 'events'; import { ExclusiveUnion } from '@elastic/eui'; @@ -35,8 +38,10 @@ import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { ExpressionFunctionDefinition as ExpressionFunctionDefinition_2 } from 'src/plugins/expressions/public'; import { ExpressionsSetup } from 'src/plugins/expressions/public'; import { ExpressionValueBoxed } from 'src/plugins/expressions/common'; +import { FormatFactory as FormatFactory_2 } from 'src/plugins/data/common/field_formats/utils'; import { History } from 'history'; import { Href } from 'history'; +import { HttpSetup } from 'kibana/public'; import { IconType } from '@elastic/eui'; import { InjectedIntl } from '@kbn/i18n/react'; import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; @@ -59,7 +64,9 @@ import { PackageInfo } from '@kbn/config'; import { Path } from 'history'; import { Plugin as Plugin_2 } from 'src/core/public'; import { PluginInitializerContext as PluginInitializerContext_2 } from 'src/core/public'; +import { PluginInitializerContext as PluginInitializerContext_3 } from 'kibana/public'; import { PopoverAnchorPosition } from '@elastic/eui'; +import { PublicContract } from '@kbn/utility-types'; import { PublicMethodsOf } from '@kbn/utility-types'; import { PublicUiSettingsParams } from 'src/core/server/types'; import React from 'react'; @@ -72,13 +79,14 @@ import { Required } from '@kbn/utility-types'; import * as Rx from 'rxjs'; import { SavedObject } from 'kibana/server'; import { SavedObject as SavedObject_2 } from 'src/core/server'; -import { SavedObject as SavedObject_3 } from 'src/core/public'; import { SavedObjectReference } from 'src/core/types'; import { SavedObjectsClientContract } from 'src/core/public'; +import { SavedObjectsFindOptions } from 'kibana/public'; import { SavedObjectsFindResponse } from 'kibana/server'; import { Search } from '@elastic/elasticsearch/api/requestParams'; import { SearchResponse } from 'elasticsearch'; import { SerializedFieldFormat as SerializedFieldFormat_2 } from 'src/plugins/expressions/common'; +import { StartServicesAccessor } from 'kibana/public'; import { ToastInputFields } from 'src/core/public/notifications'; import { ToastsSetup } from 'kibana/public'; import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; @@ -87,7 +95,7 @@ import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { TypeOf } from '@kbn/config-schema'; import { UiActionsSetup } from 'src/plugins/ui_actions/public'; import { UiActionsStart } from 'src/plugins/ui_actions/public'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { Unit } from '@elastic/datemath'; import { UnregisterCallback } from 'history'; import { UserProvidedValues } from 'src/core/server/types'; @@ -672,6 +680,14 @@ export type ExistsFilter = Filter & { exists?: FilterExistsProperty; }; +// Warning: (ae-missing-release-tag) "exporters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const exporters: { + datatableToCSV: typeof datatableToCSV; + CSV_MIME_TYPE: string; +}; + // Warning: (ae-missing-release-tag) "ExpressionFunctionKibana" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1100,7 +1116,7 @@ export class IndexPattern implements IIndexPattern { constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); addScriptedField(name: string, script: string, fieldType?: string): Promise; // (undocumented) - deleteFieldFormat: (fieldName: string) => void; + readonly deleteFieldFormat: (fieldName: string) => void; // Warning: (ae-forgotten-export) The symbol "FieldAttrs" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -1151,9 +1167,7 @@ export class IndexPattern implements IIndexPattern { }; // (undocumented) getFieldAttrs: () => { - [x: string]: { - customLabel: string; - }; + [x: string]: FieldAttrSet; }; // (undocumented) getFieldByName(name: string): IndexPatternField | undefined; @@ -1192,7 +1206,13 @@ export class IndexPattern implements IIndexPattern { removeScriptedField(fieldName: string): void; resetOriginalSavedObjectBody: () => void; // (undocumented) - setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; + protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; + // (undocumented) + setFieldCount(fieldName: string, count: number | undefined | null): void; + // (undocumented) + setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; + // (undocumented) + readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -1262,6 +1282,8 @@ export class IndexPatternField implements IFieldType { get customLabel(): string | undefined; set customLabel(customLabel: string | undefined); // (undocumented) + deleteCount(): void; + // (undocumented) get displayName(): string; // (undocumented) get esTypes(): string[] | undefined; @@ -1323,7 +1345,6 @@ export const indexPatterns: { isFilterable: typeof isFilterable; isNestedField: typeof isNestedField; validate: typeof validateIndexPattern; - getFromSavedObject: typeof getFromSavedObject; flattenHitWrapper: typeof flattenHitWrapper; formatHitProvider: typeof formatHitProvider; }; @@ -1387,6 +1408,8 @@ export class IndexPatternsService { // (undocumented) ensureDefaultIndexPattern: EnsureDefaultIndexPattern; fieldArrayToMap: (fields: FieldSpec[], fieldAttrs?: FieldAttrs | undefined) => Record; + // (undocumented) + find: (search: string, size?: number) => Promise; get: (id: string) => Promise; // Warning: (ae-forgotten-export) The symbol "IndexPatternSavedObjectAttrs" needs to be exported by the entry point index.d.ts // @@ -1467,6 +1490,7 @@ export interface ISearchSetup { // (undocumented) aggs: AggsSetup; session: ISessionService; + sessionsClient: ISessionsClient; // Warning: (ae-forgotten-export) The symbol "SearchUsageCollector" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -1482,6 +1506,7 @@ export interface ISearchStart { search: ISearchGeneric; searchSource: ISearchStartSearchSource; session: ISessionService; + sessionsClient: ISessionsClient; // (undocumented) showError: (e: Error) => void; } @@ -1497,25 +1522,17 @@ export interface ISearchStartSearchSource { // @public (undocumented) export const isErrorResponse: (response?: IKibanaSearchResponse | undefined) => boolean | undefined; +// Warning: (ae-forgotten-export) The symbol "SessionsClient" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ISessionsClient" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ISessionsClient = PublicContract; + +// Warning: (ae-forgotten-export) The symbol "SessionService" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "ISessionService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export interface ISessionService { - clear: () => void; - delete: (sessionId: string) => Promise; - // Warning: (ae-forgotten-export) The symbol "SearchSessionFindOptions" needs to be exported by the entry point index.d.ts - find: (options: SearchSessionFindOptions) => Promise>; - get: (sessionId: string) => Promise>; - getSession$: () => Observable; - getSessionId: () => string | undefined; - isRestore: () => boolean; - isStored: () => boolean; - // Warning: (ae-forgotten-export) The symbol "BackgroundSessionSavedObjectAttributes" needs to be exported by the entry point index.d.ts - restore: (sessionId: string) => Promise>; - save: (name: string, url: string) => Promise>; - start: () => string; - update: (sessionId: string, attributes: Partial) => Promise; -} +export type ISessionService = PublicContract; // Warning: (ae-missing-release-tag) "isFilter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -1678,7 +1695,7 @@ export interface OptionedValueProp { // @public (undocumented) export class PainlessError extends EsError { // Warning: (ae-forgotten-export) The symbol "IEsError" needs to be exported by the entry point index.d.ts - constructor(err: IEsError, request: IKibanaSearchRequest); + constructor(err: IEsError); // (undocumented) getErrorMessage(application: ApplicationStart): JSX.Element; // (undocumented) @@ -1726,7 +1743,7 @@ export class Plugin implements Plugin_2); // (undocumented) - setup(core: CoreSetup, { expressions, uiActions, usageCollection }: DataSetupDependencies): DataPublicPluginSetup; + setup(core: CoreSetup, { bfetch, expressions, uiActions, usageCollection }: DataSetupDependencies): DataPublicPluginSetup; // (undocumented) start(core: CoreStart_2, { uiActions }: DataStartDependencies): DataPublicPluginStart; // (undocumented) @@ -1798,6 +1815,10 @@ export interface QueryStringInputProps { // (undocumented) disableAutoFocus?: boolean; // (undocumented) + disableLanguageSwitcher?: boolean; + // (undocumented) + iconType?: string; + // (undocumented) indexPatterns: Array; // (undocumented) isInvalid?: boolean; @@ -2035,8 +2056,8 @@ export const search: { // Warning: (ae-missing-release-tag) "SearchBar" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export const SearchBar: React.ComponentClass, "query" | "isLoading" | "filters" | "onRefresh" | "onRefreshChange" | "refreshInterval" | "indexPatterns" | "dataTestSubj" | "screenTitle" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "trackUiMetric" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated">, any> & { - WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; +export const SearchBar: React.ComponentClass, "query" | "isLoading" | "filters" | "indexPatterns" | "dataTestSubj" | "refreshInterval" | "screenTitle" | "onRefresh" | "onRefreshChange" | "showQueryInput" | "showDatePicker" | "showAutoRefreshOnly" | "dateRangeFrom" | "dateRangeTo" | "isRefreshPaused" | "customSubmitButton" | "timeHistory" | "indicateNoData" | "onFiltersUpdated" | "trackUiMetric" | "savedQuery" | "showSaveQuery" | "onClearSavedQuery" | "showQueryBar" | "showFilterBar" | "onQueryChange" | "onQuerySubmit" | "onSaved" | "onSavedQueryUpdated">, any> & { + WrappedComponent: React.ComponentType & ReactIntl.InjectedIntlProps>; }; // Warning: (ae-forgotten-export) The symbol "SearchBarOwnProps" needs to be exported by the entry point index.d.ts @@ -2078,7 +2099,7 @@ export class SearchInterceptor { // (undocumented) protected getTimeoutMode(): TimeoutErrorMode; // (undocumented) - protected handleSearchError(e: any, request: IKibanaSearchRequest, timeoutSignal: AbortSignal, options?: ISearchOptions): Error; + protected handleSearchError(e: any, timeoutSignal: AbortSignal, options?: ISearchOptions): Error; // @internal protected pendingCount$: BehaviorSubject; // @internal (undocumented) @@ -2092,6 +2113,7 @@ export class SearchInterceptor { timeoutSignal: AbortSignal; combinedSignal: AbortSignal; cleanup: () => void; + abort: () => void; }; // (undocumented) showError(e: Error): void; @@ -2101,6 +2123,8 @@ export class SearchInterceptor { // // @public (undocumented) export interface SearchInterceptorDeps { + // (undocumented) + bfetch: BfetchPublicSetup; // (undocumented) http: CoreSetup_2['http']; // (undocumented) @@ -2118,6 +2142,20 @@ export interface SearchInterceptorDeps { // @internal export type SearchRequest = Record; +// Warning: (ae-forgotten-export) The symbol "UrlGeneratorId" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "SearchSessionInfoProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export interface SearchSessionInfoProvider { + getName: () => Promise; + // (undocumented) + getUrlGeneratorData: () => Promise<{ + urlGeneratorId: ID; + initialState: UrlGeneratorStateMapping[ID]['State']; + restoreState: UrlGeneratorStateMapping[ID]['State']; + }>; +} + // @public (undocumented) export class SearchSource { // Warning: (ae-forgotten-export) The symbol "SearchSourceDependencies" needs to be exported by the entry point index.d.ts @@ -2133,7 +2171,7 @@ export class SearchSource { type?: string | undefined; query?: import("../..").Query | undefined; filter?: Filter | Filter[] | (() => Filter | Filter[] | undefined) | undefined; - sort?: Record | Record[] | undefined; + sort?: Record | Record[] | undefined; highlight?: any; highlightAll?: boolean | undefined; aggs?: any; @@ -2141,7 +2179,8 @@ export class SearchSource { size?: number | undefined; source?: string | boolean | string[] | undefined; version?: boolean | undefined; - fields?: string | boolean | string[] | undefined; + fields?: SearchFieldValue[] | undefined; + fieldsFromSource?: string | boolean | string[] | undefined; index?: import("../..").IndexPattern | undefined; searchAfter?: import("./types").EsQuerySearchAfter | undefined; timeout?: string | undefined; @@ -2157,6 +2196,7 @@ export class SearchSource { // (undocumented) history: SearchRequest[]; onRequestStart(handler: (searchSource: SearchSource, options?: ISearchOptions) => Promise): void; + removeField(field: K): this; serialize(): { searchSourceJSON: string; references: import("src/core/server").SavedObjectReference[]; @@ -2174,8 +2214,9 @@ export class SearchSource { export interface SearchSourceFields { // (undocumented) aggs?: any; - // (undocumented) - fields?: NameList; + fields?: SearchFieldValue[]; + // @deprecated + fieldsFromSource?: NameList; // (undocumented) filter?: Filter[] | Filter | (() => Filter[] | Filter | undefined); // (undocumented) @@ -2222,6 +2263,17 @@ export class SearchTimeoutError extends KbnError { mode: TimeoutErrorMode; } +// @public +export enum SessionState { + BackgroundCompleted = "backgroundCompleted", + BackgroundLoading = "backgroundLoading", + Canceled = "canceled", + Completed = "completed", + Loading = "loading", + None = "none", + Restored = "restored" +} + // Warning: (ae-missing-release-tag) "SortDirection" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -2362,7 +2414,9 @@ export const UI_SETTINGS: { // src/plugins/data/common/es_query/filters/phrase_filter.ts:33:3 - (ae-forgotten-export) The symbol "PhraseFilterMeta" needs to be exported by the entry point index.d.ts // src/plugins/data/common/es_query/filters/phrases_filter.ts:31:3 - (ae-forgotten-export) The symbol "PhrasesFilterMeta" needs to be exported by the entry point index.d.ts // src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:64:5 - (ae-forgotten-export) The symbol "FormatFieldFn" needs to be exported by the entry point index.d.ts +// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:128:7 - (ae-forgotten-export) The symbol "FieldAttrSet" needs to be exported by the entry point index.d.ts // src/plugins/data/common/search/aggs/types.ts:113:51 - (ae-forgotten-export) The symbol "AggTypesRegistryStart" needs to be exported by the entry point index.d.ts +// src/plugins/data/common/search/search_source/search_source.ts:197:7 - (ae-forgotten-export) The symbol "SearchFieldValue" needs to be exported by the entry point index.d.ts // src/plugins/data/public/field_formats/field_formats_service.ts:67:3 - (ae-forgotten-export) The symbol "FormatFactory" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:66:23 - (ae-forgotten-export) The symbol "FILTERS" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:66:23 - (ae-forgotten-export) The symbol "getDisplayValueFromFilter" needs to be exported by the entry point index.d.ts @@ -2389,28 +2443,29 @@ export const UI_SETTINGS: { // src/plugins/data/public/index.ts:178:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:178:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:178:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:236:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:393:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:393:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:393:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:393:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:395:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:396:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:405:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:406:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:407:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:408:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:412:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:413:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:416:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:417:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:420:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:220:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:245:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:245:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:245:27 - (ae-forgotten-export) The symbol "validateIndexPattern" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:245:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:245:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:407:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:407:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:407:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:407:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:409:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:410:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:419:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:420:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:421:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:422:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:426:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:427:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:430:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:431:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:434:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts // src/plugins/data/public/query/state_sync/connect_to_query_state.ts:45:5 - (ae-forgotten-export) The symbol "FilterStateStore" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/search/session/session_service.ts:46:5 - (ae-forgotten-export) The symbol "UrlGeneratorStateMapping" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/src/plugins/data/public/search/collectors/create_usage_collector.test.ts b/src/plugins/data/public/search/collectors/create_usage_collector.test.ts index b87ac11e810c9f..c2afe1d2eacff1 100644 --- a/src/plugins/data/public/search/collectors/create_usage_collector.test.ts +++ b/src/plugins/data/public/search/collectors/create_usage_collector.test.ts @@ -47,19 +47,19 @@ describe('Search Usage Collector', () => { test('tracks query timeouts', async () => { await usageCollector.trackQueryTimedOut(); - expect(mockUsageCollectionSetup.reportUiStats).toHaveBeenCalled(); - expect(mockUsageCollectionSetup.reportUiStats.mock.calls[0][0]).toBe('foo/bar'); - expect(mockUsageCollectionSetup.reportUiStats.mock.calls[0][1]).toBe(METRIC_TYPE.LOADED); - expect(mockUsageCollectionSetup.reportUiStats.mock.calls[0][2]).toBe( + expect(mockUsageCollectionSetup.reportUiCounter).toHaveBeenCalled(); + expect(mockUsageCollectionSetup.reportUiCounter.mock.calls[0][0]).toBe('foo/bar'); + expect(mockUsageCollectionSetup.reportUiCounter.mock.calls[0][1]).toBe(METRIC_TYPE.LOADED); + expect(mockUsageCollectionSetup.reportUiCounter.mock.calls[0][2]).toBe( SEARCH_EVENT_TYPE.QUERY_TIMED_OUT ); }); test('tracks query cancellation', async () => { await usageCollector.trackQueriesCancelled(); - expect(mockUsageCollectionSetup.reportUiStats).toHaveBeenCalled(); - expect(mockUsageCollectionSetup.reportUiStats.mock.calls[0][1]).toBe(METRIC_TYPE.LOADED); - expect(mockUsageCollectionSetup.reportUiStats.mock.calls[0][2]).toBe( + expect(mockUsageCollectionSetup.reportUiCounter).toHaveBeenCalled(); + expect(mockUsageCollectionSetup.reportUiCounter.mock.calls[0][1]).toBe(METRIC_TYPE.LOADED); + expect(mockUsageCollectionSetup.reportUiCounter.mock.calls[0][2]).toBe( SEARCH_EVENT_TYPE.QUERIES_CANCELLED ); }); diff --git a/src/plugins/data/public/search/collectors/create_usage_collector.ts b/src/plugins/data/public/search/collectors/create_usage_collector.ts index 187ed90652bb26..012c13974a8dee 100644 --- a/src/plugins/data/public/search/collectors/create_usage_collector.ts +++ b/src/plugins/data/public/search/collectors/create_usage_collector.ts @@ -34,7 +34,7 @@ export const createUsageCollector = ( return { trackQueryTimedOut: async () => { const currentApp = await getCurrentApp(); - return usageCollection?.reportUiStats( + return usageCollection?.reportUiCounter( currentApp!, METRIC_TYPE.LOADED, SEARCH_EVENT_TYPE.QUERY_TIMED_OUT @@ -42,7 +42,7 @@ export const createUsageCollector = ( }, trackQueriesCancelled: async () => { const currentApp = await getCurrentApp(); - return usageCollection?.reportUiStats( + return usageCollection?.reportUiCounter( currentApp!, METRIC_TYPE.LOADED, SEARCH_EVENT_TYPE.QUERIES_CANCELLED diff --git a/src/plugins/data/public/search/errors/painless_error.tsx b/src/plugins/data/public/search/errors/painless_error.tsx index 282a602d358c77..3cfe9f4278ba0c 100644 --- a/src/plugins/data/public/search/errors/painless_error.tsx +++ b/src/plugins/data/public/search/errors/painless_error.tsx @@ -25,11 +25,10 @@ import { ApplicationStart } from 'kibana/public'; import { IEsError, isEsError } from './types'; import { EsError } from './es_error'; import { getRootCause } from './utils'; -import { IKibanaSearchRequest } from '..'; export class PainlessError extends EsError { painlessStack?: string; - constructor(err: IEsError, request: IKibanaSearchRequest) { + constructor(err: IEsError) { super(err); } diff --git a/src/plugins/data/public/search/expressions/esaggs.ts b/src/plugins/data/public/search/expressions/esaggs.ts new file mode 100644 index 00000000000000..efb31423afcdf2 --- /dev/null +++ b/src/plugins/data/public/search/expressions/esaggs.ts @@ -0,0 +1,115 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { get } from 'lodash'; +import { StartServicesAccessor } from 'src/core/public'; +import { Adapters } from 'src/plugins/inspector/common'; +import { + EsaggsExpressionFunctionDefinition, + EsaggsStartDependencies, + getEsaggsMeta, + handleEsaggsRequest, +} from '../../../common/search/expressions'; +import { DataPublicPluginStart, DataStartDependencies } from '../../types'; + +/** + * Returns the expression function definition. Any stateful dependencies are accessed + * at runtime via the `getStartDependencies` param, which provides the specific services + * needed for this function to run. + * + * This function is an implementation detail of this module, and is exported separately + * only for testing purposes. + * + * @param getStartDependencies - async function that resolves with EsaggsStartDependencies + * + * @internal + */ +export function getFunctionDefinition({ + getStartDependencies, +}: { + getStartDependencies: () => Promise; +}) { + return (): EsaggsExpressionFunctionDefinition => ({ + ...getEsaggsMeta(), + async fn(input, args, { inspectorAdapters, abortSignal, getSearchSessionId }) { + const { + addFilters, + aggs, + deserializeFieldFormat, + indexPatterns, + searchSource, + } = await getStartDependencies(); + + const aggConfigsState = JSON.parse(args.aggConfigs); + const indexPattern = await indexPatterns.get(args.index); + const aggConfigs = aggs.createAggConfigs(indexPattern, aggConfigsState); + + return await handleEsaggsRequest(input, args, { + abortSignal: (abortSignal as unknown) as AbortSignal, + addFilters, + aggs: aggConfigs, + deserializeFieldFormat, + filters: get(input, 'filters', undefined), + indexPattern, + inspectorAdapters: inspectorAdapters as Adapters, + metricsAtAllLevels: args.metricsAtAllLevels, + partialRows: args.partialRows, + query: get(input, 'query', undefined) as any, + searchSessionId: getSearchSessionId(), + searchSourceService: searchSource, + timeFields: args.timeFields, + timeRange: get(input, 'timeRange', undefined), + }); + }, + }); +} + +/** + * This is some glue code that takes in `core.getStartServices`, extracts the dependencies + * needed for this function, and wraps them behind a `getStartDependencies` function that + * is then called at runtime. + * + * We do this so that we can be explicit about exactly which dependencies the function + * requires, without cluttering up the top-level `plugin.ts` with this logic. It also + * makes testing the expression function a bit easier since `getStartDependencies` is + * the only thing you should need to mock. + * + * @param getStartServices - core's StartServicesAccessor for this plugin + * + * @internal + */ +export function getEsaggs({ + getStartServices, +}: { + getStartServices: StartServicesAccessor; +}) { + return getFunctionDefinition({ + getStartDependencies: async () => { + const [, , self] = await getStartServices(); + const { fieldFormats, indexPatterns, query, search } = self; + return { + addFilters: query.filterManager.addFilters.bind(query.filterManager), + aggs: search.aggs, + deserializeFieldFormat: fieldFormats.deserialize.bind(fieldFormats), + indexPatterns, + searchSource: search.searchSource, + }; + }, + }); +} diff --git a/src/plugins/data/public/search/expressions/esaggs/esaggs_fn.ts b/src/plugins/data/public/search/expressions/esaggs/esaggs_fn.ts deleted file mode 100644 index ce3bd9bdaee763..00000000000000 --- a/src/plugins/data/public/search/expressions/esaggs/esaggs_fn.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { get } from 'lodash'; -import { i18n } from '@kbn/i18n'; - -import { Datatable, DatatableColumn } from 'src/plugins/expressions/common'; -import { Adapters } from 'src/plugins/inspector/common'; - -import { calculateBounds, EsaggsExpressionFunctionDefinition } from '../../../../common'; -import { FormatFactory } from '../../../../common/field_formats/utils'; -import { IndexPatternsContract } from '../../../../common/index_patterns/index_patterns'; -import { ISearchStartSearchSource, AggsStart } from '../../../../common/search'; - -import { AddFilters } from './build_tabular_inspector_data'; -import { handleRequest } from './request_handler'; - -const name = 'esaggs'; - -interface StartDependencies { - addFilters: AddFilters; - aggs: AggsStart; - deserializeFieldFormat: FormatFactory; - indexPatterns: IndexPatternsContract; - searchSource: ISearchStartSearchSource; -} - -export function getEsaggs({ - getStartDependencies, -}: { - getStartDependencies: () => Promise; -}) { - return (): EsaggsExpressionFunctionDefinition => ({ - name, - type: 'datatable', - inputTypes: ['kibana_context', 'null'], - help: i18n.translate('data.functions.esaggs.help', { - defaultMessage: 'Run AggConfig aggregation', - }), - args: { - index: { - types: ['string'], - help: '', - }, - metricsAtAllLevels: { - types: ['boolean'], - default: false, - help: '', - }, - partialRows: { - types: ['boolean'], - default: false, - help: '', - }, - includeFormatHints: { - types: ['boolean'], - default: false, - help: '', - }, - aggConfigs: { - types: ['string'], - default: '""', - help: '', - }, - timeFields: { - types: ['string'], - help: '', - multi: true, - }, - }, - async fn(input, args, { inspectorAdapters, abortSignal, getSearchSessionId }) { - const { - addFilters, - aggs, - deserializeFieldFormat, - indexPatterns, - searchSource, - } = await getStartDependencies(); - - const aggConfigsState = JSON.parse(args.aggConfigs); - const indexPattern = await indexPatterns.get(args.index); - const aggConfigs = aggs.createAggConfigs(indexPattern, aggConfigsState); - - const resolvedTimeRange = input?.timeRange && calculateBounds(input.timeRange); - - const response = await handleRequest({ - abortSignal: (abortSignal as unknown) as AbortSignal, - addFilters, - aggs: aggConfigs, - deserializeFieldFormat, - filters: get(input, 'filters', undefined), - indexPattern, - inspectorAdapters: inspectorAdapters as Adapters, - metricsAtAllLevels: args.metricsAtAllLevels, - partialRows: args.partialRows, - query: get(input, 'query', undefined) as any, - searchSessionId: getSearchSessionId(), - searchSourceService: searchSource, - timeFields: args.timeFields, - timeRange: get(input, 'timeRange', undefined), - }); - - const table: Datatable = { - type: 'datatable', - rows: response.rows, - columns: response.columns.map((column) => { - const cleanedColumn: DatatableColumn = { - id: column.id, - name: column.name, - meta: { - type: column.aggConfig.params.field?.type || 'number', - field: column.aggConfig.params.field?.name, - index: indexPattern.title, - params: column.aggConfig.toSerializedFieldFormat(), - source: name, - sourceParams: { - indexPatternId: indexPattern.id, - appliedTimeRange: - column.aggConfig.params.field?.name && - input?.timeRange && - args.timeFields && - args.timeFields.includes(column.aggConfig.params.field?.name) - ? { - from: resolvedTimeRange?.min?.toISOString(), - to: resolvedTimeRange?.max?.toISOString(), - } - : undefined, - ...column.aggConfig.serialize(), - }, - }, - }; - return cleanedColumn; - }), - }; - - return table; - }, - }); -} diff --git a/src/plugins/data/public/search/expressions/esaggs/request_handler.ts b/src/plugins/data/public/search/expressions/esaggs/request_handler.ts deleted file mode 100644 index 93b5705b821c02..00000000000000 --- a/src/plugins/data/public/search/expressions/esaggs/request_handler.ts +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { i18n } from '@kbn/i18n'; -import { Adapters } from 'src/plugins/inspector/common'; - -import { - calculateBounds, - Filter, - getTime, - IndexPattern, - isRangeFilter, - Query, - TimeRange, -} from '../../../../common'; -import { - getRequestInspectorStats, - getResponseInspectorStats, - IAggConfigs, - ISearchStartSearchSource, - tabifyAggResponse, -} from '../../../../common/search'; -import { FormatFactory } from '../../../../common/field_formats/utils'; - -import { AddFilters, buildTabularInspectorData } from './build_tabular_inspector_data'; - -interface RequestHandlerParams { - abortSignal?: AbortSignal; - addFilters?: AddFilters; - aggs: IAggConfigs; - deserializeFieldFormat: FormatFactory; - filters?: Filter[]; - indexPattern?: IndexPattern; - inspectorAdapters: Adapters; - metricsAtAllLevels?: boolean; - partialRows?: boolean; - query?: Query; - searchSessionId?: string; - searchSourceService: ISearchStartSearchSource; - timeFields?: string[]; - timeRange?: TimeRange; -} - -export const handleRequest = async ({ - abortSignal, - addFilters, - aggs, - deserializeFieldFormat, - filters, - indexPattern, - inspectorAdapters, - metricsAtAllLevels, - partialRows, - query, - searchSessionId, - searchSourceService, - timeFields, - timeRange, -}: RequestHandlerParams) => { - const searchSource = await searchSourceService.create(); - - searchSource.setField('index', indexPattern); - searchSource.setField('size', 0); - - // Create a new search source that inherits the original search source - // but has the appropriate timeRange applied via a filter. - // This is a temporary solution until we properly pass down all required - // information for the request to the request handler (https://github.com/elastic/kibana/issues/16641). - // Using callParentStartHandlers: true we make sure, that the parent searchSource - // onSearchRequestStart will be called properly even though we use an inherited - // search source. - const timeFilterSearchSource = searchSource.createChild({ callParentStartHandlers: true }); - const requestSearchSource = timeFilterSearchSource.createChild({ callParentStartHandlers: true }); - - aggs.setTimeRange(timeRange as TimeRange); - - // For now we need to mirror the history of the passed search source, since - // the request inspector wouldn't work otherwise. - Object.defineProperty(requestSearchSource, 'history', { - get() { - return searchSource.history; - }, - set(history) { - return (searchSource.history = history); - }, - }); - - requestSearchSource.setField('aggs', function () { - return aggs.toDsl(metricsAtAllLevels); - }); - - requestSearchSource.onRequestStart((paramSearchSource, options) => { - return aggs.onSearchRequestStart(paramSearchSource, options); - }); - - // If timeFields have been specified, use the specified ones, otherwise use primary time field of index - // pattern if it's available. - const defaultTimeField = indexPattern?.getTimeField?.(); - const defaultTimeFields = defaultTimeField ? [defaultTimeField.name] : []; - const allTimeFields = timeFields && timeFields.length > 0 ? timeFields : defaultTimeFields; - - // If a timeRange has been specified and we had at least one timeField available, create range - // filters for that those time fields - if (timeRange && allTimeFields.length > 0) { - timeFilterSearchSource.setField('filter', () => { - return allTimeFields - .map((fieldName) => getTime(indexPattern, timeRange, { fieldName })) - .filter(isRangeFilter); - }); - } - - requestSearchSource.setField('filter', filters); - requestSearchSource.setField('query', query); - - let request; - if (inspectorAdapters.requests) { - inspectorAdapters.requests.reset(); - request = inspectorAdapters.requests.start( - i18n.translate('data.functions.esaggs.inspector.dataRequest.title', { - defaultMessage: 'Data', - }), - { - description: i18n.translate('data.functions.esaggs.inspector.dataRequest.description', { - defaultMessage: - 'This request queries Elasticsearch to fetch the data for the visualization.', - }), - searchSessionId, - } - ); - request.stats(getRequestInspectorStats(requestSearchSource)); - } - - try { - const response = await requestSearchSource.fetch({ - abortSignal, - sessionId: searchSessionId, - }); - - if (request) { - request.stats(getResponseInspectorStats(response, searchSource)).ok({ json: response }); - } - - (searchSource as any).rawResponse = response; - } catch (e) { - // Log any error during request to the inspector - if (request) { - request.error({ json: e }); - } - throw e; - } finally { - // Add the request body no matter if things went fine or not - if (request) { - request.json(await requestSearchSource.getSearchRequestBody()); - } - } - - // Note that rawResponse is not deeply cloned here, so downstream applications using courier - // must take care not to mutate it, or it could have unintended side effects, e.g. displaying - // response data incorrectly in the inspector. - let response = (searchSource as any).rawResponse; - for (const agg of aggs.aggs) { - if (typeof agg.type.postFlightRequest === 'function') { - response = await agg.type.postFlightRequest( - response, - aggs, - agg, - requestSearchSource, - inspectorAdapters.requests, - abortSignal - ); - } - } - - const parsedTimeRange = timeRange ? calculateBounds(timeRange) : null; - const tabifyParams = { - metricsAtAllLevels, - partialRows, - timeRange: parsedTimeRange - ? { from: parsedTimeRange.min, to: parsedTimeRange.max, timeFields: allTimeFields } - : undefined, - }; - - const tabifiedResponse = tabifyAggResponse(aggs, response, tabifyParams); - - if (inspectorAdapters.data) { - inspectorAdapters.data.setTabularLoader( - () => - buildTabularInspectorData(tabifiedResponse, { - addFilters, - deserializeFieldFormat, - }), - { returnsFormattedValues: true } - ); - } - - return tabifiedResponse; -}; diff --git a/src/plugins/data/public/search/expressions/index.ts b/src/plugins/data/public/search/expressions/index.ts index 98ed1d08af8ad0..9482a9748c466d 100644 --- a/src/plugins/data/public/search/expressions/index.ts +++ b/src/plugins/data/public/search/expressions/index.ts @@ -17,6 +17,6 @@ * under the License. */ -export * from './esaggs'; export * from './es_raw_response'; +export * from './esaggs'; export * from './esdsl'; diff --git a/src/plugins/data/public/search/index.ts b/src/plugins/data/public/search/index.ts index f6bd46c17192c9..2a767d1bf7c0d1 100644 --- a/src/plugins/data/public/search/index.ts +++ b/src/plugins/data/public/search/index.ts @@ -40,9 +40,15 @@ export { SearchSourceDependencies, SearchSourceFields, SortDirection, - ISessionService, } from '../../common/search'; - +export { + SessionService, + ISessionService, + SearchSessionInfoProvider, + SessionState, + SessionsClient, + ISessionsClient, +} from './session'; export { getEsPreference } from './es_search'; export { SearchInterceptor, SearchInterceptorDeps } from './search_interceptor'; diff --git a/src/plugins/data/public/search/mocks.ts b/src/plugins/data/public/search/mocks.ts index 836ddb618e7468..b799c661051fa5 100644 --- a/src/plugins/data/public/search/mocks.ts +++ b/src/plugins/data/public/search/mocks.ts @@ -20,13 +20,14 @@ import { searchAggsSetupMock, searchAggsStartMock } from './aggs/mocks'; import { searchSourceMock } from './search_source/mocks'; import { ISearchSetup, ISearchStart } from './types'; -import { getSessionServiceMock } from '../../common/mocks'; +import { getSessionsClientMock, getSessionServiceMock } from './session/mocks'; function createSetupContract(): jest.Mocked { return { aggs: searchAggsSetupMock(), __enhance: jest.fn(), session: getSessionServiceMock(), + sessionsClient: getSessionsClientMock(), }; } @@ -36,6 +37,7 @@ function createStartContract(): jest.Mocked { search: jest.fn(), showError: jest.fn(), session: getSessionServiceMock(), + sessionsClient: getSessionsClientMock(), searchSource: searchSourceMock.createStartContract(), }; } diff --git a/src/plugins/data/public/search/search_interceptor.test.ts b/src/plugins/data/public/search/search_interceptor.test.ts index 60274261da25f4..947dac1b326400 100644 --- a/src/plugins/data/public/search/search_interceptor.test.ts +++ b/src/plugins/data/public/search/search_interceptor.test.ts @@ -24,10 +24,14 @@ import { SearchInterceptor } from './search_interceptor'; import { AbortError } from '../../../kibana_utils/public'; import { SearchTimeoutError, PainlessError, TimeoutErrorMode } from './errors'; import { searchServiceMock } from './mocks'; -import { ISearchStart } from '.'; +import { ISearchStart, ISessionService } from '.'; +import { bfetchPluginMock } from '../../../bfetch/public/mocks'; +import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; let searchInterceptor: SearchInterceptor; let mockCoreSetup: MockedKeys; +let bfetchSetup: jest.Mocked; +let fetchMock: jest.Mock; const flushPromises = () => new Promise((resolve) => setImmediate(resolve)); jest.useFakeTimers(); @@ -39,7 +43,11 @@ describe('SearchInterceptor', () => { mockCoreSetup = coreMock.createSetup(); mockCoreStart = coreMock.createStart(); searchMock = searchServiceMock.createStartContract(); + fetchMock = jest.fn(); + bfetchSetup = bfetchPluginMock.createSetupContract(); + bfetchSetup.batchedFunction.mockReturnValue(fetchMock); searchInterceptor = new SearchInterceptor({ + bfetch: bfetchSetup, toasts: mockCoreSetup.notifications.toasts, startServices: new Promise((resolve) => { resolve([mockCoreStart, {}, {}]); @@ -65,20 +73,17 @@ describe('SearchInterceptor', () => { test('Renders a PainlessError', async () => { searchInterceptor.showError( - new PainlessError( - { - body: { - attributes: { - error: { - failed_shards: { - reason: 'bananas', - }, + new PainlessError({ + body: { + attributes: { + error: { + failed_shards: { + reason: 'bananas', }, }, - } as any, - }, - {} as any - ) + }, + } as any, + }) ); expect(mockCoreSetup.notifications.toasts.addDanger).toBeCalledTimes(1); expect(mockCoreSetup.notifications.toasts.addError).not.toBeCalled(); @@ -94,18 +99,110 @@ describe('SearchInterceptor', () => { describe('search', () => { test('Observable should resolve if fetch is successful', async () => { const mockResponse: any = { result: 200 }; - mockCoreSetup.http.fetch.mockResolvedValueOnce(mockResponse); + fetchMock.mockResolvedValueOnce(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; const response = searchInterceptor.search(mockRequest); - expect(response.toPromise()).resolves.toBe(mockResponse); + await expect(response.toPromise()).resolves.toBe(mockResponse); + }); + + describe('Search session', () => { + const setup = ({ + isRestore = false, + isStored = false, + sessionId, + }: { + isRestore?: boolean; + isStored?: boolean; + sessionId?: string; + }) => { + const sessionServiceMock = searchMock.session as jest.Mocked; + sessionServiceMock.getSessionId.mockImplementation(() => sessionId); + sessionServiceMock.isRestore.mockImplementation(() => isRestore); + sessionServiceMock.isStored.mockImplementation(() => isStored); + fetchMock.mockResolvedValue({ result: 200 }); + }; + + const mockRequest: IEsSearchRequest = { + params: {}, + }; + + afterEach(() => { + const sessionServiceMock = searchMock.session as jest.Mocked; + sessionServiceMock.getSessionId.mockReset(); + sessionServiceMock.isRestore.mockReset(); + sessionServiceMock.isStored.mockReset(); + fetchMock.mockReset(); + }); + + test('infers isRestore from session service state', async () => { + const sessionId = 'sid'; + setup({ + isRestore: true, + sessionId, + }); + + await searchInterceptor.search(mockRequest, { sessionId }).toPromise(); + expect(fetchMock.mock.calls[0][0]).toEqual( + expect.objectContaining({ + options: { sessionId: 'sid', isStored: false, isRestore: true }, + }) + ); + }); + + test('infers isStored from session service state', async () => { + const sessionId = 'sid'; + setup({ + isStored: true, + sessionId, + }); + + await searchInterceptor.search(mockRequest, { sessionId }).toPromise(); + expect(fetchMock.mock.calls[0][0]).toEqual( + expect.objectContaining({ + options: { sessionId: 'sid', isStored: true, isRestore: false }, + }) + ); + }); + + test('skips isRestore & isStore in case not a current session Id', async () => { + setup({ + isStored: true, + isRestore: true, + sessionId: 'session id', + }); + + await searchInterceptor + .search(mockRequest, { sessionId: 'different session id' }) + .toPromise(); + expect(fetchMock.mock.calls[0][0]).toEqual( + expect.objectContaining({ + options: { sessionId: 'different session id', isStored: false, isRestore: false }, + }) + ); + }); + + test('skips isRestore & isStore in case no session Id', async () => { + setup({ + isStored: true, + isRestore: true, + sessionId: undefined, + }); + + await searchInterceptor.search(mockRequest, { sessionId: 'sessionId' }).toPromise(); + expect(fetchMock.mock.calls[0][0]).toEqual( + expect.objectContaining({ + options: { sessionId: 'sessionId', isStored: false, isRestore: false }, + }) + ); + }); }); describe('Should throw typed errors', () => { test('Observable should fail if fetch has an internal error', async () => { const mockResponse: any = new Error('Internal Error'); - mockCoreSetup.http.fetch.mockRejectedValue(mockResponse); + fetchMock.mockRejectedValue(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -121,7 +218,7 @@ describe('SearchInterceptor', () => { message: 'Request timed out', }, }; - mockCoreSetup.http.fetch.mockRejectedValueOnce(mockResponse); + fetchMock.mockRejectedValueOnce(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -137,7 +234,7 @@ describe('SearchInterceptor', () => { message: 'Request timed out', }, }; - mockCoreSetup.http.fetch.mockRejectedValue(mockResponse); + fetchMock.mockRejectedValue(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -158,7 +255,7 @@ describe('SearchInterceptor', () => { message: 'Request timed out', }, }; - mockCoreSetup.http.fetch.mockRejectedValue(mockResponse); + fetchMock.mockRejectedValue(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -179,7 +276,7 @@ describe('SearchInterceptor', () => { message: 'Request timed out', }, }; - mockCoreSetup.http.fetch.mockRejectedValue(mockResponse); + fetchMock.mockRejectedValue(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -212,7 +309,7 @@ describe('SearchInterceptor', () => { }, }, }; - mockCoreSetup.http.fetch.mockRejectedValueOnce(mockResponse); + fetchMock.mockRejectedValueOnce(mockResponse); const mockRequest: IEsSearchRequest = { params: {}, }; @@ -222,7 +319,7 @@ describe('SearchInterceptor', () => { test('Observable should fail if user aborts (test merged signal)', async () => { const abortController = new AbortController(); - mockCoreSetup.http.fetch.mockImplementationOnce((options: any) => { + fetchMock.mockImplementationOnce((options: any) => { return new Promise((resolve, reject) => { options.signal.addEventListener('abort', () => { reject(new AbortError()); @@ -260,7 +357,7 @@ describe('SearchInterceptor', () => { const error = (e: any) => { expect(e).toBeInstanceOf(AbortError); - expect(mockCoreSetup.http.fetch).not.toBeCalled(); + expect(fetchMock).not.toBeCalled(); done(); }; response.subscribe({ error }); diff --git a/src/plugins/data/public/search/search_interceptor.ts b/src/plugins/data/public/search/search_interceptor.ts index 3fadb723b27cd9..8548a2a9f2b2a0 100644 --- a/src/plugins/data/public/search/search_interceptor.ts +++ b/src/plugins/data/public/search/search_interceptor.ts @@ -17,19 +17,14 @@ * under the License. */ -import { get, memoize, trimEnd } from 'lodash'; +import { get, memoize } from 'lodash'; import { BehaviorSubject, throwError, timer, defer, from, Observable, NEVER } from 'rxjs'; import { catchError, finalize } from 'rxjs/operators'; import { PublicMethodsOf } from '@kbn/utility-types'; import { CoreStart, CoreSetup, ToastsSetup } from 'kibana/public'; import { i18n } from '@kbn/i18n'; -import { - IKibanaSearchRequest, - IKibanaSearchResponse, - ISearchOptions, - ES_SEARCH_STRATEGY, - ISessionService, -} from '../../common'; +import { BatchedFunc, BfetchPublicSetup } from 'src/plugins/bfetch/public'; +import { IKibanaSearchRequest, IKibanaSearchResponse, ISearchOptions } from '../../common'; import { SearchUsageCollector } from './collectors'; import { SearchTimeoutError, @@ -42,8 +37,10 @@ import { } from './errors'; import { toMountPoint } from '../../../kibana_react/public'; import { AbortError, getCombinedAbortSignal } from '../../../kibana_utils/public'; +import { ISessionService } from './session'; export interface SearchInterceptorDeps { + bfetch: BfetchPublicSetup; http: CoreSetup['http']; uiSettings: CoreSetup['uiSettings']; startServices: Promise<[CoreStart, any, unknown]>; @@ -69,6 +66,10 @@ export class SearchInterceptor { * @internal */ protected application!: CoreStart['application']; + private batchedFetch!: BatchedFunc< + { request: IKibanaSearchRequest; options: ISearchOptions }, + IKibanaSearchResponse + >; /* * @internal @@ -79,6 +80,10 @@ export class SearchInterceptor { this.deps.startServices.then(([coreStart]) => { this.application = coreStart.application; }); + + this.batchedFetch = deps.bfetch.batchedFunction({ + url: '/internal/bsearch', + }); } /* @@ -93,12 +98,7 @@ export class SearchInterceptor { * @returns `Error` a search service specific error or the original error, if a specific error can't be recognized. * @internal */ - protected handleSearchError( - e: any, - request: IKibanaSearchRequest, - timeoutSignal: AbortSignal, - options?: ISearchOptions - ): Error { + protected handleSearchError(e: any, timeoutSignal: AbortSignal, options?: ISearchOptions): Error { if (timeoutSignal.aborted || get(e, 'body.message') === 'Request timed out') { // Handle a client or a server side timeout const err = new SearchTimeoutError(e, this.getTimeoutMode()); @@ -112,7 +112,7 @@ export class SearchInterceptor { return e; } else if (isEsError(e)) { if (isPainlessError(e)) { - return new PainlessError(e, request); + return new PainlessError(e); } else { return new EsError(e); } @@ -128,24 +128,22 @@ export class SearchInterceptor { request: IKibanaSearchRequest, options?: ISearchOptions ): Promise { - const { id, ...searchRequest } = request; - const path = trimEnd( - `/internal/search/${options?.strategy ?? ES_SEARCH_STRATEGY}/${id ?? ''}`, - '/' - ); - const body = JSON.stringify({ - sessionId: options?.sessionId, - isStored: options?.isStored, - isRestore: options?.isRestore, - ...searchRequest, - }); + const { abortSignal, ...requestOptions } = options || {}; - return this.deps.http.fetch({ - method: 'POST', - path, - body, - signal: options?.abortSignal, - }); + const isCurrentSession = + options?.sessionId && this.deps.session.getSessionId() === options.sessionId; + + return this.batchedFetch( + { + request, + options: { + ...requestOptions, + isStored: isCurrentSession ? this.deps.session.isStored() : false, + isRestore: isCurrentSession ? this.deps.session.isRestore() : false, + }, + }, + abortSignal + ); } /** @@ -166,13 +164,18 @@ export class SearchInterceptor { timeoutController.abort(); }); + const selfAbortController = new AbortController(); + // Get a combined `AbortSignal` that will be aborted whenever the first of the following occurs: // 1. The user manually aborts (via `cancelPending`) // 2. The request times out - // 3. The passed-in signal aborts (e.g. when re-fetching, or whenever the app determines) + // 3. abort() is called on `selfAbortController`. This is used by session service to abort all pending searches that it tracks + // in the current session + // 4. The passed-in signal aborts (e.g. when re-fetching, or whenever the app determines) const signals = [ this.abortController.signal, timeoutSignal, + selfAbortController.signal, ...(abortSignal ? [abortSignal] : []), ]; @@ -190,6 +193,9 @@ export class SearchInterceptor { timeoutSignal, combinedSignal, cleanup, + abort: () => { + selfAbortController.abort(); + }, }; } @@ -244,7 +250,7 @@ export class SearchInterceptor { this.pendingCount$.next(this.pendingCount$.getValue() + 1); return from(this.runSearch(request, { ...options, abortSignal: combinedSignal })).pipe( catchError((e: Error) => { - return throwError(this.handleSearchError(e, request, timeoutSignal, options)); + return throwError(this.handleSearchError(e, timeoutSignal, options)); }), finalize(() => { this.pendingCount$.next(this.pendingCount$.getValue() - 1); diff --git a/src/plugins/data/public/search/search_service.test.ts b/src/plugins/data/public/search/search_service.test.ts index 20041a02067d9f..d617010d13011e 100644 --- a/src/plugins/data/public/search/search_service.test.ts +++ b/src/plugins/data/public/search/search_service.test.ts @@ -21,6 +21,7 @@ import { coreMock } from '../../../../core/public/mocks'; import { CoreSetup, CoreStart } from '../../../../core/public'; import { SearchService, SearchServiceSetupDependencies } from './search_service'; +import { bfetchPluginMock } from '../../../bfetch/public/mocks'; describe('Search service', () => { let searchService: SearchService; @@ -39,13 +40,17 @@ describe('Search service', () => { describe('setup()', () => { it('exposes proper contract', async () => { + const bfetch = bfetchPluginMock.createSetupContract(); const setup = searchService.setup(mockCoreSetup, ({ packageInfo: { version: '8' }, + bfetch, expressions: { registerFunction: jest.fn(), registerType: jest.fn() }, } as unknown) as SearchServiceSetupDependencies); expect(setup).toHaveProperty('aggs'); expect(setup).toHaveProperty('usageCollector'); expect(setup).toHaveProperty('__enhance'); + expect(setup).toHaveProperty('sessionsClient'); + expect(setup).toHaveProperty('session'); }); }); @@ -58,6 +63,8 @@ describe('Search service', () => { expect(start).toHaveProperty('aggs'); expect(start).toHaveProperty('search'); expect(start).toHaveProperty('searchSource'); + expect(start).toHaveProperty('sessionsClient'); + expect(start).toHaveProperty('session'); }); }); }); diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index 96fb3f91ea85fe..1c49de8f0ff4ba 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -17,8 +17,15 @@ * under the License. */ -import { Plugin, CoreSetup, CoreStart, PluginInitializerContext } from 'src/core/public'; +import { + Plugin, + CoreSetup, + CoreStart, + PluginInitializerContext, + StartServicesAccessor, +} from 'src/core/public'; import { BehaviorSubject } from 'rxjs'; +import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; import { ISearchSetup, ISearchStart, SearchEnhancements } from './types'; import { handleResponse } from './fetch'; @@ -27,7 +34,6 @@ import { kibanaContext, kibanaContextFunction, ISearchGeneric, - ISessionService, SearchSourceDependencies, SearchSourceService, } from '../../common/search'; @@ -37,18 +43,20 @@ import { IndexPatternsContract } from '../index_patterns/index_patterns'; import { ISearchInterceptor, SearchInterceptor } from './search_interceptor'; import { SearchUsageCollector, createUsageCollector } from './collectors'; import { UsageCollectionSetup } from '../../../usage_collection/public'; -import { esdsl, esRawResponse } from './expressions'; +import { esdsl, esRawResponse, getEsaggs } from './expressions'; import { ExpressionsSetup } from '../../../expressions/public'; -import { SessionService } from './session_service'; +import { ISessionsClient, ISessionService, SessionsClient, SessionService } from './session'; import { ConfigSchema } from '../../config'; import { SHARD_DELAY_AGG_NAME, getShardDelayBucketAgg, } from '../../common/search/aggs/buckets/shard_delay'; import { aggShardDelay } from '../../common/search/aggs/buckets/shard_delay_fn'; +import { DataPublicPluginStart, DataStartDependencies } from '../types'; /** @internal */ export interface SearchServiceSetupDependencies { + bfetch: BfetchPublicSetup; expressions: ExpressionsSetup; usageCollection?: UsageCollectionSetup; } @@ -65,21 +73,28 @@ export class SearchService implements Plugin { private searchInterceptor!: ISearchInterceptor; private usageCollector?: SearchUsageCollector; private sessionService!: ISessionService; + private sessionsClient!: ISessionsClient; constructor(private initializerContext: PluginInitializerContext) {} public setup( { http, getStartServices, notifications, uiSettings }: CoreSetup, - { expressions, usageCollection }: SearchServiceSetupDependencies + { bfetch, expressions, usageCollection }: SearchServiceSetupDependencies ): ISearchSetup { this.usageCollector = createUsageCollector(getStartServices, usageCollection); - this.sessionService = new SessionService(this.initializerContext, getStartServices); + this.sessionsClient = new SessionsClient({ http }); + this.sessionService = new SessionService( + this.initializerContext, + getStartServices, + this.sessionsClient + ); /** * A global object that intercepts all searches and provides convenience methods for cancelling * all pending search requests, as well as getting the number of pending search requests. */ this.searchInterceptor = new SearchInterceptor({ + bfetch, toasts: notifications.toasts, http, uiSettings, @@ -88,6 +103,11 @@ export class SearchService implements Plugin { session: this.sessionService, }); + expressions.registerFunction( + getEsaggs({ getStartServices } as { + getStartServices: StartServicesAccessor; + }) + ); expressions.registerFunction(kibana); expressions.registerFunction(kibanaContextFunction); expressions.registerType(kibanaContext); @@ -112,6 +132,7 @@ export class SearchService implements Plugin { this.searchInterceptor = enhancements.searchInterceptor; }, session: this.sessionService, + sessionsClient: this.sessionsClient, }; } @@ -143,6 +164,7 @@ export class SearchService implements Plugin { this.searchInterceptor.showError(e); }, session: this.sessionService, + sessionsClient: this.sessionsClient, searchSource: this.searchSourceService.start(indexPatterns, searchSourceDependencies), }; } diff --git a/src/plugins/data/public/search/session/index.ts b/src/plugins/data/public/search/session/index.ts new file mode 100644 index 00000000000000..ee0121aacad5e8 --- /dev/null +++ b/src/plugins/data/public/search/session/index.ts @@ -0,0 +1,22 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export { SessionService, ISessionService, SearchSessionInfoProvider } from './session_service'; +export { SessionState } from './session_state'; +export { SessionsClient, ISessionsClient } from './sessions_client'; diff --git a/src/plugins/data/public/search/session/mocks.ts b/src/plugins/data/public/search/session/mocks.ts new file mode 100644 index 00000000000000..0ff99b3080365a --- /dev/null +++ b/src/plugins/data/public/search/session/mocks.ts @@ -0,0 +1,53 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { BehaviorSubject, Subject } from 'rxjs'; +import { ISessionsClient } from './sessions_client'; +import { ISessionService } from './session_service'; +import { SessionState } from './session_state'; + +export function getSessionsClientMock(): jest.Mocked { + return { + get: jest.fn(), + create: jest.fn(), + find: jest.fn(), + update: jest.fn(), + delete: jest.fn(), + }; +} + +export function getSessionServiceMock(): jest.Mocked { + return { + clear: jest.fn(), + start: jest.fn(), + restore: jest.fn(), + getSessionId: jest.fn(), + getSession$: jest.fn(() => new BehaviorSubject(undefined).asObservable()), + state$: new BehaviorSubject(SessionState.None).asObservable(), + setSearchSessionInfoProvider: jest.fn(), + trackSearch: jest.fn((searchDescriptor) => () => {}), + destroy: jest.fn(), + onRefresh$: new Subject(), + refresh: jest.fn(), + cancel: jest.fn(), + isStored: jest.fn(), + isRestore: jest.fn(), + save: jest.fn(), + }; +} diff --git a/src/plugins/data/public/search/session/session_service.test.ts b/src/plugins/data/public/search/session/session_service.test.ts new file mode 100644 index 00000000000000..83c3185ead63eb --- /dev/null +++ b/src/plugins/data/public/search/session/session_service.test.ts @@ -0,0 +1,96 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SessionService, ISessionService } from './session_service'; +import { coreMock } from '../../../../../core/public/mocks'; +import { take, toArray } from 'rxjs/operators'; +import { getSessionsClientMock } from './mocks'; +import { BehaviorSubject } from 'rxjs'; +import { SessionState } from './session_state'; + +describe('Session service', () => { + let sessionService: ISessionService; + let state$: BehaviorSubject; + + beforeEach(() => { + const initializerContext = coreMock.createPluginInitializerContext(); + sessionService = new SessionService( + initializerContext, + coreMock.createSetup().getStartServices, + getSessionsClientMock(), + { freezeState: false } // needed to use mocks inside state container + ); + state$ = new BehaviorSubject(SessionState.None); + sessionService.state$.subscribe(state$); + }); + + describe('Session management', () => { + it('Creates and clears a session', async () => { + sessionService.start(); + expect(sessionService.getSessionId()).not.toBeUndefined(); + sessionService.clear(); + expect(sessionService.getSessionId()).toBeUndefined(); + }); + + it('Restores a session', async () => { + const sessionId = 'sessionId'; + sessionService.restore(sessionId); + expect(sessionService.getSessionId()).toBe(sessionId); + }); + + it('sessionId$ observable emits current value', async () => { + sessionService.restore('1'); + const emittedValues = sessionService.getSession$().pipe(take(3), toArray()).toPromise(); + sessionService.restore('2'); + sessionService.clear(); + + expect(await emittedValues).toEqual(['1', '2', undefined]); + }); + + it('Tracks searches for current session', () => { + expect(() => sessionService.trackSearch({ abort: () => {} })).toThrowError(); + expect(state$.getValue()).toBe(SessionState.None); + + sessionService.start(); + const untrack1 = sessionService.trackSearch({ abort: () => {} }); + expect(state$.getValue()).toBe(SessionState.Loading); + const untrack2 = sessionService.trackSearch({ abort: () => {} }); + expect(state$.getValue()).toBe(SessionState.Loading); + untrack1(); + expect(state$.getValue()).toBe(SessionState.Loading); + untrack2(); + expect(state$.getValue()).toBe(SessionState.Completed); + }); + + it('Cancels all tracked searches within current session', async () => { + const abort = jest.fn(); + + sessionService.start(); + sessionService.trackSearch({ abort }); + sessionService.trackSearch({ abort }); + sessionService.trackSearch({ abort }); + const untrack = sessionService.trackSearch({ abort }); + + untrack(); + await sessionService.cancel(); + + expect(abort).toBeCalledTimes(3); + }); + }); +}); diff --git a/src/plugins/data/public/search/session/session_service.ts b/src/plugins/data/public/search/session/session_service.ts new file mode 100644 index 00000000000000..ef0b36a33be52e --- /dev/null +++ b/src/plugins/data/public/search/session/session_service.ts @@ -0,0 +1,242 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PublicContract } from '@kbn/utility-types'; +import { distinctUntilChanged, map, startWith } from 'rxjs/operators'; +import { Observable, Subject, Subscription } from 'rxjs'; +import { PluginInitializerContext, StartServicesAccessor } from 'kibana/public'; +import { UrlGeneratorId, UrlGeneratorStateMapping } from '../../../../share/public/'; +import { ConfigSchema } from '../../../config'; +import { createSessionStateContainer, SessionState, SessionStateContainer } from './session_state'; +import { ISessionsClient } from './sessions_client'; + +export type ISessionService = PublicContract; + +export interface TrackSearchDescriptor { + abort: () => void; +} + +/** + * Provide info about current search session to be stored in backgroundSearch saved object + */ +export interface SearchSessionInfoProvider { + /** + * User-facing name of the session. + * e.g. will be displayed in background sessions management list + */ + getName: () => Promise; + getUrlGeneratorData: () => Promise<{ + urlGeneratorId: ID; + initialState: UrlGeneratorStateMapping[ID]['State']; + restoreState: UrlGeneratorStateMapping[ID]['State']; + }>; +} + +/** + * Responsible for tracking a current search session. Supports only a single session at a time. + */ +export class SessionService { + public readonly state$: Observable; + private readonly state: SessionStateContainer; + + private searchSessionInfoProvider?: SearchSessionInfoProvider; + private appChangeSubscription$?: Subscription; + private curApp?: string; + + constructor( + initializerContext: PluginInitializerContext, + getStartServices: StartServicesAccessor, + private readonly sessionsClient: ISessionsClient, + { freezeState = true }: { freezeState: boolean } = { freezeState: true } + ) { + const { stateContainer, sessionState$ } = createSessionStateContainer({ + freeze: freezeState, + }); + this.state$ = sessionState$; + this.state = stateContainer; + + getStartServices().then(([coreStart]) => { + // Apps required to clean up their sessions before unmounting + // Make sure that apps don't leave sessions open. + this.appChangeSubscription$ = coreStart.application.currentAppId$.subscribe((appName) => { + if (this.state.get().sessionId) { + const message = `Application '${this.curApp}' had an open session while navigating`; + if (initializerContext.env.mode.dev) { + // TODO: This setTimeout is necessary due to a race condition while navigating. + setTimeout(() => { + coreStart.fatalErrors.add(message); + }, 100); + } else { + // eslint-disable-next-line no-console + console.warn(message); + this.clear(); + } + } + this.curApp = appName; + }); + }); + } + + /** + * Set a provider of info about current session + * This will be used for creating a background session saved object + * @param searchSessionInfoProvider + */ + public setSearchSessionInfoProvider( + searchSessionInfoProvider: SearchSessionInfoProvider | undefined + ) { + this.searchSessionInfoProvider = searchSessionInfoProvider; + } + + /** + * Used to track pending searches within current session + * + * @param searchDescriptor - uniq object that will be used to untrack the search + * @returns untrack function + */ + public trackSearch(searchDescriptor: TrackSearchDescriptor): () => void { + this.state.transitions.trackSearch(searchDescriptor); + return () => { + this.state.transitions.unTrackSearch(searchDescriptor); + }; + } + + public destroy() { + if (this.appChangeSubscription$) { + this.appChangeSubscription$.unsubscribe(); + } + this.clear(); + } + + /** + * Get current session id + */ + public getSessionId() { + return this.state.get().sessionId; + } + + /** + * Get observable for current session id + */ + public getSession$() { + return this.state.state$.pipe( + startWith(this.state.get()), + map((s) => s.sessionId), + distinctUntilChanged() + ); + } + + /** + * Is current session already saved as SO (send to background) + */ + public isStored() { + return this.state.get().isStored; + } + + /** + * Is restoring the older saved searches + */ + public isRestore() { + return this.state.get().isRestore; + } + + /** + * Start a new search session + * @returns sessionId + */ + public start() { + this.state.transitions.start(); + return this.getSessionId()!; + } + + /** + * Restore previously saved search session + * @param sessionId + */ + public restore(sessionId: string) { + this.state.transitions.restore(sessionId); + } + + /** + * Cleans up current state + */ + public clear() { + this.state.transitions.clear(); + this.setSearchSessionInfoProvider(undefined); + } + + private refresh$ = new Subject(); + /** + * Observable emits when search result refresh was requested + * For example, search to background UI could have it's own "refresh" button + * Application would use this observable to handle user interaction on that button + */ + public onRefresh$ = this.refresh$.asObservable(); + + /** + * Request a search results refresh + */ + public refresh() { + this.refresh$.next(); + } + + /** + * Request a cancellation of on-going search requests within current session + */ + public async cancel(): Promise { + const isStoredSession = this.state.get().isStored; + this.state.get().pendingSearches.forEach((s) => { + s.abort(); + }); + this.state.transitions.cancel(); + if (isStoredSession) { + await this.sessionsClient.delete(this.state.get().sessionId!); + } + } + + /** + * Save current session as SO to get back to results later + * (Send to background) + */ + public async save(): Promise { + const sessionId = this.getSessionId(); + if (!sessionId) throw new Error('No current session'); + if (!this.curApp) throw new Error('No current app id'); + const currentSessionInfoProvider = this.searchSessionInfoProvider; + if (!currentSessionInfoProvider) throw new Error('No info provider for current session'); + const [name, { initialState, restoreState, urlGeneratorId }] = await Promise.all([ + currentSessionInfoProvider.getName(), + currentSessionInfoProvider.getUrlGeneratorData(), + ]); + + await this.sessionsClient.create({ + name, + appId: this.curApp, + restoreState: (restoreState as unknown) as Record, + initialState: (initialState as unknown) as Record, + urlGeneratorId, + sessionId, + }); + + // if we are still interested in this result + if (this.getSessionId() === sessionId) { + this.state.transitions.store(); + } + } +} diff --git a/src/plugins/data/public/search/session/session_state.test.ts b/src/plugins/data/public/search/session/session_state.test.ts new file mode 100644 index 00000000000000..5f709c75bb5d21 --- /dev/null +++ b/src/plugins/data/public/search/session/session_state.test.ts @@ -0,0 +1,124 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { createSessionStateContainer, SessionState } from './session_state'; + +describe('Session state container', () => { + const { stateContainer: state } = createSessionStateContainer(); + + afterEach(() => { + state.transitions.clear(); + }); + + describe('transitions', () => { + test('start', () => { + state.transitions.start(); + expect(state.selectors.getState()).toBe(SessionState.None); + expect(state.get().sessionId).not.toBeUndefined(); + }); + + test('track', () => { + expect(() => state.transitions.trackSearch({})).toThrowError(); + + state.transitions.start(); + state.transitions.trackSearch({}); + + expect(state.selectors.getState()).toBe(SessionState.Loading); + }); + + test('untrack', () => { + state.transitions.start(); + const search = {}; + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Loading); + state.transitions.unTrackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Completed); + }); + + test('clear', () => { + state.transitions.start(); + state.transitions.clear(); + expect(state.selectors.getState()).toBe(SessionState.None); + expect(state.get().sessionId).toBeUndefined(); + }); + + test('cancel', () => { + expect(() => state.transitions.cancel()).toThrowError(); + + state.transitions.start(); + const search = {}; + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Loading); + state.transitions.cancel(); + expect(state.selectors.getState()).toBe(SessionState.Canceled); + state.transitions.clear(); + expect(state.selectors.getState()).toBe(SessionState.None); + }); + + test('store -> completed', () => { + expect(() => state.transitions.store()).toThrowError(); + + state.transitions.start(); + const search = {}; + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Loading); + state.transitions.store(); + expect(state.selectors.getState()).toBe(SessionState.BackgroundLoading); + state.transitions.unTrackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.BackgroundCompleted); + state.transitions.clear(); + expect(state.selectors.getState()).toBe(SessionState.None); + }); + test('store -> cancel', () => { + state.transitions.start(); + const search = {}; + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Loading); + state.transitions.store(); + expect(state.selectors.getState()).toBe(SessionState.BackgroundLoading); + state.transitions.cancel(); + expect(state.selectors.getState()).toBe(SessionState.Canceled); + + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.Canceled); + + state.transitions.start(); + expect(state.selectors.getState()).toBe(SessionState.None); + }); + + test('restore', () => { + const id = 'id'; + state.transitions.restore(id); + expect(state.selectors.getState()).toBe(SessionState.None); + const search = {}; + state.transitions.trackSearch(search); + expect(state.selectors.getState()).toBe(SessionState.BackgroundLoading); + state.transitions.unTrackSearch(search); + + expect(state.selectors.getState()).toBe(SessionState.Restored); + expect(() => state.transitions.store()).toThrowError(); + expect(state.selectors.getState()).toBe(SessionState.Restored); + expect(() => state.transitions.cancel()).toThrowError(); + expect(state.selectors.getState()).toBe(SessionState.Restored); + + state.transitions.start(); + expect(state.selectors.getState()).toBe(SessionState.None); + }); + }); +}); diff --git a/src/plugins/data/public/search/session/session_state.ts b/src/plugins/data/public/search/session/session_state.ts new file mode 100644 index 00000000000000..087417263e5bf0 --- /dev/null +++ b/src/plugins/data/public/search/session/session_state.ts @@ -0,0 +1,234 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import uuid from 'uuid'; +import { Observable } from 'rxjs'; +import { distinctUntilChanged, map, shareReplay } from 'rxjs/operators'; +import { createStateContainer, StateContainer } from '../../../../kibana_utils/public'; + +/** + * Possible state that current session can be in + * + * @public + */ +export enum SessionState { + /** + * Session is not active, e.g. didn't start + */ + None = 'none', + + /** + * Pending search request has not been sent to the background yet + */ + Loading = 'loading', + + /** + * No action was taken and the page completed loading without background session creation. + */ + Completed = 'completed', + + /** + * Search request was sent to the background. + * The page is loading in background. + */ + BackgroundLoading = 'backgroundLoading', + + /** + * Page load completed with background session created. + */ + BackgroundCompleted = 'backgroundCompleted', + + /** + * Revisiting the page after background completion + */ + Restored = 'restored', + + /** + * Current session requests where explicitly canceled by user + * Displaying none or partial results + */ + Canceled = 'canceled', +} + +/** + * Internal state of SessionService + * {@link SessionState} is inferred from this state + * + * @private + */ +export interface SessionStateInternal { + /** + * Current session Id + * Empty means there is no current active session. + */ + sessionId?: string; + + /** + * Has the session already been stored (i.e. "sent to background")? + */ + isStored: boolean; + + /** + * Is this session a restored session (have these requests already been made, and we're just + * looking to re-use the previous search IDs)? + */ + isRestore: boolean; + + /** + * Set of currently running searches + * within a session and any info associated with them + */ + pendingSearches: SearchDescriptor[]; + + /** + * There was at least a single search in this session + */ + isStarted: boolean; + + /** + * If user has explicitly canceled search requests + */ + isCanceled: boolean; +} + +const createSessionDefaultState: < + SearchDescriptor = unknown +>() => SessionStateInternal = () => ({ + sessionId: undefined, + isStored: false, + isRestore: false, + isCanceled: false, + isStarted: false, + pendingSearches: [], +}); + +export interface SessionPureTransitions< + SearchDescriptor = unknown, + S = SessionStateInternal +> { + start: (state: S) => () => S; + restore: (state: S) => (sessionId: string) => S; + clear: (state: S) => () => S; + store: (state: S) => () => S; + trackSearch: (state: S) => (search: SearchDescriptor) => S; + unTrackSearch: (state: S) => (search: SearchDescriptor) => S; + cancel: (state: S) => () => S; +} + +export const sessionPureTransitions: SessionPureTransitions = { + start: (state) => () => ({ ...createSessionDefaultState(), sessionId: uuid.v4() }), + restore: (state) => (sessionId: string) => ({ + ...createSessionDefaultState(), + sessionId, + isRestore: true, + isStored: true, + }), + clear: (state) => () => createSessionDefaultState(), + store: (state) => () => { + if (!state.sessionId) throw new Error("Can't store session. Missing sessionId"); + if (state.isStored || state.isRestore) + throw new Error('Can\'t store because current session is already stored"'); + return { + ...state, + isStored: true, + }; + }, + trackSearch: (state) => (search) => { + if (!state.sessionId) throw new Error("Can't track search. Missing sessionId"); + return { + ...state, + isStarted: true, + pendingSearches: state.pendingSearches.concat(search), + }; + }, + unTrackSearch: (state) => (search) => { + return { + ...state, + pendingSearches: state.pendingSearches.filter((s) => s !== search), + }; + }, + cancel: (state) => () => { + if (!state.sessionId) throw new Error("Can't cancel searches. Missing sessionId"); + if (state.isRestore) throw new Error("Can't cancel searches when restoring older searches"); + return { + ...state, + pendingSearches: [], + isCanceled: true, + isStored: false, + }; + }, +}; + +export interface SessionPureSelectors< + SearchDescriptor = unknown, + S = SessionStateInternal +> { + getState: (state: S) => () => SessionState; +} + +export const sessionPureSelectors: SessionPureSelectors = { + getState: (state) => () => { + if (!state.sessionId) return SessionState.None; + if (!state.isStarted) return SessionState.None; + if (state.isCanceled) return SessionState.Canceled; + switch (true) { + case state.isRestore: + return state.pendingSearches.length > 0 + ? SessionState.BackgroundLoading + : SessionState.Restored; + case state.isStored: + return state.pendingSearches.length > 0 + ? SessionState.BackgroundLoading + : SessionState.BackgroundCompleted; + default: + return state.pendingSearches.length > 0 ? SessionState.Loading : SessionState.Completed; + } + return SessionState.None; + }, +}; + +export type SessionStateContainer = StateContainer< + SessionStateInternal, + SessionPureTransitions, + SessionPureSelectors +>; + +export const createSessionStateContainer = ( + { freeze = true }: { freeze: boolean } = { freeze: true } +): { + stateContainer: SessionStateContainer; + sessionState$: Observable; +} => { + const stateContainer = createStateContainer( + createSessionDefaultState(), + sessionPureTransitions, + sessionPureSelectors, + freeze ? undefined : { freeze: (s) => s } + ) as SessionStateContainer; + + const sessionState$: Observable = stateContainer.state$.pipe( + map(() => stateContainer.selectors.getState()), + distinctUntilChanged(), + shareReplay(1) + ); + return { + stateContainer, + sessionState$, + }; +}; diff --git a/src/plugins/data/public/search/session/sessions_client.ts b/src/plugins/data/public/search/session/sessions_client.ts new file mode 100644 index 00000000000000..38be647a37c7ac --- /dev/null +++ b/src/plugins/data/public/search/session/sessions_client.ts @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { PublicContract } from '@kbn/utility-types'; +import { HttpSetup, SavedObjectsFindOptions } from 'kibana/public'; +import type { SavedObject, SavedObjectsFindResponse } from 'kibana/server'; + +export type ISessionsClient = PublicContract; +export interface SessionsClientDeps { + http: HttpSetup; +} + +/** + * CRUD backgroundSession SO + */ +export class SessionsClient { + private readonly http: HttpSetup; + + constructor(deps: SessionsClientDeps) { + this.http = deps.http; + } + + public get(sessionId: string): Promise { + return this.http.get(`/internal/session/${encodeURIComponent(sessionId)}`); + } + + public create({ + name, + appId, + urlGeneratorId, + initialState, + restoreState, + sessionId, + }: { + name: string; + appId: string; + initialState: Record; + restoreState: Record; + urlGeneratorId: string; + sessionId: string; + }): Promise { + return this.http.post(`/internal/session`, { + body: JSON.stringify({ + name, + initialState, + restoreState, + sessionId, + appId, + urlGeneratorId, + }), + }); + } + + public find(options: SavedObjectsFindOptions): Promise { + return this.http!.post(`/internal/session`, { + body: JSON.stringify(options), + }); + } + + public update(sessionId: string, attributes: unknown): Promise { + return this.http!.put(`/internal/session/${encodeURIComponent(sessionId)}`, { + body: JSON.stringify(attributes), + }); + } + + public delete(sessionId: string): Promise { + return this.http!.delete(`/internal/session/${encodeURIComponent(sessionId)}`); + } +} diff --git a/src/plugins/data/public/search/session_service.test.ts b/src/plugins/data/public/search/session_service.test.ts deleted file mode 100644 index bcfd06944d9831..00000000000000 --- a/src/plugins/data/public/search/session_service.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { SessionService } from './session_service'; -import { ISessionService } from '../../common'; -import { coreMock } from '../../../../core/public/mocks'; -import { take, toArray } from 'rxjs/operators'; - -describe('Session service', () => { - let sessionService: ISessionService; - - beforeEach(() => { - const initializerContext = coreMock.createPluginInitializerContext(); - sessionService = new SessionService( - initializerContext, - coreMock.createSetup().getStartServices - ); - }); - - describe('Session management', () => { - it('Creates and clears a session', async () => { - sessionService.start(); - expect(sessionService.getSessionId()).not.toBeUndefined(); - sessionService.clear(); - expect(sessionService.getSessionId()).toBeUndefined(); - }); - - it('Restores a session', async () => { - const sessionId = 'sessionId'; - sessionService.restore(sessionId); - expect(sessionService.getSessionId()).toBe(sessionId); - }); - - it('sessionId$ observable emits current value', async () => { - sessionService.restore('1'); - const emittedValues = sessionService.getSession$().pipe(take(3), toArray()).toPromise(); - sessionService.restore('2'); - sessionService.clear(); - - expect(await emittedValues).toEqual(['1', '2', undefined]); - }); - }); -}); diff --git a/src/plugins/data/public/search/session_service.ts b/src/plugins/data/public/search/session_service.ts deleted file mode 100644 index 0141cff258a9f2..00000000000000 --- a/src/plugins/data/public/search/session_service.ts +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import uuid from 'uuid'; -import { BehaviorSubject, Subscription } from 'rxjs'; -import { HttpStart, PluginInitializerContext, StartServicesAccessor } from 'kibana/public'; -import { ConfigSchema } from '../../config'; -import { - ISessionService, - BackgroundSessionSavedObjectAttributes, - SearchSessionFindOptions, -} from '../../common'; - -export class SessionService implements ISessionService { - private session$ = new BehaviorSubject(undefined); - private get sessionId() { - return this.session$.getValue(); - } - private appChangeSubscription$?: Subscription; - private curApp?: string; - private http!: HttpStart; - - /** - * Has the session already been stored (i.e. "sent to background")? - */ - private _isStored: boolean = false; - - /** - * Is this session a restored session (have these requests already been made, and we're just - * looking to re-use the previous search IDs)? - */ - private _isRestore: boolean = false; - - constructor( - initializerContext: PluginInitializerContext, - getStartServices: StartServicesAccessor - ) { - /* - Make sure that apps don't leave sessions open. - */ - getStartServices().then(([coreStart]) => { - this.http = coreStart.http; - - this.appChangeSubscription$ = coreStart.application.currentAppId$.subscribe((appName) => { - if (this.sessionId) { - const message = `Application '${this.curApp}' had an open session while navigating`; - if (initializerContext.env.mode.dev) { - // TODO: This setTimeout is necessary due to a race condition while navigating. - setTimeout(() => { - coreStart.fatalErrors.add(message); - }, 100); - } else { - // eslint-disable-next-line no-console - console.warn(message); - } - } - this.curApp = appName; - }); - }); - } - - public destroy() { - this.appChangeSubscription$?.unsubscribe(); - } - - public getSessionId() { - return this.sessionId; - } - - public getSession$() { - return this.session$.asObservable(); - } - - public isStored() { - return this._isStored; - } - - public isRestore() { - return this._isRestore; - } - - public start() { - this._isStored = false; - this._isRestore = false; - this.session$.next(uuid.v4()); - return this.sessionId!; - } - - public restore(sessionId: string) { - this._isStored = true; - this._isRestore = true; - this.session$.next(sessionId); - return this.http.get(`/internal/session/${encodeURIComponent(sessionId)}`); - } - - public clear() { - this._isStored = false; - this._isRestore = false; - this.session$.next(undefined); - } - - public async save(name: string, url: string) { - const response = await this.http.post(`/internal/session`, { - body: JSON.stringify({ - name, - url, - sessionId: this.sessionId, - }), - }); - this._isStored = true; - return response; - } - - public get(sessionId: string) { - return this.http.get(`/internal/session/${encodeURIComponent(sessionId)}`); - } - - public find(options: SearchSessionFindOptions) { - return this.http.post(`/internal/session`, { - body: JSON.stringify(options), - }); - } - - public update(sessionId: string, attributes: Partial) { - return this.http.put(`/internal/session/${encodeURIComponent(sessionId)}`, { - body: JSON.stringify(attributes), - }); - } - - public delete(sessionId: string) { - return this.http.delete(`/internal/session/${encodeURIComponent(sessionId)}`); - } -} diff --git a/src/plugins/data/public/search/types.ts b/src/plugins/data/public/search/types.ts index c08d9f4c7be3f6..057b242c22f20a 100644 --- a/src/plugins/data/public/search/types.ts +++ b/src/plugins/data/public/search/types.ts @@ -21,9 +21,10 @@ import { PackageInfo } from 'kibana/server'; import { ISearchInterceptor } from './search_interceptor'; import { SearchUsageCollector } from './collectors'; import { AggsSetup, AggsSetupDependencies, AggsStartDependencies, AggsStart } from './aggs'; -import { ISearchGeneric, ISessionService, ISearchStartSearchSource } from '../../common/search'; +import { ISearchGeneric, ISearchStartSearchSource } from '../../common/search'; import { IndexPatternsContract } from '../../common/index_patterns/index_patterns'; import { UsageCollectionSetup } from '../../../usage_collection/public'; +import { ISessionsClient, ISessionService } from './session'; export { ISearchStartSearchSource }; @@ -39,10 +40,15 @@ export interface ISearchSetup { aggs: AggsSetup; usageCollector?: SearchUsageCollector; /** - * session management + * Current session management * {@link ISessionService} */ session: ISessionService; + /** + * Background search sessions SO CRUD + * {@link ISessionsClient} + */ + sessionsClient: ISessionsClient; /** * @internal */ @@ -73,10 +79,15 @@ export interface ISearchStart { */ searchSource: ISearchStartSearchSource; /** - * session management + * Current session management * {@link ISessionService} */ session: ISessionService; + /** + * Background search sessions SO CRUD + * {@link ISessionsClient} + */ + sessionsClient: ISessionsClient; } export { SEARCH_EVENT_TYPE } from './collectors'; diff --git a/src/plugins/data/public/types.ts b/src/plugins/data/public/types.ts index 21a03a49fe058b..4082fbe55094ce 100644 --- a/src/plugins/data/public/types.ts +++ b/src/plugins/data/public/types.ts @@ -19,6 +19,7 @@ import React from 'react'; import { CoreStart } from 'src/core/public'; +import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { ExpressionsSetup } from 'src/plugins/expressions/public'; import { UiActionsSetup, UiActionsStart } from 'src/plugins/ui_actions/public'; @@ -36,6 +37,7 @@ export interface DataPublicPluginEnhancements { } export interface DataSetupDependencies { + bfetch: BfetchPublicSetup; expressions: ExpressionsSetup; uiActions: UiActionsSetup; usageCollection?: UsageCollectionSetup; diff --git a/src/plugins/data/public/ui/filter_bar/filter_bar.tsx b/src/plugins/data/public/ui/filter_bar/filter_bar.tsx index 194e253fd7b26c..bc710637b8f842 100644 --- a/src/plugins/data/public/ui/filter_bar/filter_bar.tsx +++ b/src/plugins/data/public/ui/filter_bar/filter_bar.tsx @@ -22,7 +22,7 @@ import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n/react'; import classNames from 'classnames'; import React, { useState } from 'react'; -import { METRIC_TYPE, UiStatsMetricType } from '@kbn/analytics'; +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; import { FilterEditor } from './filter_editor'; import { FILTER_EDITOR_WIDTH, FilterItem } from './filter_item'; import { FilterOptions } from './filter_options'; @@ -48,7 +48,7 @@ interface Props { intl: InjectedIntl; appName: string; // Track UI Metrics - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } function FilterBarUI(props: Props) { @@ -110,7 +110,6 @@ function FilterBarUI(props: Props) { closePopover={() => setIsAddFilterPopoverOpen(false)} anchorPosition="downLeft" panelPaddingSize="none" - ownFocus={true} initialFocus=".filterEditor__hiddenItem" repositionOnScroll > diff --git a/src/plugins/data/public/ui/index_pattern_select/create_index_pattern_select.tsx b/src/plugins/data/public/ui/index_pattern_select/create_index_pattern_select.tsx index a48c2dabf15067..11cf8edee5aaec 100644 --- a/src/plugins/data/public/ui/index_pattern_select/create_index_pattern_select.tsx +++ b/src/plugins/data/public/ui/index_pattern_select/create_index_pattern_select.tsx @@ -20,12 +20,12 @@ import _ from 'lodash'; import React from 'react'; -import { SavedObjectsClientContract } from 'src/core/public'; +import { IndexPatternsContract } from 'src/plugins/data/public'; import { IndexPatternSelect, IndexPatternSelectProps } from './'; // Takes in stateful runtime dependencies and pre-wires them to the component -export function createIndexPatternSelect(savedObjectsClient: SavedObjectsClientContract) { +export function createIndexPatternSelect(indexPatternService: IndexPatternsContract) { return (props: IndexPatternSelectProps) => ( - + ); } diff --git a/src/plugins/data/public/ui/index_pattern_select/index_pattern_select.tsx b/src/plugins/data/public/ui/index_pattern_select/index_pattern_select.tsx index 1e0e8934778add..2388f3d7a504b6 100644 --- a/src/plugins/data/public/ui/index_pattern_select/index_pattern_select.tsx +++ b/src/plugins/data/public/ui/index_pattern_select/index_pattern_select.tsx @@ -23,8 +23,7 @@ import React, { Component } from 'react'; import { Required } from '@kbn/utility-types'; import { EuiComboBox, EuiComboBoxProps } from '@elastic/eui'; -import { SavedObjectsClientContract, SimpleSavedObject } from 'src/core/public'; -import { getTitle } from '../../../common/index_patterns/lib'; +import { IndexPatternsContract } from 'src/plugins/data/public'; export type IndexPatternSelectProps = Required< Omit< @@ -40,7 +39,7 @@ export type IndexPatternSelectProps = Required< }; export type IndexPatternSelectInternalProps = IndexPatternSelectProps & { - savedObjectsClient: SavedObjectsClientContract; + indexPatternService: IndexPatternsContract; }; interface IndexPatternSelectState { @@ -50,21 +49,6 @@ interface IndexPatternSelectState { searchValue: string | undefined; } -const getIndexPatterns = async ( - client: SavedObjectsClientContract, - search: string, - fields: string[] -) => { - const resp = await client.find({ - type: 'index-pattern', - fields, - search: `${search}*`, - searchFields: ['title'], - perPage: 100, - }); - return resp.savedObjects; -}; - // Needed for React.lazy // eslint-disable-next-line import/no-default-export export default class IndexPatternSelect extends Component { @@ -109,7 +93,8 @@ export default class IndexPatternSelect extends Component { - const { fieldTypes, onNoIndexPatterns, savedObjectsClient } = this.props; - - const savedObjectFields = ['title']; - if (fieldTypes) { - savedObjectFields.push('fields'); - } - let savedObjects = await getIndexPatterns(savedObjectsClient, searchValue, savedObjectFields); - - if (fieldTypes) { - savedObjects = savedObjects.filter((savedObject: SimpleSavedObject) => { - try { - const indexPatternFields = JSON.parse(savedObject.attributes.fields as any); - return indexPatternFields.some((field: any) => { - return fieldTypes?.includes(field.type); - }); - } catch (err) { - // Unable to parse fields JSON, invalid index pattern - return false; - } - }); - } + const { fieldTypes, onNoIndexPatterns, indexPatternService } = this.props; + const indexPatterns = await indexPatternService.find(`${searchValue}*`, 100); - if (!this.isMounted) { + // We need this check to handle the case where search results come back in a different + // order than they were sent out. Only load results for the most recent search. + if (searchValue !== this.state.searchValue || !this.isMounted) { return; } - // We need this check to handle the case where search results come back in a different - // order than they were sent out. Only load results for the most recent search. - if (searchValue === this.state.searchValue) { - const options = savedObjects.map((indexPatternSavedObject: SimpleSavedObject) => { + const options = indexPatterns + .filter((indexPattern) => { + return fieldTypes + ? indexPattern.fields.some((field) => { + return fieldTypes.includes(field.type); + }) + : true; + }) + .map((indexPattern) => { return { - label: indexPatternSavedObject.attributes.title, - value: indexPatternSavedObject.id, + label: indexPattern.title, + value: indexPattern.id, }; }); - this.setState({ - isLoading: false, - options, - }); + this.setState({ + isLoading: false, + options, + }); - if (onNoIndexPatterns && searchValue === '' && options.length === 0) { - onNoIndexPatterns(); - } + if (onNoIndexPatterns && searchValue === '' && options.length === 0) { + onNoIndexPatterns(); } }, 300); @@ -195,7 +167,7 @@ export default class IndexPatternSelect extends Component `"${string}"`).join(' | '); - const indexPatternsFromSavedObjects = await savedObjectsClient.find({ - type: 'index-pattern', - fields: ['title', 'fields'], - search: searchString, - searchFields: ['title'], - }); - const exactMatches = indexPatternsFromSavedObjects.savedObjects.filter((savedObject) => { - return indexPatternStrings.includes(savedObject.attributes.title); - }); - - const defaultIndex = uiSettings.get('defaultIndex'); + const exactMatches = (await indexPatternsService.find(searchString)).filter((ip) => + indexPatternStrings.includes(ip.title) + ); const allMatches = exactMatches.length === indexPatternStrings.length ? exactMatches - : [ - ...exactMatches, - await savedObjectsClient.get('index-pattern', defaultIndex), - ]; + : [...exactMatches, await indexPatternsService.getDefault()]; - return allMatches.map(indexPatterns.getFromSavedObject); + return allMatches; } diff --git a/src/plugins/data/public/ui/query_string_input/language_switcher.tsx b/src/plugins/data/public/ui/query_string_input/language_switcher.tsx index 3957e59388acf5..63bf47671a84af 100644 --- a/src/plugins/data/public/ui/query_string_input/language_switcher.tsx +++ b/src/plugins/data/public/ui/query_string_input/language_switcher.tsx @@ -71,7 +71,6 @@ export function QueryLanguageSwitcher(props: Props) { { expect(mockCallback).toHaveBeenCalledWith({ query: '', language: 'lucene' }); }); + it('Should not show the language switcher when disabled', () => { + const component = mount( + wrapQueryStringInputInContext({ + query: luceneQuery, + onSubmit: noop, + indexPatterns: [stubIndexPatternWithFields], + disableLanguageSwitcher: true, + }) + ); + expect(component.find(QueryLanguageSwitcher).exists()).toBeFalsy(); + }); + + it('Should show an icon when an iconType is specified', () => { + const component = mount( + wrapQueryStringInputInContext({ + query: luceneQuery, + onSubmit: noop, + indexPatterns: [stubIndexPatternWithFields], + iconType: 'search', + }) + ); + expect(component.find(EuiIcon).exists()).toBeTruthy(); + }); + it('Should call onSubmit when the user hits enter inside the query bar', () => { const mockCallback = jest.fn(); @@ -255,20 +279,16 @@ describe('QueryStringInput', () => { }); it('Should accept index pattern strings and fetch the full object', () => { + const patternStrings = ['logstash-*']; mockFetchIndexPatterns.mockClear(); mount( wrapQueryStringInputInContext({ query: kqlQuery, onSubmit: noop, - indexPatterns: ['logstash-*'], + indexPatterns: patternStrings, disableAutoFocus: true, }) ); - - expect(mockFetchIndexPatterns).toHaveBeenCalledWith( - startMock.savedObjects.client, - ['logstash-*'], - startMock.uiSettings - ); + expect(mockFetchIndexPatterns.mock.calls[0][1]).toStrictEqual(patternStrings); }); }); diff --git a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx index bc9e2ed6a83ceb..ad6c60550c01e2 100644 --- a/src/plugins/data/public/ui/query_string_input/query_string_input.tsx +++ b/src/plugins/data/public/ui/query_string_input/query_string_input.tsx @@ -31,6 +31,7 @@ import { EuiLink, htmlIdGenerator, EuiPortal, + EuiIcon, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -55,6 +56,7 @@ export interface QueryStringInputProps { persistedLog?: PersistedLog; bubbleSubmitEvent?: boolean; placeholder?: string; + disableLanguageSwitcher?: boolean; languageSwitcherPopoverAnchorPosition?: PopoverAnchorPosition; onBlur?: () => void; onChange?: (query: Query) => void; @@ -64,6 +66,7 @@ export interface QueryStringInputProps { size?: SuggestionsListSize; className?: string; isInvalid?: boolean; + iconType?: string; } interface Props extends QueryStringInputProps { @@ -135,9 +138,8 @@ export default class QueryStringInputUI extends Component { const currentAbortController = this.fetchIndexPatternsAbortController; const objectPatternsFromStrings = (await fetchIndexPatterns( - this.services.savedObjects!.client, - stringPatterns, - this.services.uiSettings! + this.services.data.indexPatterns, + stringPatterns )) as IIndexPattern[]; if (!currentAbortController.signal.aborted) { @@ -608,13 +610,17 @@ export default class QueryStringInputUI extends Component { 'aria-owns': 'kbnTypeahead__items', }; const ariaCombobox = { ...isSuggestionsVisible, role: 'combobox' }; - const className = classNames( + const containerClassName = classNames( 'euiFormControlLayout euiFormControlLayout--group kbnQueryBar__wrap', this.props.className ); + const inputClassName = classNames( + 'kbnQueryBar__textarea', + this.props.iconType ? 'kbnQueryBar__textarea--withIcon' : null + ); return ( -
+
{this.props.prepend}
{ onClick={this.onClickInput} onBlur={this.onInputBlur} onFocus={this.handleOnFocus} - className="kbnQueryBar__textarea" + className={inputClassName} fullWidth rows={1} id={this.textareaId} @@ -678,6 +684,15 @@ export default class QueryStringInputUI extends Component { > {this.getQueryString()} + {this.props.iconType ? ( +
+
+ ) : null}
{
- - + {this.props.disableLanguageSwitcher ? null : ( + + )}
); } diff --git a/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx b/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx index 8582f4a12fa388..536a79899c5eeb 100644 --- a/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx +++ b/src/plugins/data/public/ui/saved_query_management/saved_query_management_component.tsx @@ -206,7 +206,6 @@ export function SavedQueryManagementComponent({ anchorPosition="downLeft" panelPaddingSize="none" buffer={-8} - ownFocus repositionOnScroll >
; storage: IStorageWrapper; - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } export type StatefulSearchBarProps = SearchBarOwnProps & { diff --git a/src/plugins/data/public/ui/search_bar/search_bar.tsx b/src/plugins/data/public/ui/search_bar/search_bar.tsx index e77f58f572f33e..95b7f5911846c6 100644 --- a/src/plugins/data/public/ui/search_bar/search_bar.tsx +++ b/src/plugins/data/public/ui/search_bar/search_bar.tsx @@ -24,7 +24,7 @@ import React, { Component } from 'react'; import ResizeObserver from 'resize-observer-polyfill'; import { get, isEqual } from 'lodash'; -import { METRIC_TYPE, UiStatsMetricType } from '@kbn/analytics'; +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; import { withKibana, KibanaReactContextValue } from '../../../../kibana_react/public'; import QueryBarTopRow from '../query_string_input/query_bar_top_row'; @@ -80,7 +80,7 @@ export interface SearchBarOwnProps { onRefresh?: (payload: { dateRange: TimeRange }) => void; indicateNoData?: boolean; // Track UI Metrics - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } export type SearchBarProps = SearchBarOwnProps & SearchBarInjectedDeps; diff --git a/src/plugins/data/public/ui/typeahead/constants.ts b/src/plugins/data/public/ui/typeahead/constants.ts index 0e28891a14535e..8a3e5206d5d5e3 100644 --- a/src/plugins/data/public/ui/typeahead/constants.ts +++ b/src/plugins/data/public/ui/typeahead/constants.ts @@ -33,4 +33,4 @@ export const SUGGESTIONS_LIST_REQUIRED_BOTTOM_SPACE = 250; * A distance in px to display suggestions list right under the query input without a gap * @public */ -export const SUGGESTIONS_LIST_REQUIRED_TOP_OFFSET = 1; +export const SUGGESTIONS_LIST_REQUIRED_TOP_OFFSET = 0; diff --git a/src/plugins/data/server/index.ts b/src/plugins/data/server/index.ts index e24869f5237ead..9c483de95df46d 100644 --- a/src/plugins/data/server/index.ts +++ b/src/plugins/data/server/index.ts @@ -49,6 +49,16 @@ export const esFilters = { isFilterDisabled, }; +/** + * Exporters (CSV) + */ + +import { datatableToCSV, CSV_MIME_TYPE } from '../common'; +export const exporters = { + datatableToCSV, + CSV_MIME_TYPE, +}; + /* * esQuery and esKuery: */ @@ -146,7 +156,6 @@ export { IndexPatternAttributes, UI_SETTINGS, IndexPattern, - IEsRawSearchResponse, } from '../common'; /** @@ -179,13 +188,7 @@ import { // tabify tabifyAggResponse, tabifyGetColumns, - // search - toSnakeCase, - shimAbortSignal, - doSearch, - includeTotalLoaded, - toKibanaSearchResponse, - getTotalLoaded, + calcAutoIntervalLessThan, } from '../common'; export { @@ -232,27 +235,19 @@ export { SearchStrategyDependencies, getDefaultSearchParams, getShardTimeout, + getTotalLoaded, + toKibanaSearchResponse, shimHitsTotal, usageProvider, + searchUsageObserver, + shimAbortSignal, SearchUsage, + SessionService, + ISessionService, } from './search'; -import { trackSearchStatus } from './search'; - // Search namespace export const search = { - esSearch: { - utils: { - doSearch, - shimAbortSignal, - trackSearchStatus, - includeTotalLoaded, - toKibanaSearchResponse, - // utils: - getTotalLoaded, - toSnakeCase, - }, - }, aggs: { CidrMask, dateHistogramInterval, @@ -272,6 +267,7 @@ export const search = { siblingPipelineType, termsAggFilter, toAbsoluteDates, + calcAutoIntervalLessThan, }, getRequestInspectorStats, getResponseInspectorStats, @@ -321,4 +317,4 @@ export const config: PluginConfigDescriptor = { schema: configSchema, }; -export type { IndexPatternsService } from './index_patterns'; +export type { IndexPatternsServiceProvider as IndexPatternsService } from './index_patterns'; diff --git a/src/plugins/data/server/index_patterns/error.ts b/src/plugins/data/server/index_patterns/error.ts new file mode 100644 index 00000000000000..3e369d3275d9a7 --- /dev/null +++ b/src/plugins/data/server/index_patterns/error.ts @@ -0,0 +1,36 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* eslint-disable max-classes-per-file */ + +export class ErrorIndexPatternNotFound extends Error { + public readonly is404 = true; + + constructor(message: string) { + super(message); + + Object.setPrototypeOf(this, ErrorIndexPatternNotFound.prototype); + } +} + +export class ErrorIndexPatternFieldNotFound extends ErrorIndexPatternNotFound { + constructor(indexPatternId: string, fieldName: string) { + super(`Field [index_pattern = ${indexPatternId}, field = ${fieldName}] not found.`); + } +} diff --git a/src/plugins/data/server/index_patterns/expressions/index.ts b/src/plugins/data/server/index_patterns/expressions/index.ts new file mode 100644 index 00000000000000..fa37e3b216ac96 --- /dev/null +++ b/src/plugins/data/server/index_patterns/expressions/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export * from './load_index_pattern'; diff --git a/src/plugins/data/server/index_patterns/expressions/load_index_pattern.test.ts b/src/plugins/data/server/index_patterns/expressions/load_index_pattern.test.ts new file mode 100644 index 00000000000000..944bd06d648911 --- /dev/null +++ b/src/plugins/data/server/index_patterns/expressions/load_index_pattern.test.ts @@ -0,0 +1,55 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IndexPatternLoadStartDependencies } from '../../../common/index_patterns/expressions'; +import { getFunctionDefinition } from './load_index_pattern'; + +describe('indexPattern expression function', () => { + let getStartDependencies: () => Promise; + + beforeEach(() => { + getStartDependencies = jest.fn().mockResolvedValue({ + indexPatterns: { + get: (id: string) => ({ + toSpec: () => ({ + title: 'value', + }), + }), + }, + }); + }); + + test('returns serialized index pattern', async () => { + const indexPatternDefinition = getFunctionDefinition({ getStartDependencies }); + const result = await indexPatternDefinition().fn(null, { id: '1' }, { + getKibanaRequest: () => ({}), + } as any); + expect(result.type).toEqual('index_pattern'); + expect(result.value.title).toEqual('value'); + }); + + test('throws if getKibanaRequest is not available', async () => { + const indexPatternDefinition = getFunctionDefinition({ getStartDependencies }); + expect(async () => { + await indexPatternDefinition().fn(null, { id: '1' }, {} as any); + }).rejects.toThrowErrorMatchingInlineSnapshot( + `"A KibanaRequest is required to execute this search on the server. Please provide a request object to the expression execution params."` + ); + }); +}); diff --git a/src/plugins/data/server/index_patterns/expressions/load_index_pattern.ts b/src/plugins/data/server/index_patterns/expressions/load_index_pattern.ts new file mode 100644 index 00000000000000..8cf8492f77a3f7 --- /dev/null +++ b/src/plugins/data/server/index_patterns/expressions/load_index_pattern.ts @@ -0,0 +1,100 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { i18n } from '@kbn/i18n'; +import { KibanaRequest, StartServicesAccessor } from 'src/core/server'; + +import { + getIndexPatternLoadMeta, + IndexPatternLoadExpressionFunctionDefinition, + IndexPatternLoadStartDependencies, +} from '../../../common/index_patterns/expressions'; +import { DataPluginStartDependencies, DataPluginStart } from '../../plugin'; + +/** + * Returns the expression function definition. Any stateful dependencies are accessed + * at runtime via the `getStartDependencies` param, which provides the specific services + * needed for this function to run. + * + * This function is an implementation detail of this module, and is exported separately + * only for testing purposes. + * + * @param getStartDependencies - async function that resolves with IndexPatternLoadStartDependencies + * + * @internal + */ +export function getFunctionDefinition({ + getStartDependencies, +}: { + getStartDependencies: (req: KibanaRequest) => Promise; +}) { + return (): IndexPatternLoadExpressionFunctionDefinition => ({ + ...getIndexPatternLoadMeta(), + async fn(input, args, { getKibanaRequest }) { + const kibanaRequest = getKibanaRequest ? getKibanaRequest() : null; + if (!kibanaRequest) { + throw new Error( + i18n.translate('data.indexPatterns.indexPatternLoad.error.kibanaRequest', { + defaultMessage: + 'A KibanaRequest is required to execute this search on the server. ' + + 'Please provide a request object to the expression execution params.', + }) + ); + } + + const { indexPatterns } = await getStartDependencies(kibanaRequest); + + const indexPattern = await indexPatterns.get(args.id); + + return { type: 'index_pattern', value: indexPattern.toSpec() }; + }, + }); +} + +/** + * This is some glue code that takes in `core.getStartServices`, extracts the dependencies + * needed for this function, and wraps them behind a `getStartDependencies` function that + * is then called at runtime. + * + * We do this so that we can be explicit about exactly which dependencies the function + * requires, without cluttering up the top-level `plugin.ts` with this logic. It also + * makes testing the expression function a bit easier since `getStartDependencies` is + * the only thing you should need to mock. + * + * @param getStartServices - core's StartServicesAccessor for this plugin + * + * @internal + */ +export function getIndexPatternLoad({ + getStartServices, +}: { + getStartServices: StartServicesAccessor; +}) { + return getFunctionDefinition({ + getStartDependencies: async (request: KibanaRequest) => { + const [{ elasticsearch, savedObjects }, , { indexPatterns }] = await getStartServices(); + return { + indexPatterns: await indexPatterns.indexPatternsServiceFactory( + savedObjects.getScopedClient(request), + elasticsearch.client.asScoped(request).asCurrentUser + ), + }; + }, + }); +} diff --git a/src/plugins/data/server/index_patterns/index.ts b/src/plugins/data/server/index_patterns/index.ts index 3305b1bb9a92f1..b5bcd7cf5c4836 100644 --- a/src/plugins/data/server/index_patterns/index.ts +++ b/src/plugins/data/server/index_patterns/index.ts @@ -24,4 +24,4 @@ export { mergeCapabilitiesWithFields, getCapabilitiesForRollupIndices, } from './fetcher'; -export { IndexPatternsService, IndexPatternsServiceStart } from './index_patterns_service'; +export { IndexPatternsServiceProvider, IndexPatternsServiceStart } from './index_patterns_service'; diff --git a/src/plugins/data/server/index_patterns/index_patterns_service.ts b/src/plugins/data/server/index_patterns/index_patterns_service.ts index af2d4d6a73e0f8..0893fc787e5262 100644 --- a/src/plugins/data/server/index_patterns/index_patterns_service.ts +++ b/src/plugins/data/server/index_patterns/index_patterns_service.ts @@ -25,11 +25,14 @@ import { SavedObjectsClientContract, ElasticsearchClient, } from 'kibana/server'; +import { ExpressionsServerSetup } from 'src/plugins/expressions/server'; +import { DataPluginStartDependencies, DataPluginStart } from '../plugin'; import { registerRoutes } from './routes'; import { indexPatternSavedObjectType } from '../saved_objects'; import { capabilitiesProvider } from './capabilities_provider'; import { IndexPatternsService as IndexPatternsCommonService } from '../../common/index_patterns'; import { FieldFormatsStart } from '../field_formats'; +import { getIndexPatternLoad } from './expressions'; import { UiSettingsServerToCommon } from './ui_settings_wrapper'; import { IndexPatternsApiServer } from './index_patterns_api_client'; import { SavedObjectsClientServerToCommon } from './saved_objects_client_wrapper'; @@ -41,17 +44,26 @@ export interface IndexPatternsServiceStart { ) => Promise; } +export interface IndexPatternsServiceSetupDeps { + expressions: ExpressionsServerSetup; +} + export interface IndexPatternsServiceStartDeps { fieldFormats: FieldFormatsStart; logger: Logger; } -export class IndexPatternsService implements Plugin { - public setup(core: CoreSetup) { +export class IndexPatternsServiceProvider implements Plugin { + public setup( + core: CoreSetup, + { expressions }: IndexPatternsServiceSetupDeps + ) { core.savedObjects.registerType(indexPatternSavedObjectType); core.capabilities.registerProvider(capabilitiesProvider); - registerRoutes(core.http); + registerRoutes(core.http, core.getStartServices); + + expressions.registerFunction(getIndexPatternLoad({ getStartServices: core.getStartServices })); } public start(core: CoreStart, { fieldFormats, logger }: IndexPatternsServiceStartDeps) { diff --git a/src/plugins/data/server/index_patterns/routes.ts b/src/plugins/data/server/index_patterns/routes.ts index f8af52954fc61e..e9dbc2e972c688 100644 --- a/src/plugins/data/server/index_patterns/routes.ts +++ b/src/plugins/data/server/index_patterns/routes.ts @@ -18,10 +18,24 @@ */ import { schema } from '@kbn/config-schema'; -import { HttpServiceSetup, RequestHandlerContext } from 'kibana/server'; +import { HttpServiceSetup, RequestHandlerContext, StartServicesAccessor } from 'kibana/server'; import { IndexPatternsFetcher } from './fetcher'; +import { registerCreateIndexPatternRoute } from './routes/create_index_pattern'; +import { registerGetIndexPatternRoute } from './routes/get_index_pattern'; +import { registerDeleteIndexPatternRoute } from './routes/delete_index_pattern'; +import { registerUpdateIndexPatternRoute } from './routes/update_index_pattern'; +import { registerUpdateFieldsRoute } from './routes/fields/update_fields'; +import { registerCreateScriptedFieldRoute } from './routes/scripted_fields/create_scripted_field'; +import { registerPutScriptedFieldRoute } from './routes/scripted_fields/put_scripted_field'; +import { registerGetScriptedFieldRoute } from './routes/scripted_fields/get_scripted_field'; +import { registerDeleteScriptedFieldRoute } from './routes/scripted_fields/delete_scripted_field'; +import { registerUpdateScriptedFieldRoute } from './routes/scripted_fields/update_scripted_field'; +import type { DataPluginStart, DataPluginStartDependencies } from '../plugin'; -export function registerRoutes(http: HttpServiceSetup) { +export function registerRoutes( + http: HttpServiceSetup, + getStartServices: StartServicesAccessor +) { const parseMetaFields = (metaFields: string | string[]) => { let parsedFields: string[] = []; if (typeof metaFields === 'string') { @@ -33,6 +47,23 @@ export function registerRoutes(http: HttpServiceSetup) { }; const router = http.createRouter(); + + // Index Patterns API + registerCreateIndexPatternRoute(router, getStartServices); + registerGetIndexPatternRoute(router, getStartServices); + registerDeleteIndexPatternRoute(router, getStartServices); + registerUpdateIndexPatternRoute(router, getStartServices); + + // Fields API + registerUpdateFieldsRoute(router, getStartServices); + + // Scripted Field API + registerCreateScriptedFieldRoute(router, getStartServices); + registerPutScriptedFieldRoute(router, getStartServices); + registerGetScriptedFieldRoute(router, getStartServices); + registerDeleteScriptedFieldRoute(router, getStartServices); + registerUpdateScriptedFieldRoute(router, getStartServices); + router.get( { path: '/api/index_patterns/_fields_for_wildcard', diff --git a/src/plugins/data/server/index_patterns/routes/create_index_pattern.ts b/src/plugins/data/server/index_patterns/routes/create_index_pattern.ts new file mode 100644 index 00000000000000..57a745b19748da --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/create_index_pattern.ts @@ -0,0 +1,97 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { IndexPatternSpec } from 'src/plugins/data/common'; +import { handleErrors } from './util/handle_errors'; +import { fieldSpecSchema, serializedFieldFormatSchema } from './util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../plugin'; + +const indexPatternSpecSchema = schema.object({ + title: schema.string(), + + id: schema.maybe(schema.string()), + version: schema.maybe(schema.string()), + type: schema.maybe(schema.string()), + timeFieldName: schema.maybe(schema.string()), + sourceFilters: schema.maybe( + schema.arrayOf( + schema.object({ + value: schema.string(), + }) + ) + ), + fields: schema.maybe(schema.recordOf(schema.string(), fieldSpecSchema)), + typeMeta: schema.maybe(schema.object({}, { unknowns: 'allow' })), + fieldFormats: schema.maybe(schema.recordOf(schema.string(), serializedFieldFormatSchema)), + fieldAttrs: schema.maybe( + schema.recordOf( + schema.string(), + schema.object({ + customLabel: schema.maybe(schema.string()), + count: schema.maybe(schema.number()), + }) + ) + ), +}); + +export const registerCreateIndexPatternRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.post( + { + path: '/api/index_patterns/index_pattern', + validate: { + body: schema.object({ + override: schema.maybe(schema.boolean({ defaultValue: false })), + refresh_fields: schema.maybe(schema.boolean({ defaultValue: false })), + index_pattern: indexPatternSpecSchema, + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const body = req.body; + const indexPattern = await indexPatternsService.createAndSave( + body.index_pattern as IndexPatternSpec, + body.override, + !body.refresh_fields + ); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/delete_index_pattern.ts b/src/plugins/data/server/index_patterns/routes/delete_index_pattern.ts new file mode 100644 index 00000000000000..c73718342355fb --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/delete_index_pattern.ts @@ -0,0 +1,65 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from './util/handle_errors'; +import { IRouter, StartServicesAccessor } from '../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../plugin'; + +export const registerDeleteIndexPatternRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.delete( + { + path: '/api/index_patterns/index_pattern/{id}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + + await indexPatternsService.delete(id); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/fields/update_fields.ts b/src/plugins/data/server/index_patterns/routes/fields/update_fields.ts new file mode 100644 index 00000000000000..4dd9046e70ad10 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/fields/update_fields.ts @@ -0,0 +1,125 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from '../util/handle_errors'; +import { serializedFieldFormatSchema } from '../util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerUpdateFieldsRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.post( + { + path: '/api/index_patterns/index_pattern/{id}/fields', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + body: schema.object({ + fields: schema.recordOf( + schema.string({ + minLength: 1, + maxLength: 1_000, + }), + schema.object({ + customLabel: schema.maybe( + schema.nullable( + schema.string({ + minLength: 1, + maxLength: 1_000, + }) + ) + ), + count: schema.maybe(schema.nullable(schema.number())), + format: schema.maybe(schema.nullable(serializedFieldFormatSchema)), + }) + ), + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const { fields } = req.body; + const fieldNames = Object.keys(fields); + + if (fieldNames.length < 1) { + throw new Error('No fields provided.'); + } + + const indexPattern = await indexPatternsService.get(id); + + let changeCount = 0; + for (const fieldName of fieldNames) { + const field = fields[fieldName]; + + if (field.customLabel !== undefined) { + changeCount++; + indexPattern.setFieldCustomLabel(fieldName, field.customLabel); + } + + if (field.count !== undefined) { + changeCount++; + indexPattern.setFieldCount(fieldName, field.count); + } + + if (field.format !== undefined) { + changeCount++; + if (field.format) { + indexPattern.setFieldFormat(fieldName, field.format); + } else { + indexPattern.deleteFieldFormat(fieldName); + } + } + } + + if (changeCount < 1) { + throw new Error('Change set is empty.'); + } + + await indexPatternsService.updateSavedObject(indexPattern); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/get_index_pattern.ts b/src/plugins/data/server/index_patterns/routes/get_index_pattern.ts new file mode 100644 index 00000000000000..5f7825e9cff90a --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/get_index_pattern.ts @@ -0,0 +1,67 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from './util/handle_errors'; +import { IRouter, StartServicesAccessor } from '../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../plugin'; + +export const registerGetIndexPatternRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.get( + { + path: '/api/index_patterns/index_pattern/{id}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const indexPattern = await indexPatternsService.get(id); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/scripted_fields/create_scripted_field.ts b/src/plugins/data/server/index_patterns/routes/scripted_fields/create_scripted_field.ts new file mode 100644 index 00000000000000..23a293d5d91412 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/scripted_fields/create_scripted_field.ts @@ -0,0 +1,93 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from '../util/handle_errors'; +import { fieldSpecSchema } from '../util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerCreateScriptedFieldRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.post( + { + path: '/api/index_patterns/index_pattern/{id}/scripted_field', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + body: schema.object({ + field: fieldSpecSchema, + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const { field } = req.body; + + if (!field.scripted) { + throw new Error('Only scripted fields can be created.'); + } + + const indexPattern = await indexPatternsService.get(id); + + if (indexPattern.fields.getByName(field.name)) { + throw new Error(`Field [name = ${field.name}] already exists.`); + } + + indexPattern.fields.add({ + ...field, + aggregatable: true, + searchable: true, + }); + + await indexPatternsService.updateSavedObject(indexPattern); + + const fieldObject = indexPattern.fields.getByName(field.name); + if (!fieldObject) throw new Error(`Could not create a field [name = ${field.name}].`); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + field: fieldObject.toSpec(), + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/scripted_fields/delete_scripted_field.ts b/src/plugins/data/server/index_patterns/routes/scripted_fields/delete_scripted_field.ts new file mode 100644 index 00000000000000..453ad1fdc16ed0 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/scripted_fields/delete_scripted_field.ts @@ -0,0 +1,84 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { ErrorIndexPatternFieldNotFound } from '../../error'; +import { handleErrors } from '../util/handle_errors'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerDeleteScriptedFieldRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.delete( + { + path: '/api/index_patterns/index_pattern/{id}/scripted_field/{name}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + name: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const name = req.params.name; + + const indexPattern = await indexPatternsService.get(id); + const field = indexPattern.fields.getByName(name); + + if (!field) { + throw new ErrorIndexPatternFieldNotFound(id, name); + } + + if (!field.scripted) { + throw new Error('Only scripted fields can be deleted.'); + } + + indexPattern.fields.remove(field); + + await indexPatternsService.updateSavedObject(indexPattern); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/scripted_fields/get_scripted_field.ts b/src/plugins/data/server/index_patterns/routes/scripted_fields/get_scripted_field.ts new file mode 100644 index 00000000000000..35b0e673a7e569 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/scripted_fields/get_scripted_field.ts @@ -0,0 +1,83 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { ErrorIndexPatternFieldNotFound } from '../../error'; +import { handleErrors } from '../util/handle_errors'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerGetScriptedFieldRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.get( + { + path: '/api/index_patterns/index_pattern/{id}/scripted_field/{name}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + name: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const name = req.params.name; + + const indexPattern = await indexPatternsService.get(id); + const field = indexPattern.fields.getByName(name); + + if (!field) { + throw new ErrorIndexPatternFieldNotFound(id, name); + } + + if (!field.scripted) { + throw new Error('Only scripted fields can be retrieved.'); + } + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + field: field.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/scripted_fields/put_scripted_field.ts b/src/plugins/data/server/index_patterns/routes/scripted_fields/put_scripted_field.ts new file mode 100644 index 00000000000000..a789affab3579c --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/scripted_fields/put_scripted_field.ts @@ -0,0 +1,94 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from '../util/handle_errors'; +import { fieldSpecSchema } from '../util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerPutScriptedFieldRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.put( + { + path: '/api/index_patterns/index_pattern/{id}/scripted_field', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + body: schema.object({ + field: fieldSpecSchema, + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const { field } = req.body; + + if (!field.scripted) { + throw new Error('Only scripted fields can be put.'); + } + + const indexPattern = await indexPatternsService.get(id); + + const oldFieldObject = indexPattern.fields.getByName(field.name); + if (!!oldFieldObject) { + indexPattern.fields.remove(oldFieldObject); + } + + indexPattern.fields.add({ + ...field, + aggregatable: true, + searchable: true, + }); + + await indexPatternsService.updateSavedObject(indexPattern); + + const fieldObject = indexPattern.fields.getByName(field.name); + if (!fieldObject) throw new Error(`Could not create a field [name = ${field.name}].`); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + field: fieldObject.toSpec(), + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/scripted_fields/update_scripted_field.ts b/src/plugins/data/server/index_patterns/routes/scripted_fields/update_scripted_field.ts new file mode 100644 index 00000000000000..9b937aafd6aa72 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/scripted_fields/update_scripted_field.ts @@ -0,0 +1,118 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { FieldSpec } from 'src/plugins/data/common'; +import { ErrorIndexPatternFieldNotFound } from '../../error'; +import { handleErrors } from '../util/handle_errors'; +import { fieldSpecSchemaFields } from '../util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../../plugin'; + +export const registerUpdateScriptedFieldRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.post( + { + path: '/api/index_patterns/index_pattern/{id}/scripted_field/{name}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + name: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + body: schema.object({ + field: schema.object({ + ...fieldSpecSchemaFields, + + // We need to overwrite the below fields on top of `fieldSpecSchemaFields`, + // because `name` field must not appear here and other below fields + // should be possible to not provide `schema.maybe()` instead of + // them being required with a default value in `fieldSpecSchemaFields`. + name: schema.never(), + type: schema.maybe( + schema.string({ + maxLength: 1_000, + }) + ), + searchable: schema.maybe(schema.boolean()), + aggregatable: schema.maybe(schema.boolean()), + }), + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + const name = req.params.name; + const field = ({ ...req.body.field, name } as unknown) as FieldSpec; + + const indexPattern = await indexPatternsService.get(id); + let fieldObject = indexPattern.fields.getByName(field.name); + + if (!fieldObject) { + throw new ErrorIndexPatternFieldNotFound(id, name); + } + + if (!fieldObject.scripted) { + throw new Error('Only scripted fields can be updated.'); + } + + const oldSpec = fieldObject.toSpec(); + + indexPattern.fields.remove(fieldObject); + indexPattern.fields.add({ + ...oldSpec, + ...field, + }); + + await indexPatternsService.updateSavedObject(indexPattern); + + fieldObject = indexPattern.fields.getByName(field.name); + if (!fieldObject) throw new Error(`Could not create a field [name = ${field.name}].`); + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + field: fieldObject.toSpec(), + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/update_index_pattern.ts b/src/plugins/data/server/index_patterns/routes/update_index_pattern.ts new file mode 100644 index 00000000000000..10567544af6ea2 --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/update_index_pattern.ts @@ -0,0 +1,165 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { handleErrors } from './util/handle_errors'; +import { fieldSpecSchema, serializedFieldFormatSchema } from './util/schemas'; +import { IRouter, StartServicesAccessor } from '../../../../../core/server'; +import type { DataPluginStart, DataPluginStartDependencies } from '../../plugin'; + +const indexPatternUpdateSchema = schema.object({ + title: schema.maybe(schema.string()), + type: schema.maybe(schema.string()), + typeMeta: schema.maybe(schema.object({}, { unknowns: 'allow' })), + timeFieldName: schema.maybe(schema.string()), + intervalName: schema.maybe(schema.string()), + sourceFilters: schema.maybe( + schema.arrayOf( + schema.object({ + value: schema.string(), + }) + ) + ), + fieldFormats: schema.maybe(schema.recordOf(schema.string(), serializedFieldFormatSchema)), + fields: schema.maybe(schema.recordOf(schema.string(), fieldSpecSchema)), +}); + +export const registerUpdateIndexPatternRoute = ( + router: IRouter, + getStartServices: StartServicesAccessor +) => { + router.post( + { + path: '/api/index_patterns/index_pattern/{id}', + validate: { + params: schema.object( + { + id: schema.string({ + minLength: 1, + maxLength: 1_000, + }), + }, + { unknowns: 'allow' } + ), + body: schema.object({ + refresh_fields: schema.maybe(schema.boolean({ defaultValue: false })), + index_pattern: indexPatternUpdateSchema, + }), + }, + }, + router.handleLegacyErrors( + handleErrors(async (ctx, req, res) => { + const savedObjectsClient = ctx.core.savedObjects.client; + const elasticsearchClient = ctx.core.elasticsearch.client.asCurrentUser; + const [, , { indexPatterns }] = await getStartServices(); + const indexPatternsService = await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + elasticsearchClient + ); + const id = req.params.id; + + const indexPattern = await indexPatternsService.get(id); + + const { + // eslint-disable-next-line @typescript-eslint/naming-convention + refresh_fields = true, + index_pattern: { + title, + timeFieldName, + intervalName, + sourceFilters, + fieldFormats, + type, + typeMeta, + fields, + }, + } = req.body; + + let changeCount = 0; + let doRefreshFields = false; + + if (title !== undefined && title !== indexPattern.title) { + changeCount++; + indexPattern.title = title; + } + + if (timeFieldName !== undefined && timeFieldName !== indexPattern.timeFieldName) { + changeCount++; + indexPattern.timeFieldName = timeFieldName; + } + + if (intervalName !== undefined && intervalName !== indexPattern.intervalName) { + changeCount++; + indexPattern.intervalName = intervalName; + } + + if (sourceFilters !== undefined) { + changeCount++; + indexPattern.sourceFilters = sourceFilters; + } + + if (fieldFormats !== undefined) { + changeCount++; + indexPattern.fieldFormatMap = fieldFormats; + } + + if (type !== undefined) { + changeCount++; + indexPattern.type = type; + } + + if (typeMeta !== undefined) { + changeCount++; + indexPattern.typeMeta = typeMeta; + } + + if (fields !== undefined) { + changeCount++; + doRefreshFields = true; + indexPattern.fields.replaceAll( + Object.values(fields || {}).map((field) => ({ + ...field, + aggregatable: true, + searchable: true, + })) + ); + } + + if (changeCount < 1) { + throw new Error('Index pattern change set is empty.'); + } + + await indexPatternsService.updateSavedObject(indexPattern); + + if (doRefreshFields && refresh_fields) { + await indexPatternsService.refreshFields(indexPattern); + } + + return res.ok({ + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + index_pattern: indexPattern.toSpec(), + }), + }); + }) + ) + ); +}; diff --git a/src/plugins/data/server/index_patterns/routes/util/handle_errors.ts b/src/plugins/data/server/index_patterns/routes/util/handle_errors.ts new file mode 100644 index 00000000000000..01b8fefb5fab7a --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/util/handle_errors.ts @@ -0,0 +1,80 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { RequestHandler, RouteMethod } from 'src/core/server'; +import { ErrorIndexPatternNotFound } from '../../error'; + +interface ErrorResponseBody { + message: string; + attributes?: object; +} + +interface ErrorWithData { + data?: object; +} + +/** + * This higher order request handler makes sure that errors are returned with + * body formatted in the following shape: + * + * ```json + * { + * "message": "...", + * "attributes": {} + * } + * ``` + */ +export const handleErrors = ( + handler: RequestHandler +): RequestHandler => async (context, request, response) => { + try { + return await handler(context, request, response); + } catch (error) { + if (error instanceof Error) { + const body: ErrorResponseBody = { + message: error.message, + }; + + if (typeof (error as ErrorWithData).data === 'object') { + body.attributes = (error as ErrorWithData).data; + } + + const is404 = + (error as ErrorIndexPatternNotFound).is404 || (error as any)?.output?.statusCode === 404; + + if (is404) { + return response.notFound({ + headers: { + 'content-type': 'application/json', + }, + body, + }); + } + + return response.badRequest({ + headers: { + 'content-type': 'application/json', + }, + body, + }); + } + + throw error; + } +}; diff --git a/src/plugins/data/server/index_patterns/routes/util/schemas.ts b/src/plugins/data/server/index_patterns/routes/util/schemas.ts new file mode 100644 index 00000000000000..08b99c727b4a5f --- /dev/null +++ b/src/plugins/data/server/index_patterns/routes/util/schemas.ts @@ -0,0 +1,66 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; + +export const serializedFieldFormatSchema = schema.object({ + id: schema.maybe(schema.string()), + params: schema.maybe(schema.any()), +}); + +export const fieldSpecSchemaFields = { + name: schema.string({ + maxLength: 1_000, + }), + type: schema.string({ + defaultValue: 'string', + maxLength: 1_000, + }), + count: schema.maybe( + schema.number({ + min: 0, + }) + ), + script: schema.maybe( + schema.string({ + maxLength: 1_000_000, + }) + ), + format: schema.maybe(serializedFieldFormatSchema), + esTypes: schema.maybe(schema.arrayOf(schema.string())), + scripted: schema.maybe(schema.boolean()), + subType: schema.maybe( + schema.object({ + multi: schema.maybe( + schema.object({ + parent: schema.string(), + }) + ), + nested: schema.maybe( + schema.object({ + path: schema.string(), + }) + ), + }) + ), + customLabel: schema.maybe(schema.string()), + shortDotsEnable: schema.maybe(schema.boolean()), +}; + +export const fieldSpecSchema = schema.object(fieldSpecSchemaFields); diff --git a/src/plugins/data/server/kql_telemetry/route.ts b/src/plugins/data/server/kql_telemetry/route.ts index efcb3d038bcc65..c93500f360ad07 100644 --- a/src/plugins/data/server/kql_telemetry/route.ts +++ b/src/plugins/data/server/kql_telemetry/route.ts @@ -45,7 +45,7 @@ export function registerKqlTelemetryRoute( const counterName = optIn ? 'optInCount' : 'optOutCount'; try { - await internalRepository.incrementCounter('kql-telemetry', 'kql-telemetry', counterName); + await internalRepository.incrementCounter('kql-telemetry', 'kql-telemetry', [counterName]); } catch (error) { logger.warn(`Unable to increment counter: ${error}`); return response.customError({ diff --git a/src/plugins/data/server/plugin.ts b/src/plugins/data/server/plugin.ts index 3ec4e7e64e382f..f5efdad856e08f 100644 --- a/src/plugins/data/server/plugin.ts +++ b/src/plugins/data/server/plugin.ts @@ -17,10 +17,11 @@ * under the License. */ -import { PluginInitializerContext, CoreSetup, CoreStart, Plugin, Logger } from 'src/core/server'; +import { CoreSetup, CoreStart, Logger, Plugin, PluginInitializerContext } from 'src/core/server'; import { ExpressionsServerSetup } from 'src/plugins/expressions/server'; +import { BfetchServerSetup } from 'src/plugins/bfetch/server'; import { ConfigSchema } from '../config'; -import { IndexPatternsService, IndexPatternsServiceStart } from './index_patterns'; +import { IndexPatternsServiceProvider, IndexPatternsServiceStart } from './index_patterns'; import { ISearchSetup, ISearchStart, SearchEnhancements } from './search'; import { SearchService } from './search/search_service'; import { QueryService } from './query/query_service'; @@ -51,6 +52,7 @@ export interface DataPluginStart { } export interface DataPluginSetupDependencies { + bfetch: BfetchServerSetup; expressions: ExpressionsServerSetup; usageCollection?: UsageCollectionSetup; } @@ -70,7 +72,7 @@ export class DataServerPlugin private readonly scriptsService: ScriptsService; private readonly kqlTelemetryService: KqlTelemetryService; private readonly autocompleteService: AutocompleteService; - private readonly indexPatterns = new IndexPatternsService(); + private readonly indexPatterns = new IndexPatternsServiceProvider(); private readonly fieldFormats = new FieldFormatsService(); private readonly queryService = new QueryService(); private readonly logger: Logger; @@ -85,17 +87,18 @@ export class DataServerPlugin public setup( core: CoreSetup, - { expressions, usageCollection }: DataPluginSetupDependencies + { bfetch, expressions, usageCollection }: DataPluginSetupDependencies ) { - this.indexPatterns.setup(core); this.scriptsService.setup(core); this.queryService.setup(core); this.autocompleteService.setup(core); this.kqlTelemetryService.setup(core, { usageCollection }); + this.indexPatterns.setup(core, { expressions }); core.uiSettings.register(getUiSettings()); const searchSetup = this.searchService.setup(core, { + bfetch, expressions, usageCollection, }); diff --git a/src/plugins/data/server/saved_objects/background_session.ts b/src/plugins/data/server/saved_objects/background_session.ts deleted file mode 100644 index 74b03c4d867e40..00000000000000 --- a/src/plugins/data/server/saved_objects/background_session.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { SavedObjectsType } from 'kibana/server'; - -export const BACKGROUND_SESSION_TYPE = 'background-session'; - -export const backgroundSessionMapping: SavedObjectsType = { - name: BACKGROUND_SESSION_TYPE, - namespaceType: 'single', - hidden: true, - mappings: { - properties: { - name: { - type: 'keyword', - }, - created: { - type: 'date', - }, - expires: { - type: 'date', - }, - status: { - type: 'keyword', - }, - initialState: { - type: 'object', - enabled: false, - }, - restoreState: { - type: 'object', - enabled: false, - }, - idMapping: { - type: 'object', - enabled: false, - }, - }, - }, -}; diff --git a/src/plugins/data/server/saved_objects/index.ts b/src/plugins/data/server/saved_objects/index.ts index 7cd4d319e64171..077f9380823d08 100644 --- a/src/plugins/data/server/saved_objects/index.ts +++ b/src/plugins/data/server/saved_objects/index.ts @@ -20,4 +20,3 @@ export { querySavedObjectType } from './query'; export { indexPatternSavedObjectType } from './index_patterns'; export { kqlTelemetry } from './kql_telemetry'; export { searchTelemetry } from './search_telemetry'; -export { BACKGROUND_SESSION_TYPE, backgroundSessionMapping } from './background_session'; diff --git a/src/plugins/data/server/search/collectors/index.ts b/src/plugins/data/server/search/collectors/index.ts index 417dc1c2012d37..8ad6501d505eb1 100644 --- a/src/plugins/data/server/search/collectors/index.ts +++ b/src/plugins/data/server/search/collectors/index.ts @@ -17,4 +17,5 @@ * under the License. */ -export { usageProvider, SearchUsage } from './usage'; +export type { SearchUsage } from './usage'; +export { usageProvider, searchUsageObserver } from './usage'; diff --git a/src/plugins/data/server/search/collectors/usage.ts b/src/plugins/data/server/search/collectors/usage.ts index e1be92aa13c37f..948175a41cb6bf 100644 --- a/src/plugins/data/server/search/collectors/usage.ts +++ b/src/plugins/data/server/search/collectors/usage.ts @@ -17,8 +17,9 @@ * under the License. */ -import { CoreSetup } from 'kibana/server'; -import { Usage } from './register'; +import type { CoreSetup, Logger } from 'kibana/server'; +import type { IEsSearchResponse } from '../../../common'; +import type { Usage } from './register'; const SAVED_OBJECT_ID = 'search-telemetry'; @@ -74,3 +75,19 @@ export function usageProvider(core: CoreSetup): SearchUsage { trackSuccess: getTracker('successCount'), }; } + +/** + * Rxjs observer for easily doing `tap(searchUsageObserver(logger, usage))` in an rxjs chain. + */ +export function searchUsageObserver(logger: Logger, usage?: SearchUsage) { + return { + next(response: IEsSearchResponse) { + logger.debug(`trackSearchStatus:next ${response.rawResponse.took}`); + usage?.trackSuccess(response.rawResponse.took); + }, + error() { + logger.debug(`trackSearchStatus:error`); + usage?.trackError(); + }, + }; +} diff --git a/src/plugins/data/server/search/es_search/es_search_rxjs_utils.ts b/src/plugins/data/server/search/es_search/es_search_rxjs_utils.ts deleted file mode 100644 index 3ba2f9c4b26988..00000000000000 --- a/src/plugins/data/server/search/es_search/es_search_rxjs_utils.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { pipe } from 'rxjs'; -import { tap } from 'rxjs/operators'; - -import type { Logger, SearchResponse } from 'kibana/server'; -import type { SearchUsage } from '../collectors'; -import type { IEsSearchResponse, IKibanaSearchResponse } from '../../../common/search'; - -/** - * trackSearchStatus is a custom rxjs operator that can be used to track the progress of a search. - * @param Logger - * @param SearchUsage - */ -export const trackSearchStatus = < - KibanaResponse extends IKibanaSearchResponse = IEsSearchResponse> ->( - logger: Logger, - usage?: SearchUsage -) => { - return pipe( - tap( - (response: KibanaResponse) => { - const trackSuccessData = response.rawResponse.took; - - if (trackSuccessData !== undefined) { - logger.debug(`trackSearchStatus:next ${trackSuccessData}`); - usage?.trackSuccess(trackSuccessData); - } - }, - (err: any) => { - logger.debug(`trackSearchStatus:error ${err}`); - usage?.trackError(); - } - ) - ); -}; diff --git a/src/plugins/data/server/search/es_search/es_search_strategy.ts b/src/plugins/data/server/search/es_search/es_search_strategy.ts index 3e2d415eac16f7..620df9c8edcb06 100644 --- a/src/plugins/data/server/search/es_search/es_search_strategy.ts +++ b/src/plugins/data/server/search/es_search/es_search_strategy.ts @@ -16,20 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -import { Observable } from 'rxjs'; -import { first } from 'rxjs/operators'; - -import type { Logger } from 'kibana/server'; -import type { ApiResponse } from '@elastic/elasticsearch'; -import type { SharedGlobalConfig } from 'kibana/server'; - -import { doSearch, includeTotalLoaded, toKibanaSearchResponse, toSnakeCase } from '../../../common'; -import { trackSearchStatus } from './es_search_rxjs_utils'; -import { getDefaultSearchParams, getShardTimeout } from '../es_search'; - +import { from, Observable } from 'rxjs'; +import { first, tap } from 'rxjs/operators'; +import type { SearchResponse } from 'elasticsearch'; +import type { Logger, SharedGlobalConfig } from 'kibana/server'; import type { ISearchStrategy } from '../types'; -import type { SearchUsage } from '../collectors/usage'; -import type { IEsRawSearchResponse } from '../../../common'; +import type { SearchUsage } from '../collectors'; +import { getDefaultSearchParams, getShardTimeout, shimAbortSignal } from './request_utils'; +import { toKibanaSearchResponse } from './response_utils'; +import { searchUsageObserver } from '../collectors/usage'; export const esSearchStrategyProvider = ( config$: Observable, @@ -43,19 +38,18 @@ export const esSearchStrategyProvider = ( throw new Error(`Unsupported index pattern type ${request.indexType}`); } - return doSearch>(async () => { + const search = async () => { const config = await config$.pipe(first()).toPromise(); - const params = toSnakeCase({ + const params = { ...(await getDefaultSearchParams(uiSettingsClient)), ...getShardTimeout(config), ...request.params, - }); + }; + const promise = esClient.asCurrentUser.search>(params); + const { body } = await shimAbortSignal(promise, abortSignal); + return toKibanaSearchResponse(body); + }; - return esClient.asCurrentUser.search(params); - }, abortSignal).pipe( - toKibanaSearchResponse(), - trackSearchStatus(logger, usage), - includeTotalLoaded() - ); + return from(search()).pipe(tap(searchUsageObserver(logger, usage))); }, }); diff --git a/src/plugins/data/server/search/es_search/get_default_search_params.ts b/src/plugins/data/server/search/es_search/get_default_search_params.ts deleted file mode 100644 index a01b0885abf3b4..00000000000000 --- a/src/plugins/data/server/search/es_search/get_default_search_params.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { UI_SETTINGS } from '../../../common/constants'; -import type { SharedGlobalConfig, IUiSettingsClient } from '../../../../../core/server'; - -export function getShardTimeout(config: SharedGlobalConfig) { - const timeout = config.elasticsearch.shardTimeout.asMilliseconds(); - return timeout - ? { - timeout: `${timeout}ms`, - } - : {}; -} - -export async function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient) { - const maxConcurrentShardRequests = await uiSettingsClient.get( - UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS - ); - return { - maxConcurrentShardRequests: - maxConcurrentShardRequests > 0 ? maxConcurrentShardRequests : undefined, - ignoreUnavailable: true, // Don't fail if the index/indices don't exist - trackTotalHits: true, - }; -} diff --git a/src/plugins/data/server/search/es_search/index.ts b/src/plugins/data/server/search/es_search/index.ts index 14e8a4e1b0245c..f6487e3ef84f5a 100644 --- a/src/plugins/data/server/search/es_search/index.ts +++ b/src/plugins/data/server/search/es_search/index.ts @@ -18,7 +18,6 @@ */ export { esSearchStrategyProvider } from './es_search_strategy'; -export * from './get_default_search_params'; -export * from './es_search_rxjs_utils'; - +export * from './request_utils'; +export * from './response_utils'; export { ES_SEARCH_STRATEGY, IEsSearchRequest, IEsSearchResponse } from '../../../common'; diff --git a/src/plugins/data/server/search/es_search/request_utils.test.ts b/src/plugins/data/server/search/es_search/request_utils.test.ts new file mode 100644 index 00000000000000..b63a6b3ae7e9b2 --- /dev/null +++ b/src/plugins/data/server/search/es_search/request_utils.test.ts @@ -0,0 +1,148 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { getShardTimeout, getDefaultSearchParams, shimAbortSignal } from './request_utils'; +import { IUiSettingsClient, SharedGlobalConfig } from 'kibana/server'; + +const createSuccessTransportRequestPromise = ( + body: any, + { statusCode = 200 }: { statusCode?: number } = {} +) => { + const promise = Promise.resolve({ body, statusCode }) as any; + promise.abort = jest.fn(); + + return promise; +}; + +describe('request utils', () => { + describe('getShardTimeout', () => { + test('returns an empty object if the config does not contain a value', () => { + const result = getShardTimeout(({ + elasticsearch: { + shardTimeout: { + asMilliseconds: jest.fn(), + }, + }, + } as unknown) as SharedGlobalConfig); + expect(result).toEqual({}); + }); + + test('returns an empty object if the config contains 0', () => { + const result = getShardTimeout(({ + elasticsearch: { + shardTimeout: { + asMilliseconds: jest.fn().mockReturnValue(0), + }, + }, + } as unknown) as SharedGlobalConfig); + expect(result).toEqual({}); + }); + + test('returns a duration if the config >= 0', () => { + const result = getShardTimeout(({ + elasticsearch: { + shardTimeout: { + asMilliseconds: jest.fn().mockReturnValue(10), + }, + }, + } as unknown) as SharedGlobalConfig); + expect(result).toEqual({ timeout: '10ms' }); + }); + }); + + describe('getDefaultSearchParams', () => { + describe('max_concurrent_shard_requests', () => { + test('returns value if > 0', async () => { + const result = await getDefaultSearchParams(({ + get: jest.fn().mockResolvedValue(1), + } as unknown) as IUiSettingsClient); + expect(result).toHaveProperty('max_concurrent_shard_requests', 1); + }); + + test('returns undefined if === 0', async () => { + const result = await getDefaultSearchParams(({ + get: jest.fn().mockResolvedValue(0), + } as unknown) as IUiSettingsClient); + expect(result.max_concurrent_shard_requests).toBe(undefined); + }); + + test('returns undefined if undefined', async () => { + const result = await getDefaultSearchParams(({ + get: jest.fn(), + } as unknown) as IUiSettingsClient); + expect(result.max_concurrent_shard_requests).toBe(undefined); + }); + }); + + describe('other defaults', () => { + test('returns ignore_unavailable and track_total_hits', async () => { + const result = await getDefaultSearchParams(({ + get: jest.fn(), + } as unknown) as IUiSettingsClient); + expect(result).toHaveProperty('ignore_unavailable', true); + expect(result).toHaveProperty('track_total_hits', true); + }); + }); + }); + + describe('shimAbortSignal', () => { + test('aborts the promise if the signal is already aborted', async () => { + const promise = createSuccessTransportRequestPromise({ + success: true, + }); + const controller = new AbortController(); + controller.abort(); + shimAbortSignal(promise, controller.signal); + + expect(promise.abort).toHaveBeenCalled(); + }); + + test('aborts the promise if the signal is aborted', () => { + const promise = createSuccessTransportRequestPromise({ + success: true, + }); + const controller = new AbortController(); + shimAbortSignal(promise, controller.signal); + controller.abort(); + + expect(promise.abort).toHaveBeenCalled(); + }); + + test('returns the original promise', async () => { + const promise = createSuccessTransportRequestPromise({ + success: true, + }); + const controller = new AbortController(); + const response = await shimAbortSignal(promise, controller.signal); + + expect(response).toEqual(expect.objectContaining({ body: { success: true } })); + }); + + test('allows the promise to be aborted manually', () => { + const promise = createSuccessTransportRequestPromise({ + success: true, + }); + const controller = new AbortController(); + const enhancedPromise = shimAbortSignal(promise, controller.signal); + + enhancedPromise.abort(); + expect(promise.abort).toHaveBeenCalled(); + }); + }); +}); diff --git a/src/plugins/data/server/search/es_search/request_utils.ts b/src/plugins/data/server/search/es_search/request_utils.ts new file mode 100644 index 00000000000000..03b7db7da8ffeb --- /dev/null +++ b/src/plugins/data/server/search/es_search/request_utils.ts @@ -0,0 +1,66 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import type { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; +import type { Search } from '@elastic/elasticsearch/api/requestParams'; +import type { IUiSettingsClient, SharedGlobalConfig } from 'kibana/server'; +import { UI_SETTINGS } from '../../../common'; + +export function getShardTimeout(config: SharedGlobalConfig): Pick { + const timeout = config.elasticsearch.shardTimeout.asMilliseconds(); + return timeout ? { timeout: `${timeout}ms` } : {}; +} + +export async function getDefaultSearchParams( + uiSettingsClient: IUiSettingsClient +): Promise< + Pick +> { + const maxConcurrentShardRequests = await uiSettingsClient.get( + UI_SETTINGS.COURIER_MAX_CONCURRENT_SHARD_REQUESTS + ); + return { + max_concurrent_shard_requests: + maxConcurrentShardRequests > 0 ? maxConcurrentShardRequests : undefined, + ignore_unavailable: true, // Don't fail if the index/indices don't exist + track_total_hits: true, + }; +} + +/** + * Temporary workaround until https://github.com/elastic/elasticsearch-js/issues/1297 is resolved. + * Shims the `AbortSignal` behavior so that, if the given `signal` aborts, the `abort` method on the + * `TransportRequestPromise` is called, actually performing the cancellation. + * @internal + */ +export const shimAbortSignal = (promise: TransportRequestPromise, signal?: AbortSignal) => { + if (!signal) return promise; + const abortHandler = () => { + promise.abort(); + cleanup(); + }; + const cleanup = () => signal.removeEventListener('abort', abortHandler); + if (signal.aborted) { + promise.abort(); + } else { + signal.addEventListener('abort', abortHandler); + promise.then(cleanup, cleanup); + } + return promise; +}; diff --git a/src/plugins/data/server/search/es_search/response_utils.test.ts b/src/plugins/data/server/search/es_search/response_utils.test.ts new file mode 100644 index 00000000000000..f93625980a69c2 --- /dev/null +++ b/src/plugins/data/server/search/es_search/response_utils.test.ts @@ -0,0 +1,69 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { getTotalLoaded, toKibanaSearchResponse } from './response_utils'; +import { SearchResponse } from 'elasticsearch'; + +describe('response utils', () => { + describe('getTotalLoaded', () => { + it('returns the total/loaded, not including skipped', () => { + const result = getTotalLoaded(({ + _shards: { + successful: 10, + failed: 5, + skipped: 5, + total: 100, + }, + } as unknown) as SearchResponse); + + expect(result).toEqual({ + total: 100, + loaded: 15, + }); + }); + }); + + describe('toKibanaSearchResponse', () => { + it('returns rawResponse, isPartial, isRunning, total, and loaded', () => { + const result = toKibanaSearchResponse(({ + _shards: { + successful: 10, + failed: 5, + skipped: 5, + total: 100, + }, + } as unknown) as SearchResponse); + + expect(result).toEqual({ + rawResponse: { + _shards: { + successful: 10, + failed: 5, + skipped: 5, + total: 100, + }, + }, + isRunning: false, + isPartial: false, + total: 100, + loaded: 15, + }); + }); + }); +}); diff --git a/src/plugins/data/server/search/es_search/response_utils.ts b/src/plugins/data/server/search/es_search/response_utils.ts new file mode 100644 index 00000000000000..2f502f55057b8f --- /dev/null +++ b/src/plugins/data/server/search/es_search/response_utils.ts @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SearchResponse } from 'elasticsearch'; + +/** + * Get the `total`/`loaded` for this response (see `IKibanaSearchResponse`). Note that `skipped` is + * not included as it is already included in `successful`. + * @internal + */ +export function getTotalLoaded(response: SearchResponse) { + const { total, failed, successful } = response._shards; + const loaded = failed + successful; + return { total, loaded }; +} + +/** + * Get the Kibana representation of this response (see `IKibanaSearchResponse`). + * @internal + */ +export function toKibanaSearchResponse(rawResponse: SearchResponse) { + return { + rawResponse, + isPartial: false, + isRunning: false, + ...getTotalLoaded(rawResponse), + }; +} diff --git a/src/plugins/data/server/search/expressions/esaggs.ts b/src/plugins/data/server/search/expressions/esaggs.ts new file mode 100644 index 00000000000000..04cfcd1eef0438 --- /dev/null +++ b/src/plugins/data/server/search/expressions/esaggs.ts @@ -0,0 +1,136 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { get } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { KibanaRequest, StartServicesAccessor } from 'src/core/server'; +import { Adapters } from 'src/plugins/inspector/common'; +import { + EsaggsExpressionFunctionDefinition, + EsaggsStartDependencies, + getEsaggsMeta, + handleEsaggsRequest, +} from '../../../common/search/expressions'; +import { DataPluginStartDependencies, DataPluginStart } from '../../plugin'; + +/** + * Returns the expression function definition. Any stateful dependencies are accessed + * at runtime via the `getStartDependencies` param, which provides the specific services + * needed for this function to run. + * + * This function is an implementation detail of this module, and is exported separately + * only for testing purposes. + * + * @param getStartDependencies - async function that resolves with EsaggsStartDependencies + * + * @internal + */ +export function getFunctionDefinition({ + getStartDependencies, +}: { + getStartDependencies: (req: KibanaRequest) => Promise; +}): () => EsaggsExpressionFunctionDefinition { + return () => ({ + ...getEsaggsMeta(), + async fn( + input, + args, + { inspectorAdapters, abortSignal, getSearchSessionId, getKibanaRequest } + ) { + const kibanaRequest = getKibanaRequest ? getKibanaRequest() : null; + if (!kibanaRequest) { + throw new Error( + i18n.translate('data.search.esaggs.error.kibanaRequest', { + defaultMessage: + 'A KibanaRequest is required to execute this search on the server. ' + + 'Please provide a request object to the expression execution params.', + }) + ); + } + + const { + aggs, + deserializeFieldFormat, + indexPatterns, + searchSource, + } = await getStartDependencies(kibanaRequest); + + const aggConfigsState = JSON.parse(args.aggConfigs); + const indexPattern = await indexPatterns.get(args.index); + const aggConfigs = aggs.createAggConfigs(indexPattern, aggConfigsState); + + return await handleEsaggsRequest(input, args, { + abortSignal: (abortSignal as unknown) as AbortSignal, + aggs: aggConfigs, + deserializeFieldFormat, + filters: get(input, 'filters', undefined), + indexPattern, + inspectorAdapters: inspectorAdapters as Adapters, + metricsAtAllLevels: args.metricsAtAllLevels, + partialRows: args.partialRows, + query: get(input, 'query', undefined) as any, + searchSessionId: getSearchSessionId(), + searchSourceService: searchSource, + timeFields: args.timeFields, + timeRange: get(input, 'timeRange', undefined), + }); + }, + }); +} + +/** + * This is some glue code that takes in `core.getStartServices`, extracts the dependencies + * needed for this function, and wraps them behind a `getStartDependencies` function that + * is then called at runtime. + * + * We do this so that we can be explicit about exactly which dependencies the function + * requires, without cluttering up the top-level `plugin.ts` with this logic. It also + * makes testing the expression function a bit easier since `getStartDependencies` is + * the only thing you should need to mock. + * + * @param getStartServices - core's StartServicesAccessor for this plugin + * + * @internal + */ +export function getEsaggs({ + getStartServices, +}: { + getStartServices: StartServicesAccessor; +}): () => EsaggsExpressionFunctionDefinition { + return getFunctionDefinition({ + getStartDependencies: async (request: KibanaRequest) => { + const [{ elasticsearch, savedObjects, uiSettings }, , self] = await getStartServices(); + const { fieldFormats, indexPatterns, search } = self; + const esClient = elasticsearch.client.asScoped(request); + const savedObjectsClient = savedObjects.getScopedClient(request); + const uiSettingsClient = uiSettings.asScopedToClient(savedObjectsClient); + const scopedFieldFormats = await fieldFormats.fieldFormatServiceFactory(uiSettingsClient); + + return { + aggs: await search.aggs.asScopedToClient(savedObjectsClient, esClient.asCurrentUser), + deserializeFieldFormat: scopedFieldFormats.deserialize.bind(scopedFieldFormats), + indexPatterns: await indexPatterns.indexPatternsServiceFactory( + savedObjectsClient, + esClient.asCurrentUser + ), + searchSource: await search.searchSource.asScoped(request), + }; + }, + }); +} diff --git a/src/plugins/data/server/search/expressions/index.ts b/src/plugins/data/server/search/expressions/index.ts new file mode 100644 index 00000000000000..f1a39a83836299 --- /dev/null +++ b/src/plugins/data/server/search/expressions/index.ts @@ -0,0 +1,20 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export * from './esaggs'; diff --git a/src/plugins/data/server/search/index.ts b/src/plugins/data/server/search/index.ts index 1be641401b29cc..f051e4c48223ce 100644 --- a/src/plugins/data/server/search/index.ts +++ b/src/plugins/data/server/search/index.ts @@ -19,6 +19,7 @@ export * from './types'; export * from './es_search'; -export { usageProvider, SearchUsage } from './collectors'; +export { usageProvider, SearchUsage, searchUsageObserver } from './collectors'; export * from './aggs'; export { shimHitsTotal } from './routes'; +export * from './session'; diff --git a/src/plugins/data/server/search/mocks.ts b/src/plugins/data/server/search/mocks.ts index 290e94ee7cf991..4914726c85ef8b 100644 --- a/src/plugins/data/server/search/mocks.ts +++ b/src/plugins/data/server/search/mocks.ts @@ -17,8 +17,6 @@ * under the License. */ -import type { RequestHandlerContext } from 'src/core/server'; -import { coreMock } from '../../../../core/server/mocks'; import { ISearchSetup, ISearchStart } from './types'; import { searchAggsSetupMock, searchAggsStartMock } from './aggs/mocks'; import { searchSourceMock } from './search_source/mocks'; @@ -42,22 +40,3 @@ export function createSearchStartMock(): jest.Mocked { searchSource: searchSourceMock.createStartContract(), }; } - -export function createSearchRequestHandlerContext(): jest.Mocked { - return { - core: coreMock.createRequestHandlerContext(), - search: { - search: jest.fn(), - cancel: jest.fn(), - session: { - save: jest.fn(), - get: jest.fn(), - find: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - trackId: jest.fn(), - getId: jest.fn(), - }, - }, - }; -} diff --git a/src/plugins/data/server/search/routes/call_msearch.ts b/src/plugins/data/server/search/routes/call_msearch.ts index 603b3ed867b234..923369297889b4 100644 --- a/src/plugins/data/server/search/routes/call_msearch.ts +++ b/src/plugins/data/server/search/routes/call_msearch.ts @@ -24,9 +24,8 @@ import { SearchResponse } from 'elasticsearch'; import { IUiSettingsClient, IScopedClusterClient, SharedGlobalConfig } from 'src/core/server'; import type { MsearchRequestBody, MsearchResponse } from '../../../common/search/search_source'; -import { toSnakeCase, shimAbortSignal } from '../../../common/search/es_search'; import { shimHitsTotal } from './shim_hits_total'; -import { getShardTimeout, getDefaultSearchParams } from '..'; +import { getShardTimeout, getDefaultSearchParams, shimAbortSignal } from '..'; /** @internal */ export function convertRequestBody( @@ -71,7 +70,7 @@ export function getCallMsearch(dependencies: CallMsearchDependencies) { const timeout = getShardTimeout(config); // trackTotalHits is not supported by msearch - const { trackTotalHits, ...defaultParams } = await getDefaultSearchParams(uiSettings); + const { track_total_hits: _, ...defaultParams } = await getDefaultSearchParams(uiSettings); const body = convertRequestBody(params.body, timeout); @@ -81,7 +80,7 @@ export function getCallMsearch(dependencies: CallMsearchDependencies) { body, }, { - querystring: toSnakeCase(defaultParams), + querystring: defaultParams, } ), params.signal diff --git a/src/plugins/data/server/search/search_service.test.ts b/src/plugins/data/server/search/search_service.test.ts index 0700afd8d6c838..8a52d1d415f9ba 100644 --- a/src/plugins/data/server/search/search_service.test.ts +++ b/src/plugins/data/server/search/search_service.test.ts @@ -25,6 +25,8 @@ import { createFieldFormatsStartMock } from '../field_formats/mocks'; import { createIndexPatternsStartMock } from '../index_patterns/mocks'; import { SearchService, SearchServiceSetupDependencies } from './search_service'; +import { bfetchPluginMock } from '../../../bfetch/server/mocks'; +import { of } from 'rxjs'; describe('Search service', () => { let plugin: SearchService; @@ -35,15 +37,29 @@ describe('Search service', () => { const mockLogger: any = { debug: () => {}, }; - plugin = new SearchService(coreMock.createPluginInitializerContext({}), mockLogger); + const context = coreMock.createPluginInitializerContext({}); + context.config.create = jest.fn().mockImplementation(() => { + return of({ + search: { + aggs: { + shardDelay: { + enabled: true, + }, + }, + }, + }); + }); + plugin = new SearchService(context, mockLogger); mockCoreSetup = coreMock.createSetup(); mockCoreStart = coreMock.createStart(); }); describe('setup()', () => { it('exposes proper contract', async () => { + const bfetch = bfetchPluginMock.createSetupContract(); const setup = plugin.setup(mockCoreSetup, ({ packageInfo: { version: '8' }, + bfetch, expressions: { registerFunction: jest.fn(), registerType: jest.fn(), diff --git a/src/plugins/data/server/search/search_service.ts b/src/plugins/data/server/search/search_service.ts index b44980164d0976..9d9ffbb41c16fb 100644 --- a/src/plugins/data/server/search/search_service.ts +++ b/src/plugins/data/server/search/search_service.ts @@ -17,7 +17,7 @@ * under the License. */ -import { BehaviorSubject, from, Observable } from 'rxjs'; +import { BehaviorSubject, Observable } from 'rxjs'; import { pick } from 'lodash'; import { CoreSetup, @@ -29,7 +29,8 @@ import { SharedGlobalConfig, StartServicesAccessor, } from 'src/core/server'; -import { first, switchMap } from 'rxjs/operators'; +import { catchError, first, map } from 'rxjs/operators'; +import { BfetchServerSetup } from 'src/plugins/bfetch/server'; import { ExpressionsServerSetup } from 'src/plugins/expressions/server'; import { ISearchSetup, @@ -43,13 +44,13 @@ import { AggsService } from './aggs'; import { FieldFormatsStart } from '../field_formats'; import { IndexPatternsServiceStart } from '../index_patterns'; -import { getCallMsearch, registerMsearchRoute, registerSearchRoute } from './routes'; +import { getCallMsearch, registerMsearchRoute, registerSearchRoute, shimHitsTotal } from './routes'; import { ES_SEARCH_STRATEGY, esSearchStrategyProvider } from './es_search'; import { DataPluginStart } from '../plugin'; import { UsageCollectionSetup } from '../../../usage_collection/server'; import { registerUsageCollector } from './collectors/register'; import { usageProvider } from './collectors/usage'; -import { BACKGROUND_SESSION_TYPE, searchTelemetry } from '../saved_objects'; +import { searchTelemetry } from '../saved_objects'; import { IEsSearchRequest, IEsSearchResponse, @@ -64,20 +65,18 @@ import { searchSourceRequiredUiSettings, SearchSourceService, } from '../../common/search'; +import { getEsaggs } from './expressions'; import { getShardDelayBucketAgg, SHARD_DELAY_AGG_NAME, } from '../../common/search/aggs/buckets/shard_delay'; import { aggShardDelay } from '../../common/search/aggs/buckets/shard_delay_fn'; import { ConfigSchema } from '../../config'; -import { BackgroundSessionService, ISearchSessionClient } from './session'; -import { registerSessionRoutes } from './routes/session'; -import { backgroundSessionMapping } from '../saved_objects'; -import { tapFirst } from '../../common/utils'; +import { SessionService, IScopedSessionService, ISessionService } from './session'; declare module 'src/core/server' { interface RequestHandlerContext { - search?: ISearchClient & { session: ISearchSessionClient }; + search?: ISearchClient & { session: IScopedSessionService }; } } @@ -85,6 +84,7 @@ type StrategyMap = Record>; /** @internal */ export interface SearchServiceSetupDependencies { + bfetch: BfetchServerSetup; expressions: ExpressionsServerSetup; usageCollection?: UsageCollectionSetup; } @@ -106,16 +106,19 @@ export class SearchService implements Plugin { private readonly searchSourceService = new SearchSourceService(); private defaultSearchStrategyName: string = ES_SEARCH_STRATEGY; private searchStrategies: StrategyMap = {}; - private sessionService: BackgroundSessionService = new BackgroundSessionService(); + private sessionService: ISessionService; + private coreStart?: CoreStart; constructor( private initializerContext: PluginInitializerContext, private readonly logger: Logger - ) {} + ) { + this.sessionService = new SessionService(); + } public setup( core: CoreSetup<{}, DataPluginStart>, - { expressions, usageCollection }: SearchServiceSetupDependencies + { bfetch, expressions, usageCollection }: SearchServiceSetupDependencies ): ISearchSetup { const usage = usageCollection ? usageProvider(core) : undefined; @@ -126,17 +129,17 @@ export class SearchService implements Plugin { }; registerSearchRoute(router); registerMsearchRoute(router, routeDependencies); - registerSessionRoutes(router); + + core.getStartServices().then(([coreStart]) => { + this.coreStart = coreStart; + }); core.http.registerRouteHandlerContext('search', async (context, request) => { - const [coreStart] = await core.getStartServices(); - const search = this.asScopedProvider(coreStart)(request); - const session = this.sessionService.asScopedProvider(coreStart)(request); + const search = this.asScopedProvider(this.coreStart!)(request); + const session = this.sessionService.asScopedProvider(this.coreStart!)(request); return { ...search, session }; }); - core.savedObjects.registerType(backgroundSessionMapping); - this.registerSearchStrategy( ES_SEARCH_STRATEGY, esSearchStrategyProvider( @@ -146,11 +149,50 @@ export class SearchService implements Plugin { ) ); + bfetch.addBatchProcessingRoute< + { request: IKibanaSearchResponse; options?: ISearchOptions }, + any + >('/internal/bsearch', (request) => { + const search = this.asScopedProvider(this.coreStart!)(request); + + return { + onBatchItem: async ({ request: requestData, options }) => { + return search + .search(requestData, options) + .pipe( + first(), + map((response) => { + return { + ...response, + ...{ + rawResponse: shimHitsTotal(response.rawResponse), + }, + }; + }), + catchError((err) => { + // eslint-disable-next-line no-throw-literal + throw { + statusCode: err.statusCode || 500, + body: { + message: err.message, + attributes: { + error: err.body?.error || err.message, + }, + }, + }; + }) + ) + .toPromise(); + }, + }; + }); + core.savedObjects.registerType(searchTelemetry); if (usageCollection) { registerUsageCollector(usageCollection, this.initializerContext); } + expressions.registerFunction(getEsaggs({ getStartServices: core.getStartServices })); expressions.registerFunction(kibana); expressions.registerFunction(kibanaContextFunction); expressions.registerType(kibanaContext); @@ -173,6 +215,7 @@ export class SearchService implements Plugin { if (this.searchStrategies.hasOwnProperty(enhancements.defaultStrategy)) { this.defaultSearchStrategyName = enhancements.defaultStrategy; } + this.sessionService = enhancements.sessionService; }, aggs, registerSearchStrategy: this.registerSearchStrategy, @@ -233,7 +276,6 @@ export class SearchService implements Plugin { public stop() { this.aggsService.stop(); - this.sessionService.stop(); } private registerSearchStrategy = < @@ -251,37 +293,19 @@ export class SearchService implements Plugin { SearchStrategyRequest extends IKibanaSearchRequest = IEsSearchRequest, SearchStrategyResponse extends IKibanaSearchResponse = IEsSearchResponse >( - searchRequest: SearchStrategyRequest, + session: IScopedSessionService, + request: SearchStrategyRequest, options: ISearchOptions, deps: SearchStrategyDependencies ) => { const strategy = this.getSearchStrategy( options.strategy ); - - // If this is a restored background search session, look up the ID using the provided sessionId - const getSearchRequest = async () => - !options.isRestore || searchRequest.id - ? searchRequest - : { - ...searchRequest, - id: await this.sessionService.getId(searchRequest, options, deps), - }; - - return from(getSearchRequest()).pipe( - switchMap((request) => strategy.search(request, options, deps)), - tapFirst((response) => { - if (searchRequest.id || !options.sessionId || !response.id || options.isRestore) return; - this.sessionService.trackId(searchRequest, response.id, options, { - savedObjectsClient: deps.savedObjectsClient, - }); - }) - ); + return session.search(strategy, request, options, deps); }; private cancel = (id: string, options: ISearchOptions, deps: SearchStrategyDependencies) => { const strategy = this.getSearchStrategy(options.strategy); - return strategy.cancel ? strategy.cancel(id, options, deps) : Promise.resolve(); }; @@ -299,18 +323,20 @@ export class SearchService implements Plugin { return strategy; }; - private asScopedProvider = ({ elasticsearch, savedObjects, uiSettings }: CoreStart) => { + private asScopedProvider = (core: CoreStart) => { + const { elasticsearch, savedObjects, uiSettings } = core; + const getSessionAsScoped = this.sessionService.asScopedProvider(core); return (request: KibanaRequest): ISearchClient => { - const savedObjectsClient = savedObjects.getScopedClient(request, { - includedHiddenTypes: [BACKGROUND_SESSION_TYPE], - }); + const scopedSession = getSessionAsScoped(request); + const savedObjectsClient = savedObjects.getScopedClient(request); const deps = { savedObjectsClient, esClient: elasticsearch.client.asScoped(request), uiSettingsClient: uiSettings.asScopedToClient(savedObjectsClient), }; return { - search: (searchRequest, options = {}) => this.search(searchRequest, options, deps), + search: (searchRequest, options = {}) => + this.search(scopedSession, searchRequest, options, deps), cancel: (id, options = {}) => this.cancel(id, options, deps), }; }; diff --git a/src/plugins/data/server/search/session/index.ts b/src/plugins/data/server/search/session/index.ts index 11b5b16a02b561..0966a1e4a18ec5 100644 --- a/src/plugins/data/server/search/session/index.ts +++ b/src/plugins/data/server/search/session/index.ts @@ -17,4 +17,5 @@ * under the License. */ -export { BackgroundSessionService, ISearchSessionClient } from './session_service'; +export * from './session_service'; +export * from './types'; diff --git a/src/plugins/data/server/search/session/session_service.test.ts b/src/plugins/data/server/search/session/session_service.test.ts index 1ceebae967d4c6..3dbe01105aca4e 100644 --- a/src/plugins/data/server/search/session/session_service.test.ts +++ b/src/plugins/data/server/search/session/session_service.test.ts @@ -17,217 +17,22 @@ * under the License. */ -import type { SavedObject, SavedObjectsClientContract } from 'kibana/server'; -import { savedObjectsClientMock } from '../../../../../core/server/mocks'; -import { BackgroundSessionStatus } from '../../../common'; -import { BACKGROUND_SESSION_TYPE } from '../../saved_objects'; -import { BackgroundSessionService } from './session_service'; -import { createRequestHash } from './utils'; - -describe('BackgroundSessionService', () => { - let savedObjectsClient: jest.Mocked; - let service: BackgroundSessionService; - - const mockSavedObject: SavedObject = { - id: 'd7170a35-7e2c-48d6-8dec-9a056721b489', - type: BACKGROUND_SESSION_TYPE, - attributes: { - name: 'my_name', - idMapping: {}, - }, - references: [], - }; - - beforeEach(() => { - savedObjectsClient = savedObjectsClientMock.create(); - service = new BackgroundSessionService(); - }); - - it('save throws if `name` is not provided', () => { - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - - expect(() => service.save(sessionId, {}, { savedObjectsClient })).rejects.toMatchInlineSnapshot( - `[Error: Name is required]` - ); - }); - - it('get calls saved objects client', async () => { - savedObjectsClient.get.mockResolvedValue(mockSavedObject); - - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const response = await service.get(sessionId, { savedObjectsClient }); - - expect(response).toBe(mockSavedObject); - expect(savedObjectsClient.get).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId); - }); - - it('find calls saved objects client', async () => { - const mockFindSavedObject = { - ...mockSavedObject, - score: 1, - }; - const mockResponse = { - saved_objects: [mockFindSavedObject], - total: 1, - per_page: 1, - page: 0, - }; - savedObjectsClient.find.mockResolvedValue(mockResponse); - - const options = { page: 0, perPage: 5 }; - const response = await service.find(options, { savedObjectsClient }); - - expect(response).toBe(mockResponse); - expect(savedObjectsClient.find).toHaveBeenCalledWith({ - ...options, - type: BACKGROUND_SESSION_TYPE, - }); - }); - - it('update calls saved objects client', async () => { - const mockUpdateSavedObject = { - ...mockSavedObject, - attributes: {}, - }; - savedObjectsClient.update.mockResolvedValue(mockUpdateSavedObject); - - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const attributes = { name: 'new_name' }; - const response = await service.update(sessionId, attributes, { savedObjectsClient }); - - expect(response).toBe(mockUpdateSavedObject); - expect(savedObjectsClient.update).toHaveBeenCalledWith( - BACKGROUND_SESSION_TYPE, - sessionId, - attributes - ); - }); - - it('delete calls saved objects client', async () => { - savedObjectsClient.delete.mockResolvedValue({}); - - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const response = await service.delete(sessionId, { savedObjectsClient }); - - expect(response).toEqual({}); - expect(savedObjectsClient.delete).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId); - }); - - describe('trackId', () => { - it('stores hash in memory when `isStored` is `false` for when `save` is called', async () => { - const searchRequest = { params: {} }; - const requestHash = createRequestHash(searchRequest.params); - const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const isStored = false; - const name = 'my saved background search session'; - const created = new Date().toISOString(); - const expires = new Date().toISOString(); - - await service.trackId( - searchRequest, - searchId, - { sessionId, isStored }, - { savedObjectsClient } - ); - - expect(savedObjectsClient.update).not.toHaveBeenCalled(); - - await service.save(sessionId, { name, created, expires }, { savedObjectsClient }); - - expect(savedObjectsClient.create).toHaveBeenCalledWith( - BACKGROUND_SESSION_TYPE, - { - name, - created, - expires, - initialState: {}, - restoreState: {}, - status: BackgroundSessionStatus.IN_PROGRESS, - idMapping: { [requestHash]: searchId }, - }, - { id: sessionId } - ); - }); - - it('updates saved object when `isStored` is `true`', async () => { - const searchRequest = { params: {} }; - const requestHash = createRequestHash(searchRequest.params); - const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const isStored = true; - - await service.trackId( - searchRequest, - searchId, - { sessionId, isStored }, - { savedObjectsClient } - ); - - expect(savedObjectsClient.update).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId, { - idMapping: { [requestHash]: searchId }, - }); - }); - }); - - describe('getId', () => { - it('throws if `sessionId` is not provided', () => { - const searchRequest = { params: {} }; - - expect(() => - service.getId(searchRequest, {}, { savedObjectsClient }) - ).rejects.toMatchInlineSnapshot(`[Error: Session ID is required]`); - }); - - it('throws if there is not a saved object', () => { - const searchRequest = { params: {} }; - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - - expect(() => - service.getId(searchRequest, { sessionId, isStored: false }, { savedObjectsClient }) - ).rejects.toMatchInlineSnapshot( - `[Error: Cannot get search ID from a session that is not stored]` - ); - }); - - it('throws if not restoring a saved session', () => { - const searchRequest = { params: {} }; - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - - expect(() => - service.getId( - searchRequest, - { sessionId, isStored: true, isRestore: false }, - { savedObjectsClient } - ) - ).rejects.toMatchInlineSnapshot( - `[Error: Get search ID is only supported when restoring a session]` - ); - }); - - it('returns the search ID from the saved object ID mapping', async () => { - const searchRequest = { params: {} }; - const requestHash = createRequestHash(searchRequest.params); - const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; - const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; - const mockSession = { - id: 'd7170a35-7e2c-48d6-8dec-9a056721b489', - type: BACKGROUND_SESSION_TYPE, - attributes: { - name: 'my_name', - idMapping: { [requestHash]: searchId }, - }, - references: [], - }; - savedObjectsClient.get.mockResolvedValue(mockSession); - - const id = await service.getId( - searchRequest, - { sessionId, isStored: true, isRestore: true }, - { savedObjectsClient } - ); - - expect(id).toBe(searchId); - }); +import { of } from 'rxjs'; +import { SearchStrategyDependencies } from '../types'; +import { SessionService } from './session_service'; + +describe('SessionService', () => { + it('search invokes `strategy.search`', async () => { + const service = new SessionService(); + const mockSearch = jest.fn().mockReturnValue(of({})); + const mockStrategy = { search: mockSearch }; + const mockRequest = { id: 'bar' }; + const mockOptions = { sessionId: '1234' }; + const mockDeps = { savedObjectsClient: {} } as SearchStrategyDependencies; + + await service.search(mockStrategy, mockRequest, mockOptions, mockDeps); + + expect(mockSearch).toHaveBeenCalled(); + expect(mockSearch).toHaveBeenCalledWith(mockRequest, mockOptions, mockDeps); }); }); diff --git a/src/plugins/data/server/search/session/session_service.ts b/src/plugins/data/server/search/session/session_service.ts index eca5f428b8555f..15021436d8821a 100644 --- a/src/plugins/data/server/search/session/session_service.ts +++ b/src/plugins/data/server/search/session/session_service.ts @@ -17,188 +17,27 @@ * under the License. */ -import { CoreStart, KibanaRequest, SavedObjectsClientContract } from 'kibana/server'; -import { - BackgroundSessionSavedObjectAttributes, - IKibanaSearchRequest, - ISearchOptions, - SearchSessionFindOptions, - BackgroundSessionStatus, -} from '../../../common'; -import { BACKGROUND_SESSION_TYPE } from '../../saved_objects'; -import { createRequestHash } from './utils'; - -const DEFAULT_EXPIRATION = 7 * 24 * 60 * 60 * 1000; - -export interface BackgroundSessionDependencies { - savedObjectsClient: SavedObjectsClientContract; -} - -export type ISearchSessionClient = ReturnType< - ReturnType ->; - -export class BackgroundSessionService { - /** - * Map of sessionId to { [requestHash]: searchId } - * @private - */ - private sessionSearchMap = new Map>(); +import { CoreStart, KibanaRequest } from 'kibana/server'; +import { IKibanaSearchRequest, IKibanaSearchResponse } from '../../../common'; +import { ISearchStrategy } from '../types'; +import { ISessionService } from './types'; +/** + * The OSS session service. See data_enhanced in X-Pack for the background session service. + */ +export class SessionService implements ISessionService { constructor() {} - public setup = () => {}; - - public start = (core: CoreStart) => { - return { - asScoped: this.asScopedProvider(core), - }; - }; - - public stop = () => { - this.sessionSearchMap.clear(); - }; - - // TODO: Generate the `userId` from the realm type/realm name/username - public save = async ( - sessionId: string, - { - name, - created = new Date().toISOString(), - expires = new Date(Date.now() + DEFAULT_EXPIRATION).toISOString(), - status = BackgroundSessionStatus.IN_PROGRESS, - initialState = {}, - restoreState = {}, - }: Partial, - { savedObjectsClient }: BackgroundSessionDependencies - ) => { - if (!name) throw new Error('Name is required'); - - // Get the mapping of request hash/search ID for this session - const searchMap = this.sessionSearchMap.get(sessionId) ?? new Map(); - const idMapping = Object.fromEntries(searchMap.entries()); - const attributes = { name, created, expires, status, initialState, restoreState, idMapping }; - const session = await savedObjectsClient.create( - BACKGROUND_SESSION_TYPE, - attributes, - { id: sessionId } - ); - - // Clear out the entries for this session ID so they don't get saved next time - this.sessionSearchMap.delete(sessionId); + public search( + strategy: ISearchStrategy, + ...args: Parameters['search']> + ) { + return strategy.search(...args); + } - return session; - }; - - // TODO: Throw an error if this session doesn't belong to this user - public get = (sessionId: string, { savedObjectsClient }: BackgroundSessionDependencies) => { - return savedObjectsClient.get( - BACKGROUND_SESSION_TYPE, - sessionId - ); - }; - - // TODO: Throw an error if this session doesn't belong to this user - public find = ( - options: SearchSessionFindOptions, - { savedObjectsClient }: BackgroundSessionDependencies - ) => { - return savedObjectsClient.find({ - ...options, - type: BACKGROUND_SESSION_TYPE, + public asScopedProvider(core: CoreStart) { + return (request: KibanaRequest) => ({ + search: this.search, }); - }; - - // TODO: Throw an error if this session doesn't belong to this user - public update = ( - sessionId: string, - attributes: Partial, - { savedObjectsClient }: BackgroundSessionDependencies - ) => { - return savedObjectsClient.update( - BACKGROUND_SESSION_TYPE, - sessionId, - attributes - ); - }; - - // TODO: Throw an error if this session doesn't belong to this user - public delete = (sessionId: string, { savedObjectsClient }: BackgroundSessionDependencies) => { - return savedObjectsClient.delete(BACKGROUND_SESSION_TYPE, sessionId); - }; - - /** - * Tracks the given search request/search ID in the saved session (if it exists). Otherwise, just - * store it in memory until a saved session exists. - * @internal - */ - public trackId = async ( - searchRequest: IKibanaSearchRequest, - searchId: string, - { sessionId, isStored }: ISearchOptions, - deps: BackgroundSessionDependencies - ) => { - if (!sessionId || !searchId) return; - const requestHash = createRequestHash(searchRequest.params); - - // If there is already a saved object for this session, update it to include this request/ID. - // Otherwise, just update the in-memory mapping for this session for when the session is saved. - if (isStored) { - const attributes = { idMapping: { [requestHash]: searchId } }; - await this.update(sessionId, attributes, deps); - } else { - const map = this.sessionSearchMap.get(sessionId) ?? new Map(); - map.set(requestHash, searchId); - this.sessionSearchMap.set(sessionId, map); - } - }; - - /** - * Look up an existing search ID that matches the given request in the given session so that the - * request can continue rather than restart. - * @internal - */ - public getId = async ( - searchRequest: IKibanaSearchRequest, - { sessionId, isStored, isRestore }: ISearchOptions, - deps: BackgroundSessionDependencies - ) => { - if (!sessionId) { - throw new Error('Session ID is required'); - } else if (!isStored) { - throw new Error('Cannot get search ID from a session that is not stored'); - } else if (!isRestore) { - throw new Error('Get search ID is only supported when restoring a session'); - } - - const session = await this.get(sessionId, deps); - const requestHash = createRequestHash(searchRequest.params); - if (!session.attributes.idMapping.hasOwnProperty(requestHash)) { - throw new Error('No search ID in this session matching the given search request'); - } - - return session.attributes.idMapping[requestHash]; - }; - - public asScopedProvider = ({ savedObjects }: CoreStart) => { - return (request: KibanaRequest) => { - const savedObjectsClient = savedObjects.getScopedClient(request, { - includedHiddenTypes: [BACKGROUND_SESSION_TYPE], - }); - const deps = { savedObjectsClient }; - return { - save: (sessionId: string, attributes: Partial) => - this.save(sessionId, attributes, deps), - get: (sessionId: string) => this.get(sessionId, deps), - find: (options: SearchSessionFindOptions) => this.find(options, deps), - update: (sessionId: string, attributes: Partial) => - this.update(sessionId, attributes, deps), - delete: (sessionId: string) => this.delete(sessionId, deps), - trackId: (searchRequest: IKibanaSearchRequest, searchId: string, options: ISearchOptions) => - this.trackId(searchRequest, searchId, options, deps), - getId: (searchRequest: IKibanaSearchRequest, options: ISearchOptions) => - this.getId(searchRequest, options, deps), - }; - }; - }; + } } diff --git a/src/plugins/data/server/search/session/types.ts b/src/plugins/data/server/search/session/types.ts new file mode 100644 index 00000000000000..5e179b99952fea --- /dev/null +++ b/src/plugins/data/server/search/session/types.ts @@ -0,0 +1,35 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Observable } from 'rxjs'; +import { CoreStart, KibanaRequest } from 'kibana/server'; +import { ISearchStrategy } from '../types'; +import { IKibanaSearchRequest, IKibanaSearchResponse } from '../../../common/search'; + +export interface IScopedSessionService { + search: ( + strategy: ISearchStrategy, + ...args: Parameters['search']> + ) => Observable; + [prop: string]: any; +} + +export interface ISessionService { + asScopedProvider: (core: CoreStart) => (request: KibanaRequest) => IScopedSessionService; +} diff --git a/src/plugins/data/server/search/session/utils.test.ts b/src/plugins/data/server/search/session/utils.test.ts deleted file mode 100644 index d190f892a7f848..00000000000000 --- a/src/plugins/data/server/search/session/utils.test.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createRequestHash } from './utils'; - -describe('data/search/session utils', () => { - describe('createRequestHash', () => { - it('ignores `preference`', () => { - const request = { - foo: 'bar', - }; - - const withPreference = { - ...request, - preference: 1234, - }; - - expect(createRequestHash(request)).toEqual(createRequestHash(withPreference)); - }); - }); -}); diff --git a/src/plugins/data/server/search/session/utils.ts b/src/plugins/data/server/search/session/utils.ts deleted file mode 100644 index c3332f80b6e3fa..00000000000000 --- a/src/plugins/data/server/search/session/utils.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createHash } from 'crypto'; - -/** - * Generate the hash for this request so that, in the future, this hash can be used to look up - * existing search IDs for this request. Ignores the `preference` parameter since it generally won't - * match from one request to another identical request. - */ -export function createRequestHash(keys: Record) { - const { preference, ...params } = keys; - return createHash(`sha256`).update(JSON.stringify(params)).digest('hex'); -} diff --git a/src/plugins/data/server/search/types.ts b/src/plugins/data/server/search/types.ts index ebce02014c2a4e..db8b8ac72d0e56 100644 --- a/src/plugins/data/server/search/types.ts +++ b/src/plugins/data/server/search/types.ts @@ -34,9 +34,11 @@ import { import { AggsSetup, AggsStart } from './aggs'; import { SearchUsage } from './collectors'; import { IEsSearchRequest, IEsSearchResponse } from './es_search'; +import { ISessionService } from './session'; export interface SearchEnhancements { defaultStrategy: string; + sessionService: ISessionService; } export interface SearchStrategyDependencies { diff --git a/src/plugins/data/server/server.api.md b/src/plugins/data/server/server.api.md index 47e17c26398d37..d5ecea527506e5 100644 --- a/src/plugins/data/server/server.api.md +++ b/src/plugins/data/server/server.api.md @@ -9,12 +9,14 @@ import { Adapters } from 'src/plugins/inspector/common'; import { ApiResponse } from '@elastic/elasticsearch'; import { Assign } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; +import { BfetchServerSetup } from 'src/plugins/bfetch/server'; import { ConfigDeprecationProvider } from '@kbn/config'; import { CoreSetup } from 'src/core/server'; import { CoreSetup as CoreSetup_2 } from 'kibana/server'; -import { CoreStart } from 'src/core/server'; -import { CoreStart as CoreStart_2 } from 'kibana/server'; -import { Datatable } from 'src/plugins/expressions/common'; +import { CoreStart } from 'kibana/server'; +import { CoreStart as CoreStart_2 } from 'src/core/server'; +import { Datatable } from 'src/plugins/expressions'; +import { Datatable as Datatable_2 } from 'src/plugins/expressions/common'; import { DatatableColumn } from 'src/plugins/expressions'; import { Duration } from 'moment'; import { ElasticsearchClient } from 'src/core/server'; @@ -27,12 +29,15 @@ import { ExpressionAstFunction } from 'src/plugins/expressions/common'; import { ExpressionFunctionDefinition } from 'src/plugins/expressions/common'; import { ExpressionsServerSetup } from 'src/plugins/expressions/server'; import { ExpressionValueBoxed } from 'src/plugins/expressions/common'; +import { FormatFactory as FormatFactory_2 } from 'src/plugins/data/common/field_formats/utils'; import { ISavedObjectsRepository } from 'src/core/server'; import { IScopedClusterClient } from 'src/core/server'; import { ISearchOptions as ISearchOptions_2 } from 'src/plugins/data/public'; import { ISearchSource } from 'src/plugins/data/public'; import { IUiSettingsClient } from 'src/core/server'; -import { KibanaRequest } from 'src/core/server'; +import { IUiSettingsClient as IUiSettingsClient_3 } from 'kibana/server'; +import { KibanaRequest } from 'kibana/server'; +import { KibanaRequest as KibanaRequest_2 } from 'src/core/server'; import { LegacyAPICaller } from 'src/core/server'; import { Logger } from 'src/core/server'; import { Logger as Logger_2 } from 'kibana/server'; @@ -56,11 +61,12 @@ import { SavedObjectsClientContract as SavedObjectsClientContract_2 } from 'kiba import { Search } from '@elastic/elasticsearch/api/requestParams'; import { SearchResponse } from 'elasticsearch'; import { SerializedFieldFormat as SerializedFieldFormat_2 } from 'src/plugins/expressions/common'; -import { ShardsResponse } from 'elasticsearch'; +import { SharedGlobalConfig as SharedGlobalConfig_2 } from 'kibana/server'; import { ToastInputFields } from 'src/core/public/notifications'; +import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { Type } from '@kbn/config-schema'; import { TypeOf } from '@kbn/config-schema'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { Unit } from '@elastic/datemath'; // Warning: (ae-forgotten-export) The symbol "AggConfigSerialized" needs to be exported by the entry point index.d.ts @@ -299,6 +305,14 @@ export type ExecutionContextSearch = { timeRange?: TimeRange; }; +// Warning: (ae-missing-release-tag) "exporters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const exporters: { + datatableToCSV: typeof datatableToCSV; + CSV_MIME_TYPE: string; +}; + // Warning: (ae-missing-release-tag) "ExpressionFunctionKibana" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -400,25 +414,15 @@ export function getCapabilitiesForRollupIndices(indices: { [key: string]: any; }; -// Warning: (ae-forgotten-export) The symbol "IUiSettingsClient" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "getDefaultSearchParams" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient_2): Promise<{ - maxConcurrentShardRequests: number | undefined; - ignoreUnavailable: boolean; - trackTotalHits: boolean; -}>; +export function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient_3): Promise>; -// Warning: (ae-forgotten-export) The symbol "SharedGlobalConfig" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "getShardTimeout" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) -export function getShardTimeout(config: SharedGlobalConfig): { - timeout: string; -} | { - timeout?: undefined; -}; +export function getShardTimeout(config: SharedGlobalConfig_2): Pick; // Warning: (ae-forgotten-export) The symbol "IIndexPattern" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "getTime" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -429,6 +433,12 @@ export function getTime(indexPattern: IIndexPattern | undefined, timeRange: Time fieldName?: string; }): import("../..").RangeFilter | undefined; +// @internal +export function getTotalLoaded(response: SearchResponse): { + total: number; + loaded: number; +}; + // Warning: (ae-missing-release-tag) "IAggConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -445,18 +455,6 @@ export type IAggConfigs = AggConfigs; // @public (undocumented) export type IAggType = AggType; -// Warning: (ae-missing-release-tag) "IEsRawSearchResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export interface IEsRawSearchResponse extends SearchResponse { - // (undocumented) - id?: string; - // (undocumented) - is_partial?: boolean; - // (undocumented) - is_running?: boolean; -} - // Warning: (ae-forgotten-export) The symbol "IKibanaSearchRequest" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "ISearchRequestParams" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "IEsSearchRequest" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -558,7 +556,7 @@ export class IndexPattern implements IIndexPattern { constructor({ spec, fieldFormats, shortDotsEnable, metaFields, }: IndexPatternDeps); addScriptedField(name: string, script: string, fieldType?: string): Promise; // (undocumented) - deleteFieldFormat: (fieldName: string) => void; + readonly deleteFieldFormat: (fieldName: string) => void; // Warning: (ae-forgotten-export) The symbol "FieldAttrs" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -611,9 +609,7 @@ export class IndexPattern implements IIndexPattern { }; // (undocumented) getFieldAttrs: () => { - [x: string]: { - customLabel: string; - }; + [x: string]: FieldAttrSet; }; // (undocumented) getFieldByName(name: string): IndexPatternField | undefined; @@ -653,10 +649,16 @@ export class IndexPattern implements IIndexPattern { metaFields: string[]; removeScriptedField(fieldName: string): void; resetOriginalSavedObjectBody: () => void; + // (undocumented) + protected setFieldAttrs(fieldName: string, attrName: K, value: FieldAttrSet[K]): void; + // (undocumented) + setFieldCount(fieldName: string, count: number | undefined | null): void; + // (undocumented) + setFieldCustomLabel(fieldName: string, customLabel: string | undefined | null): void; // Warning: (ae-forgotten-export) The symbol "SerializedFieldFormat" needs to be exported by the entry point index.d.ts // // (undocumented) - setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; + readonly setFieldFormat: (fieldName: string, format: SerializedFieldFormat) => void; // Warning: (ae-forgotten-export) The symbol "SourceFilter" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -734,16 +736,19 @@ export class IndexPatternsFetcher { } // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceStart" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "IndexPatternsService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// Warning: (ae-missing-release-tag) "IndexPatternsServiceProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export class IndexPatternsService implements Plugin_3 { + // Warning: (ae-forgotten-export) The symbol "DataPluginStartDependencies" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceSetupDeps" needs to be exported by the entry point index.d.ts + // // (undocumented) - setup(core: CoreSetup_2): void; + setup(core: CoreSetup_2, { expressions }: IndexPatternsServiceSetupDeps): void; // Warning: (ae-forgotten-export) The symbol "IndexPatternsServiceStartDeps" needs to be exported by the entry point index.d.ts // // (undocumented) - start(core: CoreStart_2, { fieldFormats, logger }: IndexPatternsServiceStartDeps): { + start(core: CoreStart, { fieldFormats, logger }: IndexPatternsServiceStartDeps): { indexPatternsServiceFactory: (savedObjectsClient: SavedObjectsClientContract_2, elasticsearchClient: ElasticsearchClient_2) => Promise; }; } @@ -786,11 +791,11 @@ export interface ISearchStart ISearchClient; + asScoped: (request: KibanaRequest_2) => ISearchClient; getSearchStrategy: (name?: string) => ISearchStrategy; // (undocumented) searchSource: { - asScoped: (request: KibanaRequest) => Promise; + asScoped: (request: KibanaRequest_2) => Promise; }; } @@ -804,6 +809,16 @@ export interface ISearchStrategy Observable; } +// Warning: (ae-missing-release-tag) "ISessionService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ISessionService { + // Warning: (ae-forgotten-export) The symbol "IScopedSessionService" needs to be exported by the entry point index.d.ts + // + // (undocumented) + asScopedProvider: (core: CoreStart) => (request: KibanaRequest) => IScopedSessionService; +} + // @public (undocumented) export enum KBN_FIELD_TYPES { // (undocumented) @@ -947,14 +962,13 @@ export type ParsedInterval = ReturnType; export function parseInterval(interval: string): moment.Duration | null; // Warning: (ae-forgotten-export) The symbol "DataPluginSetupDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "DataPluginStartDependencies" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "DataServerPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export class Plugin implements Plugin_2 { constructor(initializerContext: PluginInitializerContext_2); // (undocumented) - setup(core: CoreSetup, { expressions, usageCollection }: DataPluginSetupDependencies): { + setup(core: CoreSetup, { bfetch, expressions, usageCollection }: DataPluginSetupDependencies): { __enhance: (enhancements: DataEnhancements) => void; search: ISearchSetup; fieldFormats: { @@ -962,7 +976,7 @@ export class Plugin implements Plugin_2 Promise; }; @@ -1032,24 +1046,6 @@ export interface RefreshInterval { // // @public (undocumented) export const search: { - esSearch: { - utils: { - doSearch: (searchMethod: () => Promise, abortSignal?: AbortSignal | undefined) => import("rxjs").Observable; - shimAbortSignal: >(promise: T, signal: AbortSignal | undefined) => T; - trackSearchStatus: = import("./search").IEsSearchResponse>>(logger: import("src/core/server").Logger, usage?: import("./search").SearchUsage | undefined) => import("rxjs").UnaryFunction, import("rxjs").Observable>; - includeTotalLoaded: () => import("rxjs").OperatorFunction>, { - total: number; - loaded: number; - id?: string | undefined; - isRunning?: boolean | undefined; - isPartial?: boolean | undefined; - rawResponse: import("elasticsearch").SearchResponse; - }>; - toKibanaSearchResponse: = import("../common").IEsRawSearchResponse, KibanaResponse_1 extends import("../common").IKibanaSearchResponse = import("../common").IKibanaSearchResponse>() => import("rxjs").OperatorFunction, KibanaResponse_1>; - getTotalLoaded: typeof getTotalLoaded; - toSnakeCase: typeof toSnakeCase; - }; - }; aggs: { CidrMask: typeof CidrMask; dateHistogramInterval: typeof dateHistogramInterval; @@ -1076,6 +1072,7 @@ export const search: { siblingPipelineType: string; termsAggFilter: string[]; toAbsoluteDates: typeof toAbsoluteDates; + calcAutoIntervalLessThan: typeof calcAutoIntervalLessThan; }; getRequestInspectorStats: typeof getRequestInspectorStats; getResponseInspectorStats: typeof getResponseInspectorStats; @@ -1105,6 +1102,30 @@ export interface SearchUsage { trackSuccess(duration: number): Promise; } +// Warning: (ae-missing-release-tag) "searchUsageObserver" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function searchUsageObserver(logger: Logger_2, usage?: SearchUsage): { + next(response: IEsSearchResponse): void; + error(): void; +}; + +// Warning: (ae-missing-release-tag) "SessionService" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export class SessionService implements ISessionService { + constructor(); + // (undocumented) + asScopedProvider(core: CoreStart): (request: KibanaRequest) => { + search: , Response_1 extends IKibanaSearchResponse>(strategy: ISearchStrategy, request: Request_1, options: import("../../../common").ISearchOptions, deps: import("../types").SearchStrategyDependencies) => import("rxjs").Observable; + }; + // (undocumented) + search(strategy: ISearchStrategy, ...args: Parameters['search']>): import("rxjs").Observable; +} + +// @internal +export const shimAbortSignal: (promise: TransportRequestPromise, signal?: AbortSignal | undefined) => TransportRequestPromise; + // @internal export function shimHitsTotal(response: SearchResponse): { hits: { @@ -1167,6 +1188,15 @@ export type TimeRange = { mode?: 'absolute' | 'relative'; }; +// @internal +export function toKibanaSearchResponse(rawResponse: SearchResponse): { + total: number; + loaded: number; + rawResponse: SearchResponse; + isPartial: boolean; + isRunning: boolean; +}; + // Warning: (ae-missing-release-tag) "UI_SETTINGS" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -1215,45 +1245,46 @@ export function usageProvider(core: CoreSetup_2): SearchUsage; // src/plugins/data/common/es_query/filters/meta_filter.ts:54:3 - (ae-forgotten-export) The symbol "FilterMeta" needs to be exported by the entry point index.d.ts // src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:58:45 - (ae-forgotten-export) The symbol "IndexPatternFieldMap" needs to be exported by the entry point index.d.ts // src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:64:5 - (ae-forgotten-export) The symbol "FormatFieldFn" needs to be exported by the entry point index.d.ts +// src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts:128:7 - (ae-forgotten-export) The symbol "FieldAttrSet" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:40:23 - (ae-forgotten-export) The symbol "buildCustomFilter" needs to be exported by the entry point index.d.ts // src/plugins/data/server/index.ts:40:23 - (ae-forgotten-export) The symbol "buildFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:71:21 - (ae-forgotten-export) The symbol "getEsQueryConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:71:21 - (ae-forgotten-export) The symbol "buildEsQuery" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "FieldFormatsRegistry" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "FieldFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "BoolFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "BytesFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "ColorFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "DurationFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "IpFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "NumberFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "PercentFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "RelativeDateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "SourceFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "StaticLookupFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:101:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:127:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:127:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:243:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:243:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:243:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:243:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:258:5 - (ae-forgotten-export) The symbol "getTotalLoaded" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:259:5 - (ae-forgotten-export) The symbol "toSnakeCase" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:263:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:264:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:273:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:274:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:275:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:279:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:280:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:284:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index.ts:287:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/index_patterns/index_patterns_service.ts:58:14 - (ae-forgotten-export) The symbol "IndexPatternsService" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/plugin.ts:88:66 - (ae-forgotten-export) The symbol "DataEnhancements" needs to be exported by the entry point index.d.ts -// src/plugins/data/server/search/types.ts:104:5 - (ae-forgotten-export) The symbol "ISearchStartSearchSource" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:57:23 - (ae-forgotten-export) The symbol "datatableToCSV" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:81:21 - (ae-forgotten-export) The symbol "getEsQueryConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:81:21 - (ae-forgotten-export) The symbol "buildEsQuery" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "FieldFormatsRegistry" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "FieldFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "BoolFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "BytesFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "ColorFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "DurationFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "IpFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "NumberFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "PercentFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "RelativeDateFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "SourceFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "StaticLookupFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "UrlFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "StringFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:111:26 - (ae-forgotten-export) The symbol "TruncateFormat" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:137:27 - (ae-forgotten-export) The symbol "isFilterable" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:137:27 - (ae-forgotten-export) The symbol "isNestedField" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:250:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:250:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:250:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:250:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:252:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:253:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:262:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:263:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:264:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:268:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:269:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:273:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:276:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index.ts:277:1 - (ae-forgotten-export) The symbol "calcAutoIntervalLessThan" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/index_patterns/index_patterns_service.ts:70:14 - (ae-forgotten-export) The symbol "IndexPatternsService" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/plugin.ts:90:74 - (ae-forgotten-export) The symbol "DataEnhancements" needs to be exported by the entry point index.d.ts +// src/plugins/data/server/search/types.ts:106:5 - (ae-forgotten-export) The symbol "ISearchStartSearchSource" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/src/plugins/data/server/ui_settings.ts b/src/plugins/data/server/ui_settings.ts index 9393700a0e771f..f5360f626ac660 100644 --- a/src/plugins/data/server/ui_settings.ts +++ b/src/plugins/data/server/ui_settings.ts @@ -267,14 +267,13 @@ export function getUiSettings(): Record> { }, [UI_SETTINGS.COURIER_BATCH_SEARCHES]: { name: i18n.translate('data.advancedSettings.courier.batchSearchesTitle', { - defaultMessage: 'Batch concurrent searches', + defaultMessage: 'Use legacy search', }), value: false, type: 'boolean', description: i18n.translate('data.advancedSettings.courier.batchSearchesText', { - defaultMessage: `When disabled, dashboard panels will load individually, and search requests will terminate when users navigate - away or update the query. When enabled, dashboard panels will load together when all of the data is loaded, and - searches will not terminate.`, + defaultMessage: `Kibana uses a new search and batching infrastructure. + Enable this option if you prefer to fallback to the legacy synchronous behavior`, }), deprecation: { message: i18n.translate('data.advancedSettings.courier.batchSearchesTextDeprecation', { diff --git a/src/plugins/discover/jest.config.js b/src/plugins/discover/jest.config.js new file mode 100644 index 00000000000000..0723569db357d3 --- /dev/null +++ b/src/plugins/discover/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/discover'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/discover/public/__mocks__/config.ts b/src/plugins/discover/public/__mocks__/config.ts new file mode 100644 index 00000000000000..a6cdfedd795b51 --- /dev/null +++ b/src/plugins/discover/public/__mocks__/config.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IUiSettingsClient } from '../../../../core/public'; + +export const configMock = ({ + get: (key: string) => { + if (key === 'defaultIndex') { + return 'the-index-pattern-id'; + } + + return ''; + }, +} as unknown) as IUiSettingsClient; diff --git a/src/plugins/discover/public/__mocks__/index_pattern.ts b/src/plugins/discover/public/__mocks__/index_pattern.ts new file mode 100644 index 00000000000000..696079ec72a732 --- /dev/null +++ b/src/plugins/discover/public/__mocks__/index_pattern.ts @@ -0,0 +1,74 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IndexPattern, indexPatterns } from '../kibana_services'; +import { IIndexPatternFieldList } from '../../../data/common/index_patterns/fields'; + +const fields = [ + { + name: '_index', + type: 'string', + scripted: false, + filterable: true, + }, + { + name: 'message', + type: 'string', + scripted: false, + filterable: false, + }, + { + name: 'extension', + type: 'string', + scripted: false, + filterable: true, + }, + { + name: 'bytes', + type: 'number', + scripted: false, + filterable: true, + }, + { + name: 'scripted', + type: 'number', + scripted: true, + filterable: false, + }, +] as IIndexPatternFieldList; + +fields.getByName = (name: string) => { + return fields.find((field) => field.name === name); +}; + +const indexPattern = ({ + id: 'the-index-pattern-id', + title: 'the-index-pattern-title', + metaFields: ['_index', '_score'], + flattenHit: undefined, + formatHit: jest.fn((hit) => hit._source), + fields, + getComputedFields: () => ({}), + getSourceFiltering: () => ({}), + getFieldByName: () => ({}), +} as unknown) as IndexPattern; + +indexPattern.flattenHit = indexPatterns.flattenHitWrapper(indexPattern, indexPattern.metaFields); + +export const indexPatternMock = indexPattern; diff --git a/src/plugins/discover/public/__mocks__/index_patterns.ts b/src/plugins/discover/public/__mocks__/index_patterns.ts new file mode 100644 index 00000000000000..f413a111a1d795 --- /dev/null +++ b/src/plugins/discover/public/__mocks__/index_patterns.ts @@ -0,0 +1,32 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { IndexPatternsService } from '../../../data/common'; +import { indexPatternMock } from './index_pattern'; + +export const indexPatternsMock = ({ + getCache: () => { + return [indexPatternMock]; + }, + get: (id: string) => { + if (id === 'the-index-pattern-id') { + return indexPatternMock; + } + }, +} as unknown) as IndexPatternsService; diff --git a/src/plugins/discover/public/__mocks__/saved_search.ts b/src/plugins/discover/public/__mocks__/saved_search.ts new file mode 100644 index 00000000000000..11f36fdfde67cc --- /dev/null +++ b/src/plugins/discover/public/__mocks__/saved_search.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { SavedSearch } from '../saved_searches'; + +export const savedSearchMock = ({ + id: 'the-saved-search-id', + type: 'search', + attributes: { + title: 'the-saved-search-title', + kibanaSavedObjectMeta: { + searchSourceJSON: + '{"highlightAll":true,"version":true,"query":{"query":"foo : \\"bar\\" ","language":"kuery"},"filter":[],"indexRefName":"kibanaSavedObjectMeta.searchSourceJSON.index"}', + }, + }, + references: [ + { + name: 'kibanaSavedObjectMeta.searchSourceJSON.index', + type: 'index-pattern', + id: 'the-index-pattern-id', + }, + ], + migrationVersion: { search: '7.5.0' }, + error: undefined, +} as unknown) as SavedSearch; diff --git a/src/plugins/discover/public/application/_discover.scss b/src/plugins/discover/public/application/_discover.scss deleted file mode 100644 index bc704439d161bb..00000000000000 --- a/src/plugins/discover/public/application/_discover.scss +++ /dev/null @@ -1,162 +0,0 @@ -.dscAppWrapper { - display: flex; - flex-direction: column; - flex-grow: 1; - overflow: hidden; -} - -.dscAppContainer { - > * { - position: relative; - } -} -discover-app { - flex-grow: 1; -} - -.dscHistogram { - display: flex; - height: 200px; - padding: $euiSizeS; -} - -// SASSTODO: replace the z-index value with a variable -.dscWrapper { - padding-left: $euiSizeXL; - padding-right: $euiSizeS; - z-index: 1; - @include euiBreakpoint('xs', 's', 'm') { - padding-left: $euiSizeS; - } -} - -@include euiPanel('.dscWrapper__content'); - -.dscWrapper__content { - padding-top: $euiSizeXS; - background-color: $euiColorEmptyShade; - - .kbn-table { - margin-bottom: 0; - } -} - -.dscTimechart { - display: block; - position: relative; - - // SASSTODO: the visualizing component should have an option or a modifier - .series > rect { - fill-opacity: 0.5; - stroke-width: 1; - } -} - -.dscResultCount { - padding-top: $euiSizeXS; -} - -.dscTimechart__header { - display: flex; - justify-content: center; - min-height: $euiSizeXXL; - padding: $euiSizeXS 0; -} - -.dscOverlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 20; - padding-top: $euiSizeM; - - opacity: 0.75; - text-align: center; - background-color: transparent; -} - -.dscTable { - overflow: auto; - - // SASSTODO: add a monospace modifier to the doc-table component - .kbnDocTable__row { - font-family: $euiCodeFontFamily; - font-size: $euiFontSizeXS; - } -} - -// SASSTODO: replace the padding value with a variable -.dscTable__footer { - background-color: $euiColorLightShade; - padding: 5px 10px; - text-align: center; -} - -.dscResults { - h3 { - margin: -20px 0 10px 0; - text-align: center; - } -} - -.dscResults__interval { - display: inline-block; - width: auto; -} - -.dscSkipButton { - position: absolute; - right: $euiSizeM; - top: $euiSizeXS; -} - -.dscTableFixedScroll { - overflow-x: auto; - padding-bottom: 0; - - + .dscTableFixedScroll__scroller { - position: fixed; - bottom: 0; - overflow-x: auto; - overflow-y: hidden; - } -} - -.dscCollapsibleSidebar { - position: relative; - z-index: $euiZLevel1; - - .dscCollapsibleSidebar__collapseButton { - position: absolute; - top: 0; - right: -$euiSizeXL + 4; - cursor: pointer; - z-index: -1; - min-height: $euiSizeM; - min-width: $euiSizeM; - padding: $euiSizeXS * .5; - } - - &.closed { - width: 0 !important; - border-right-width: 0; - border-left-width: 0; - .dscCollapsibleSidebar__collapseButton { - right: -$euiSizeL + 4; - } - } -} - -@include euiBreakpoint('xs', 's', 'm') { - .dscCollapsibleSidebar { - &.closed { - display: none; - } - - .dscCollapsibleSidebar__collapseButton { - display: none; - } - } -} diff --git a/src/plugins/discover/public/application/angular/context/components/action_bar/action_bar.tsx b/src/plugins/discover/public/application/angular/context/components/action_bar/action_bar.tsx index d294ffca863414..14e43a8aa203c8 100644 --- a/src/plugins/discover/public/application/angular/context/components/action_bar/action_bar.tsx +++ b/src/plugins/discover/public/application/angular/context/components/action_bar/action_bar.tsx @@ -119,7 +119,7 @@ export function ActionBar({ - + ').height(SCROLLER_HEIGHT); - - /** - * Remove the listeners bound in listen() - * @type {function} - */ - let unlisten = _.noop; - - /** - * Listen for scroll events on the $scroller and the $el, sets unlisten() - * - * unlisten must be called before calling or listen() will throw an Error - * - * Since the browser emits "scroll" events after setting scrollLeft - * the listeners also prevent tug-of-war - * - * @throws {Error} If unlisten was not called first - * @return {undefined} - */ - function listen() { - if (unlisten !== _.noop) { - throw new Error('fixedScroll listeners were not cleaned up properly before re-listening!'); - } - - let blockTo; - function bind($from, $to) { - function handler() { - if (blockTo === $to) return (blockTo = null); - $to.scrollLeft((blockTo = $from).scrollLeft()); - } - - $from.on('scroll', handler); - return function () { - $from.off('scroll', handler); - }; - } - - unlisten = _.flow(bind($el, $scroller), bind($scroller, $el), function () { - unlisten = _.noop; - }); - } - - /** - * Revert DOM changes and event listeners - * @return {undefined} - */ - function cleanUp() { - unlisten(); - $scroller.detach(); - $el.css('padding-bottom', 0); - } - - /** - * Modify the DOM and attach event listeners based on need. - * Is called many times to re-setup, must be idempotent - * @return {undefined} - */ - function setup() { - cleanUp(); - - const containerWidth = $el.width(); - const contentWidth = $el.prop('scrollWidth'); - const containerHorizOverflow = contentWidth - containerWidth; - - const elTop = $el.offset().top - $window.scrollTop(); - const elBottom = elTop + $el.height(); - const windowVertOverflow = elBottom - $window.height(); - - const requireScroller = containerHorizOverflow > 0 && windowVertOverflow > 0; - if (!requireScroller) return; - - // push the content away from the scroller - $el.css('padding-bottom', SCROLLER_HEIGHT); - - // fill the scroller with a dummy element that mimics the content - $scroller - .width(containerWidth) - .html($('
').css({ width: contentWidth, height: SCROLLER_HEIGHT })) - .insertAfter($el); - - // listen for scroll events - listen(); - } - - let width; - let scrollWidth; - function checkWidth() { - const newScrollWidth = $el.prop('scrollWidth'); - const newWidth = $el.width(); - - if (scrollWidth !== newScrollWidth || width !== newWidth) { - $scope.$apply(setup); - - scrollWidth = newScrollWidth; - width = newWidth; - } - } - - const debouncedCheckWidth = debounce(checkWidth, 100, { - invokeApply: false, - }); - $scope.$watch(debouncedCheckWidth); - - function destroy() { - cleanUp(); - debouncedCheckWidth.cancel(); - $scroller = $window = null; - } - return destroy; - }; -} diff --git a/src/plugins/discover/public/application/angular/directives/fixed_scroll.test.js b/src/plugins/discover/public/application/angular/directives/fixed_scroll.test.js deleted file mode 100644 index e44bb45cf24310..00000000000000 --- a/src/plugins/discover/public/application/angular/directives/fixed_scroll.test.js +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import angular from 'angular'; -import 'angular-mocks'; -import $ from 'jquery'; - -import sinon from 'sinon'; - -import { initAngularBootstrap } from '../../../../../kibana_legacy/public'; -import { FixedScrollProvider } from './fixed_scroll'; - -const testModuleName = 'fixedScroll'; - -angular.module(testModuleName, []).directive('fixedScroll', FixedScrollProvider); - -describe('FixedScroll directive', function () { - const sandbox = sinon.createSandbox(); - let mockWidth; - let mockHeight; - let currentWidth = 120; - let currentHeight = 120; - let currentJqLiteWidth = 120; - let spyScrollWidth; - - let compile; - let flushPendingTasks; - const trash = []; - - beforeAll(() => { - mockWidth = jest.spyOn($.prototype, 'width').mockImplementation(function (width) { - if (width === undefined) { - return currentWidth; - } else { - currentWidth = width; - return this; - } - }); - mockHeight = jest.spyOn($.prototype, 'height').mockImplementation(function (height) { - if (height === undefined) { - return currentHeight; - } else { - currentHeight = height; - return this; - } - }); - angular.element.prototype.width = jest.fn(function (width) { - if (width === undefined) { - return currentJqLiteWidth; - } else { - currentJqLiteWidth = width; - return this; - } - }); - angular.element.prototype.offset = jest.fn(() => ({ top: 0 })); - }); - - beforeEach(() => { - currentJqLiteWidth = 120; - initAngularBootstrap(); - - angular.mock.module(testModuleName); - angular.mock.inject(($compile, $rootScope, $timeout) => { - flushPendingTasks = function flushPendingTasks() { - $rootScope.$digest(); - $timeout.flush(); - }; - - compile = function (ratioY, ratioX) { - if (ratioX == null) ratioX = ratioY; - - // since the directive works at the sibling level we create a - // parent for everything to happen in - const $parent = $('
').css({ - position: 'fixed', - top: 0, - left: 0, - right: 0, - bottom: 0, - }); - - $parent.appendTo(document.body); - trash.push($parent); - - const $el = $('
') - .css({ - 'overflow-x': 'auto', - width: $parent.width(), - }) - .appendTo($parent); - - spyScrollWidth = jest.spyOn(window.HTMLElement.prototype, 'scrollWidth', 'get'); - spyScrollWidth.mockReturnValue($parent.width() * ratioX); - angular.element.prototype.height = jest.fn(() => $parent.height() * ratioY); - - const $content = $('
') - .css({ - width: $parent.width() * ratioX, - height: $parent.height() * ratioY, - }) - .appendTo($el); - - $compile($parent)($rootScope); - flushPendingTasks(); - - return { - $container: $el, - $content: $content, - $scroller: $parent.find('.dscTableFixedScroll__scroller'), - }; - }; - }); - }); - - afterEach(function () { - trash.splice(0).forEach(function ($el) { - $el.remove(); - }); - - sandbox.restore(); - spyScrollWidth.mockRestore(); - }); - - afterAll(() => { - mockWidth.mockRestore(); - mockHeight.mockRestore(); - delete angular.element.prototype.width; - delete angular.element.prototype.height; - delete angular.element.prototype.offset; - }); - - test('does nothing when not needed', function () { - let els = compile(0.5, 1.5); - expect(els.$scroller).toHaveLength(0); - - els = compile(1.5, 0.5); - expect(els.$scroller).toHaveLength(0); - }); - - test('attaches a scroller below the element when the content is larger then the container', function () { - const els = compile(1.5); - expect(els.$scroller.length).toBe(1); - }); - - test('copies the width of the container', function () { - const els = compile(1.5); - expect(els.$scroller.width()).toBe(els.$container.width()); - }); - - test('mimics the scrollWidth of the element', function () { - const els = compile(1.5); - expect(els.$scroller.prop('scrollWidth')).toBe(els.$container.prop('scrollWidth')); - }); - - describe('scroll event handling / tug of war prevention', function () { - test('listens when needed, unlistens when not needed', function (done) { - const on = sandbox.spy($.fn, 'on'); - const off = sandbox.spy($.fn, 'off'); - const jqLiteOn = sandbox.spy(angular.element.prototype, 'on'); - const jqLiteOff = sandbox.spy(angular.element.prototype, 'off'); - - const els = compile(1.5); - expect(on.callCount).toBe(1); - expect(jqLiteOn.callCount).toBe(1); - checkThisVals('$.fn.on', on, jqLiteOn); - - expect(off.callCount).toBe(0); - expect(jqLiteOff.callCount).toBe(0); - currentJqLiteWidth = els.$container.prop('scrollWidth'); - flushPendingTasks(); - expect(off.callCount).toBe(1); - expect(jqLiteOff.callCount).toBe(1); - checkThisVals('$.fn.off', off, jqLiteOff); - done(); - - function checkThisVals(namejQueryFn, spyjQueryFn, spyjqLiteFn) { - // the this values should be different - expect(spyjQueryFn.thisValues[0].is(spyjqLiteFn.thisValues[0])).toBeFalsy(); - // but they should be either $scroller or $container - const el = spyjQueryFn.thisValues[0]; - - if (el.is(els.$scroller) || el.is(els.$container)) return; - - done.fail('expected ' + namejQueryFn + ' to be called with $scroller or $container'); - } - }); - - // Turn off this row because tests failed. - // Scroll event is not catched in fixed_scroll. - // As container is jquery element in test but inside fixed_scroll it's a jqLite element. - // it would need jquery in jest to make this work. - [ - //{ from: '$container', to: '$scroller' }, - { from: '$scroller', to: '$container' }, - ].forEach(function (names) { - describe('scroll events ' + JSON.stringify(names), function () { - let spyJQueryScrollLeft; - let spyJQLiteScrollLeft; - let els; - let $from; - let $to; - - beforeEach(function () { - spyJQueryScrollLeft = sandbox.spy($.fn, 'scrollLeft'); - spyJQLiteScrollLeft = sandbox.stub(); - angular.element.prototype.scrollLeft = spyJQLiteScrollLeft; - els = compile(1.5); - $from = els[names.from]; - $to = els[names.to]; - }); - - afterAll(() => { - delete angular.element.prototype.scrollLeft; - }); - - test('transfers the scrollLeft', function () { - expect(spyJQueryScrollLeft.callCount).toBe(0); - expect(spyJQLiteScrollLeft.callCount).toBe(0); - $from.scroll(); - expect(spyJQueryScrollLeft.callCount).toBe(1); - expect(spyJQLiteScrollLeft.callCount).toBe(1); - - // first call should read the scrollLeft from the $container - const firstCall = spyJQueryScrollLeft.getCall(0); - expect(firstCall.args).toEqual([]); - - // second call should be setting the scrollLeft on the $scroller - const secondCall = spyJQLiteScrollLeft.getCall(0); - expect(secondCall.args).toEqual([firstCall.returnValue]); - }); - - /** - * In practice, calling $el.scrollLeft() causes the "scroll" event to trigger, - * but the browser seems to be very careful about triggering the event too much - * and I can't reliably recreate the browsers behavior in a test. So... faking it! - */ - test('prevents tug of war by ignoring echo scroll events', function () { - $from.scroll(); - expect(spyJQueryScrollLeft.callCount).toBe(1); - expect(spyJQLiteScrollLeft.callCount).toBe(1); - - spyJQueryScrollLeft.resetHistory(); - spyJQLiteScrollLeft.resetHistory(); - $to.scroll(); - expect(spyJQueryScrollLeft.callCount).toBe(0); - expect(spyJQLiteScrollLeft.callCount).toBe(0); - }); - }); - }); - }); -}); diff --git a/src/plugins/discover/public/application/angular/directives/uninitialized.tsx b/src/plugins/discover/public/application/angular/directives/uninitialized.tsx index d04aea09331159..f2b1f584224ef7 100644 --- a/src/plugins/discover/public/application/angular/directives/uninitialized.tsx +++ b/src/plugins/discover/public/application/angular/directives/uninitialized.tsx @@ -20,7 +20,7 @@ import React from 'react'; import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { EuiButton, EuiEmptyPrompt, EuiPage, EuiPageBody, EuiPageContent } from '@elastic/eui'; +import { EuiButton, EuiEmptyPrompt } from '@elastic/eui'; interface Props { onRefresh: () => void; @@ -29,39 +29,30 @@ interface Props { export const DiscoverUninitialized = ({ onRefresh }: Props) => { return ( - - - - - - - } - body={ -

- -

- } - actions={ - - - - } + + + + } + body={ +

+ - - - +

+ } + actions={ + + + + } + />
); }; diff --git a/src/plugins/discover/public/application/angular/discover.js b/src/plugins/discover/public/application/angular/discover.js index 9319c58db3e33f..2c3b8fd9606a95 100644 --- a/src/plugins/discover/public/application/angular/discover.js +++ b/src/plugins/discover/public/application/angular/discover.js @@ -18,41 +18,60 @@ */ import _ from 'lodash'; -import React from 'react'; -import { Subscription, Subject, merge } from 'rxjs'; +import { merge, Subject, Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; import moment from 'moment'; import dateMath from '@elastic/datemath'; import { i18n } from '@kbn/i18n'; -import { getState, splitState } from './discover_state'; +import { createSearchSessionRestorationDataProvider, getState, splitState } from './discover_state'; import { RequestAdapter } from '../../../../inspector/public'; import { + connectToQueryState, esFilters, indexPatterns as indexPatternsUtils, - connectToQueryState, syncQueryStateWithUrl, } from '../../../../data/public'; -import { SavedObjectSaveModal, showSaveModal } from '../../../../saved_objects/public'; -import { getSortArray, getSortForSearchSource } from './doc_table'; -import { createFixedScroll } from './directives/fixed_scroll'; +import { getSortArray } from './doc_table'; import * as columnActions from './doc_table/actions/columns'; import indexTemplateLegacy from './discover_legacy.html'; -import { showOpenSearchPanel } from '../components/top_nav/show_open_search_panel'; import { addHelpMenuToAppChrome } from '../components/help_menu/help_menu_util'; import { discoverResponseHandler } from './response_handler'; import { + getAngularModule, + getHeaderActionMenuMounter, getRequestInspectorStats, getResponseInspectorStats, getServices, - getHeaderActionMenuMounter, getUrlTracker, - unhashUrl, + redirectWhenMissing, subscribeWithScope, tabifyAggResponse, - getAngularModule, - redirectWhenMissing, } from '../../kibana_services'; +import { + getRootBreadcrumbs, + getSavedSearchBreadcrumbs, + setBreadcrumbsTitle, +} from '../helpers/breadcrumbs'; +import { validateTimeRange } from '../helpers/validate_time_range'; +import { popularizeField } from '../helpers/popularize_field'; +import { getSwitchIndexPatternAppState } from '../helpers/get_switch_index_pattern_app_state'; +import { addFatalError } from '../../../../kibana_legacy/public'; +import { METRIC_TYPE } from '@kbn/analytics'; +import { SEARCH_SESSION_ID_QUERY_PARAM } from '../../url_generator'; +import { getQueryParams, removeQueryParam } from '../../../../kibana_utils/public'; +import { + DEFAULT_COLUMNS_SETTING, + MODIFY_COLUMNS_ON_SWITCH, + SAMPLE_SIZE_SETTING, + SEARCH_ON_PAGE_LOAD_SETTING, +} from '../../../common'; +import { loadIndexPattern, resolveIndexPattern } from '../helpers/resolve_index_pattern'; +import { getTopNavLinks } from '../components/top_nav/get_top_nav_links'; +import { updateSearchSource } from '../helpers/update_search_source'; +import { calcFieldCounts } from '../helpers/calc_field_counts'; + +const services = getServices(); const { core, @@ -61,31 +80,12 @@ const { history: getHistory, indexPatterns, filterManager, - share, timefilter, toastNotifications, uiSettings: config, trackUiMetric, } = getServices(); -import { getRootBreadcrumbs, getSavedSearchBreadcrumbs } from '../helpers/breadcrumbs'; -import { validateTimeRange } from '../helpers/validate_time_range'; -import { popularizeField } from '../helpers/popularize_field'; -import { getSwitchIndexPatternAppState } from '../helpers/get_switch_index_pattern_app_state'; -import { getIndexPatternId } from '../helpers/get_index_pattern_id'; -import { addFatalError } from '../../../../kibana_legacy/public'; -import { - DEFAULT_COLUMNS_SETTING, - SAMPLE_SIZE_SETTING, - SORT_DEFAULT_ORDER_SETTING, - SEARCH_ON_PAGE_LOAD_SETTING, - DOC_HIDE_TIME_COLUMN_SETTING, - MODIFY_COLUMNS_ON_SWITCH, -} from '../../../common'; -import { METRIC_TYPE } from '@kbn/analytics'; -import { SEARCH_SESSION_ID_QUERY_PARAM } from '../../url_generator'; -import { removeQueryParam, getQueryParams } from '../../../../kibana_utils/public'; - const fetchStatuses = { UNINITIALIZED: 'uninitialized', LOADING: 'loading', @@ -132,24 +132,7 @@ app.config(($routeProvider) => { const { appStateContainer } = getState({ history }); const { index } = appStateContainer.getState(); return Promise.props({ - ip: indexPatterns.getCache().then((indexPatternList) => { - /** - * In making the indexPattern modifiable it was placed in appState. Unfortunately, - * the load order of AppState conflicts with the load order of many other things - * so in order to get the name of the index we should use, and to switch to the - * default if necessary, we parse the appState with a temporary State object and - * then destroy it immediatly after we're done - * - * @type {State} - */ - const id = getIndexPatternId(index, indexPatternList, config.get('defaultIndex')); - return Promise.props({ - list: indexPatternList, - loaded: indexPatterns.get(id), - stateVal: index, - stateValFound: !!index && id === index, - }); - }), + ip: loadIndexPattern(index, data.indexPatterns, config), savedSearch: getServices() .getSavedSearchById(savedSearchId) .then((savedSearch) => { @@ -197,14 +180,18 @@ app.directive('discoverApp', function () { }; }); -function discoverController($element, $route, $scope, $timeout, $window, Promise, uiCapabilities) { +function discoverController($element, $route, $scope, $timeout, Promise, uiCapabilities) { const { isDefault: isDefaultType } = indexPatternsUtils; const subscriptions = new Subscription(); const refetch$ = new Subject(); let inspectorRequest; const savedSearch = $route.current.locals.savedObjects.savedSearch; $scope.searchSource = savedSearch.searchSource; - $scope.indexPattern = resolveIndexPatternLoading(); + $scope.indexPattern = resolveIndexPattern( + $route.current.locals.savedObjects.ip, + $scope.searchSource, + toastNotifications + ); //used for functional testing $scope.fetchCounter = 0; @@ -216,22 +203,30 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise // used for restoring background session let isInitialSearch = true; + // search session requested a data refresh + subscriptions.add( + data.search.session.onRefresh$.subscribe(() => { + refetch$.next(); + }) + ); + + const state = getState({ + getStateDefaults, + storeInSessionStorage: config.get('state:storeInSessionStorage'), + history, + toasts: core.notifications.toasts, + }); + const { appStateContainer, startSync: startStateSync, stopSync: stopStateSync, setAppState, replaceUrlAppState, - isAppStateDirty, kbnUrlStateStorage, getPreviousAppState, - resetInitialAppState, - } = getState({ - defaultAppState: getStateDefaults(), - storeInSessionStorage: config.get('state:storeInSessionStorage'), - history, - toasts: core.notifications.toasts, - }); + } = state; + if (appStateContainer.getState().index !== $scope.indexPattern.id) { //used index pattern is different than the given by url/state which is invalid setAppState({ index: $scope.indexPattern.id }); @@ -264,7 +259,8 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise if (!_.isEqual(newStatePartial, oldStatePartial)) { $scope.$evalAsync(async () => { if (oldStatePartial.index !== newStatePartial.index) { - //in case of index switch the route has currently to be reloaded, legacy + //in case of index pattern switch the route has currently to be reloaded, legacy + $route.reload(); return; } @@ -291,6 +287,14 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise } }); + data.search.session.setSearchSessionInfoProvider( + createSearchSessionRestorationDataProvider({ + appStateContainer, + data, + getSavedSearchId: () => savedSearch.id, + }) + ); + $scope.setIndexPattern = async (id) => { const nextIndexPattern = await indexPatterns.get(id); if (nextIndexPattern) { @@ -301,8 +305,7 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise $scope.state.sort, config.get(MODIFY_COLUMNS_ON_SWITCH) ); - await replaceUrlAppState(nextAppState); - $route.reload(); + await setAppState(nextAppState); } }; @@ -349,145 +352,36 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise unlistenHistoryBasePath(); }); - const getTopNavLinks = () => { - const newSearch = { - id: 'new', - label: i18n.translate('discover.localMenu.localMenu.newSearchTitle', { - defaultMessage: 'New', - }), - description: i18n.translate('discover.localMenu.newSearchDescription', { - defaultMessage: 'New Search', - }), - run: function () { - $scope.$evalAsync(() => { - history.push('/'); - }); - }, - testId: 'discoverNewButton', - }; - - const saveSearch = { - id: 'save', - label: i18n.translate('discover.localMenu.saveTitle', { - defaultMessage: 'Save', - }), - description: i18n.translate('discover.localMenu.saveSearchDescription', { - defaultMessage: 'Save Search', - }), - testId: 'discoverSaveButton', - run: async () => { - const onSave = ({ - newTitle, - newCopyOnSave, - isTitleDuplicateConfirmed, - onTitleDuplicate, - }) => { - const currentTitle = savedSearch.title; - savedSearch.title = newTitle; - savedSearch.copyOnSave = newCopyOnSave; - const saveOptions = { - confirmOverwrite: false, - isTitleDuplicateConfirmed, - onTitleDuplicate, - }; - return saveDataSource(saveOptions).then((response) => { - // If the save wasn't successful, put the original values back. - if (!response.id || response.error) { - savedSearch.title = currentTitle; - } else { - resetInitialAppState(); - } - return response; - }); - }; - - const saveModal = ( - {}} - title={savedSearch.title} - showCopyOnSave={!!savedSearch.id} - objectType="search" - description={i18n.translate('discover.localMenu.saveSaveSearchDescription', { - defaultMessage: - 'Save your Discover search so you can use it in visualizations and dashboards', - })} - showDescription={false} - /> - ); - showSaveModal(saveModal, core.i18n.Context); - }, - }; - - const openSearch = { - id: 'open', - label: i18n.translate('discover.localMenu.openTitle', { - defaultMessage: 'Open', - }), - description: i18n.translate('discover.localMenu.openSavedSearchDescription', { - defaultMessage: 'Open Saved Search', - }), - testId: 'discoverOpenButton', - run: () => { - showOpenSearchPanel({ - makeUrl: (searchId) => `#/view/${encodeURIComponent(searchId)}`, - I18nContext: core.i18n.Context, - }); - }, - }; - - const shareSearch = { - id: 'share', - label: i18n.translate('discover.localMenu.shareTitle', { - defaultMessage: 'Share', - }), - description: i18n.translate('discover.localMenu.shareSearchDescription', { - defaultMessage: 'Share Search', - }), - testId: 'shareTopNavButton', - run: async (anchorElement) => { - const sharingData = await this.getSharingData(); - share.toggleShareContextMenu({ - anchorElement, - allowEmbed: false, - allowShortUrl: uiCapabilities.discover.createShortUrl, - shareableUrl: unhashUrl(window.location.href), - objectId: savedSearch.id, - objectType: 'search', - sharingData: { - ...sharingData, - title: savedSearch.title, - }, - isDirty: !savedSearch.id || isAppStateDirty(), - }); - }, - }; - - const inspectSearch = { - id: 'inspect', - label: i18n.translate('discover.localMenu.inspectTitle', { - defaultMessage: 'Inspect', - }), - description: i18n.translate('discover.localMenu.openInspectorForSearchDescription', { - defaultMessage: 'Open Inspector for search', - }), - testId: 'openInspectorButton', - run() { - getServices().inspector.open(inspectorAdapters, { - title: savedSearch.title, - }); - }, - }; + const getFieldCounts = async () => { + // the field counts aren't set until we have the data back, + // so we wait for the fetch to be done before proceeding + if ($scope.fetchStatus === fetchStatuses.COMPLETE) { + return $scope.fieldCounts; + } - return [ - newSearch, - ...(uiCapabilities.discover.save ? [saveSearch] : []), - openSearch, - shareSearch, - inspectSearch, - ]; + return await new Promise((resolve) => { + const unwatch = $scope.$watch('fetchStatus', (newValue) => { + if (newValue === fetchStatuses.COMPLETE) { + unwatch(); + resolve($scope.fieldCounts); + } + }); + }); }; - $scope.topNavMenu = getTopNavLinks(); + + $scope.topNavMenu = getTopNavLinks({ + getFieldCounts, + indexPattern: $scope.indexPattern, + inspectorAdapters, + navigateTo: (path) => { + $scope.$evalAsync(() => { + history.push(path); + }); + }, + savedSearch, + services, + state, + }); $scope.searchSource .setField('index', $scope.indexPattern) @@ -511,96 +405,8 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise const pageTitleSuffix = savedSearch.id && savedSearch.title ? `: ${savedSearch.title}` : ''; chrome.docTitle.change(`Discover${pageTitleSuffix}`); - const discoverBreadcrumbsTitle = i18n.translate('discover.discoverBreadcrumbTitle', { - defaultMessage: 'Discover', - }); - - if (savedSearch.id && savedSearch.title) { - chrome.setBreadcrumbs([ - { - text: discoverBreadcrumbsTitle, - href: '#/', - }, - { text: savedSearch.title }, - ]); - } else { - chrome.setBreadcrumbs([ - { - text: discoverBreadcrumbsTitle, - }, - ]); - } - - const getFieldCounts = async () => { - // the field counts aren't set until we have the data back, - // so we wait for the fetch to be done before proceeding - if ($scope.fetchStatus === fetchStatuses.COMPLETE) { - return $scope.fieldCounts; - } - - return await new Promise((resolve) => { - const unwatch = $scope.$watch('fetchStatus', (newValue) => { - if (newValue === fetchStatuses.COMPLETE) { - unwatch(); - resolve($scope.fieldCounts); - } - }); - }); - }; - - const getSharingDataFields = async (selectedFields, timeFieldName, hideTimeColumn) => { - if (selectedFields.length === 1 && selectedFields[0] === '_source') { - const fieldCounts = await getFieldCounts(); - return { - searchFields: null, - selectFields: _.keys(fieldCounts).sort(), - }; - } - - const fields = - timeFieldName && !hideTimeColumn ? [timeFieldName, ...selectedFields] : selectedFields; - return { - searchFields: fields, - selectFields: fields, - }; - }; - this.getSharingData = async () => { - const searchSource = $scope.searchSource.createCopy(); - - const { searchFields, selectFields } = await getSharingDataFields( - $scope.state.columns, - $scope.indexPattern.timeFieldName, - config.get(DOC_HIDE_TIME_COLUMN_SETTING) - ); - searchSource.setField('fields', searchFields); - searchSource.setField( - 'sort', - getSortForSearchSource( - $scope.state.sort, - $scope.indexPattern, - config.get(SORT_DEFAULT_ORDER_SETTING) - ) - ); - searchSource.setField('highlight', null); - searchSource.setField('highlightAll', null); - searchSource.setField('aggs', null); - searchSource.setField('size', null); - - const body = await searchSource.getSearchRequestBody(); - return { - searchRequest: { - index: searchSource.getField('index').title, - body, - }, - fields: selectFields, - metaFields: $scope.indexPattern.metaFields, - conflictedTypesFields: $scope.indexPattern.fields - .filter((f) => f.type === 'conflict') - .map((f) => f.name), - indexPatternId: searchSource.getField('index').id, - }; - }; + setBreadcrumbsTitle(savedSearch, chrome); function getStateDefaults() { const query = $scope.searchSource.getField('query') || data.query.queryString.getDefaultQuery(); @@ -627,7 +433,6 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise savedSearch: savedSearch, indexPatternList: $route.current.locals.savedObjects.ip.list, config: config, - fixedScroll: createFixedScroll($scope, $timeout), setHeaderActionMenu: getHeaderActionMenuMounter(), data, }; @@ -739,57 +544,6 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise }); }); - async function saveDataSource(saveOptions) { - await $scope.updateDataSource(); - - savedSearch.columns = $scope.state.columns; - savedSearch.sort = $scope.state.sort; - - try { - const id = await savedSearch.save(saveOptions); - $scope.$evalAsync(() => { - if (id) { - toastNotifications.addSuccess({ - title: i18n.translate('discover.notifications.savedSearchTitle', { - defaultMessage: `Search '{savedSearchTitle}' was saved`, - values: { - savedSearchTitle: savedSearch.title, - }, - }), - 'data-test-subj': 'saveSearchSuccess', - }); - - if (savedSearch.id !== $route.current.params.id) { - history.push(`/view/${encodeURIComponent(savedSearch.id)}`); - } else { - // Update defaults so that "reload saved query" functions correctly - setAppState(getStateDefaults()); - chrome.docTitle.change(savedSearch.lastSavedTitle); - chrome.setBreadcrumbs([ - { - text: discoverBreadcrumbsTitle, - href: '#/', - }, - { text: savedSearch.title }, - ]); - } - } - }); - return { id }; - } catch (saveError) { - toastNotifications.addDanger({ - title: i18n.translate('discover.notifications.notSavedSearchTitle', { - defaultMessage: `Search '{savedSearchTitle}' was not saved.`, - values: { - savedSearchTitle: savedSearch.title, - }, - }), - text: saveError.message, - }); - return { error: saveError }; - } - } - $scope.opts.fetch = $scope.fetch = function () { // ignore requests to fetch before the app inits if (!init.complete) return; @@ -907,16 +661,11 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise $scope.hits = resp.hits.total; $scope.rows = resp.hits.hits; - // if we haven't counted yet, reset the counts - const counts = ($scope.fieldCounts = $scope.fieldCounts || {}); - - $scope.rows.forEach((hit) => { - const fields = Object.keys($scope.indexPattern.flattenHit(hit)); - fields.forEach((fieldName) => { - counts[fieldName] = (counts[fieldName] || 0) + 1; - }); - }); - + $scope.fieldCounts = calcFieldCounts( + $scope.fieldCounts || {}, + resp.hits.hits, + $scope.indexPattern + ); $scope.fetchStatus = fetchStatuses.COMPLETE; } @@ -944,13 +693,6 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise }; }; - $scope.toMoment = function (datetime) { - if (!datetime) { - return; - } - return moment(datetime).format(config.get('dateFormat')); - }; - $scope.resetQuery = function () { history.push( $route.current.params.id ? `/view/${encodeURIComponent($route.current.params.id)}` : '/' @@ -979,20 +721,11 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise }; $scope.updateDataSource = () => { - const { indexPattern, searchSource } = $scope; - searchSource - .setField('index', $scope.indexPattern) - .setField('size', $scope.opts.sampleSize) - .setField( - 'sort', - getSortForSearchSource( - $scope.state.sort, - indexPattern, - config.get(SORT_DEFAULT_ORDER_SETTING) - ) - ) - .setField('query', data.query.queryString.getQuery() || null) - .setField('filter', filterManager.getFilters()); + updateSearchSource($scope.searchSource, { + indexPattern: $scope.indexPattern, + services, + sort: $scope.state.sort, + }); return Promise.resolve(); }; @@ -1044,11 +777,6 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise const columns = columnActions.moveColumn($scope.state.columns, columnName, newIndex); setAppState({ columns }); }; - - $scope.scrollToTop = function () { - $window.scrollTo(0, 0); - }; - async function setupVisualization() { // If no timefield has been specified we don't create a histogram of messages if (!getTimeField()) return; @@ -1085,62 +813,6 @@ function discoverController($element, $route, $scope, $timeout, $window, Promise }); } - function getIndexPatternWarning(index) { - return i18n.translate('discover.valueIsNotConfiguredIndexPatternIDWarningTitle', { - defaultMessage: '{stateVal} is not a configured index pattern ID', - values: { - stateVal: `"${index}"`, - }, - }); - } - - function resolveIndexPatternLoading() { - const { - loaded: loadedIndexPattern, - stateVal, - stateValFound, - } = $route.current.locals.savedObjects.ip; - - const ownIndexPattern = $scope.searchSource.getOwnField('index'); - - if (ownIndexPattern && !stateVal) { - return ownIndexPattern; - } - - if (stateVal && !stateValFound) { - const warningTitle = getIndexPatternWarning(); - - if (ownIndexPattern) { - toastNotifications.addWarning({ - title: warningTitle, - text: i18n.translate('discover.showingSavedIndexPatternWarningDescription', { - defaultMessage: - 'Showing the saved index pattern: "{ownIndexPatternTitle}" ({ownIndexPatternId})', - values: { - ownIndexPatternTitle: ownIndexPattern.title, - ownIndexPatternId: ownIndexPattern.id, - }, - }), - }); - return ownIndexPattern; - } - - toastNotifications.addWarning({ - title: warningTitle, - text: i18n.translate('discover.showingDefaultIndexPatternWarningDescription', { - defaultMessage: - 'Showing the default index pattern: "{loadedIndexPatternTitle}" ({loadedIndexPatternId})', - values: { - loadedIndexPatternTitle: loadedIndexPattern.title, - loadedIndexPatternId: loadedIndexPattern.id, - }, - }), - }); - } - - return loadedIndexPattern; - } - addHelpMenuToAppChrome(chrome); init(); diff --git a/src/plugins/discover/public/application/angular/discover_state.test.ts b/src/plugins/discover/public/application/angular/discover_state.test.ts index b7b36ca960167e..2914ce8f17a09f 100644 --- a/src/plugins/discover/public/application/angular/discover_state.test.ts +++ b/src/plugins/discover/public/application/angular/discover_state.test.ts @@ -29,7 +29,7 @@ describe('Test discover state', () => { history = createBrowserHistory(); history.push('/'); state = getState({ - defaultAppState: { index: 'test' }, + getStateDefaults: () => ({ index: 'test' }), history, }); await state.replaceUrlAppState({}); @@ -84,7 +84,7 @@ describe('Test discover state with legacy migration', () => { "/#?_a=(query:(query_string:(analyze_wildcard:!t,query:'type:nice%20name:%22yeah%22')))" ); state = getState({ - defaultAppState: { index: 'test' }, + getStateDefaults: () => ({ index: 'test' }), history, }); expect(state.appStateContainer.getState()).toMatchInlineSnapshot(` diff --git a/src/plugins/discover/public/application/angular/discover_state.ts b/src/plugins/discover/public/application/angular/discover_state.ts index 5ddb6a92b5fd48..7de4ac27dd81fe 100644 --- a/src/plugins/discover/public/application/angular/discover_state.ts +++ b/src/plugins/discover/public/application/angular/discover_state.ts @@ -20,15 +20,23 @@ import { isEqual } from 'lodash'; import { History } from 'history'; import { NotificationsStart } from 'kibana/public'; import { - createStateContainer, createKbnUrlStateStorage, - syncState, - ReduxLikeStateContainer, + createStateContainer, IKbnUrlStateStorage, + ReduxLikeStateContainer, + StateContainer, + syncState, withNotifyOnErrors, } from '../../../../kibana_utils/public'; -import { esFilters, Filter, Query } from '../../../../data/public'; +import { + DataPublicPluginStart, + esFilters, + Filter, + Query, + SearchSessionInfoProvider, +} from '../../../../data/public'; import { migrateLegacyQuery } from '../helpers/migrate_legacy_query'; +import { DISCOVER_APP_URL_GENERATOR, DiscoverUrlGeneratorState } from '../../url_generator'; export interface AppState { /** @@ -65,7 +73,7 @@ interface GetStateParams { /** * Default state used for merging with with URL state to get the initial state */ - defaultAppState?: AppState; + getStateDefaults?: () => AppState; /** * Determins the use of long vs. short/hashed urls */ @@ -123,7 +131,11 @@ export interface GetStateReturn { /** * Returns whether the current app state is different to the initial state */ - isAppStateDirty: () => void; + isAppStateDirty: () => boolean; + /** + * Reset AppState to default, discarding all changes + */ + resetAppState: () => void; } const APP_STATE_URL_KEY = '_a'; @@ -132,11 +144,12 @@ const APP_STATE_URL_KEY = '_a'; * Used to sync URL with UI state */ export function getState({ - defaultAppState = {}, + getStateDefaults, storeInSessionStorage = false, history, toasts, }: GetStateParams): GetStateReturn { + const defaultAppState = getStateDefaults ? getStateDefaults() : {}; const stateStorage = createKbnUrlStateStorage({ useHash: storeInSessionStorage, history, @@ -185,6 +198,10 @@ export function getState({ resetInitialAppState: () => { initialAppState = appStateContainer.getState(); }, + resetAppState: () => { + const defaultState = getStateDefaults ? getStateDefaults() : {}; + setState(appStateContainerModified, defaultState); + }, getPreviousAppState: () => previousAppState, flushToUrl: () => stateStorage.flush(), isAppStateDirty: () => !isEqualState(initialAppState, appStateContainer.getState()), @@ -238,3 +255,47 @@ export function isEqualState(stateA: AppState, stateB: AppState) { const { filters: stateBFilters = [], ...stateBPartial } = stateB; return isEqual(stateAPartial, stateBPartial) && isEqualFilters(stateAFilters, stateBFilters); } + +export function createSearchSessionRestorationDataProvider(deps: { + appStateContainer: StateContainer; + data: DataPublicPluginStart; + getSavedSearchId: () => string | undefined; +}): SearchSessionInfoProvider { + return { + getName: async () => 'Discover', + getUrlGeneratorData: async () => { + return { + urlGeneratorId: DISCOVER_APP_URL_GENERATOR, + initialState: createUrlGeneratorState({ ...deps, forceAbsoluteTime: false }), + restoreState: createUrlGeneratorState({ ...deps, forceAbsoluteTime: true }), + }; + }, + }; +} + +function createUrlGeneratorState({ + appStateContainer, + data, + getSavedSearchId, + forceAbsoluteTime, // TODO: not implemented +}: { + appStateContainer: StateContainer; + data: DataPublicPluginStart; + getSavedSearchId: () => string | undefined; + forceAbsoluteTime: boolean; +}): DiscoverUrlGeneratorState { + const appState = appStateContainer.get(); + return { + filters: data.query.filterManager.getFilters(), + indexPatternId: appState.index, + query: appState.query, + savedSearchId: getSavedSearchId(), + timeRange: data.query.timefilter.timefilter.getTime(), // TODO: handle relative time range + searchSessionId: data.search.session.getSessionId(), + columns: appState.columns, + sort: appState.sort, + savedQuery: appState.savedQuery, + interval: appState.interval, + useHash: false, + }; +} diff --git a/src/plugins/discover/public/application/angular/doc_table/components/table_row.ts b/src/plugins/discover/public/application/angular/doc_table/components/table_row.ts index 17f3199b75b15b..e45f18606e3fc4 100644 --- a/src/plugins/discover/public/application/angular/doc_table/components/table_row.ts +++ b/src/plugins/discover/public/application/angular/doc_table/components/table_row.ts @@ -18,20 +18,15 @@ */ import { find, template } from 'lodash'; -import { stringify } from 'query-string'; import $ from 'jquery'; -import rison from 'rison-node'; -import '../../doc_viewer'; - import openRowHtml from './table_row/open.html'; import detailsHtml from './table_row/details.html'; - -import { dispatchRenderComplete, url } from '../../../../../../kibana_utils/public'; +import { dispatchRenderComplete } from '../../../../../../kibana_utils/public'; import { DOC_HIDE_TIME_COLUMN_SETTING } from '../../../../../common'; import cellTemplateHtml from '../components/table_row/cell.html'; import truncateByHeightTemplateHtml from '../components/table_row/truncate_by_height.html'; -import { esFilters } from '../../../../../../data/public'; import { getServices } from '../../../../kibana_services'; +import { getContextUrl } from '../../../helpers/get_context_url'; const TAGS_WITH_WS = />\s+ { - const globalFilters: any = getServices().filterManager.getGlobalFilters(); - const appFilters: any = getServices().filterManager.getAppFilters(); - - const hash = stringify( - url.encodeQuery({ - _g: rison.encode({ - filters: globalFilters || [], - }), - _a: rison.encode({ - columns: $scope.columns, - filters: (appFilters || []).map(esFilters.disableFilter), - }), - }), - { encode: false, sort: false } + return getContextUrl( + $scope.row._id, + $scope.indexPattern.id, + $scope.columns, + getServices().filterManager ); - - return `#/context/${encodeURIComponent($scope.indexPattern.id)}/${encodeURIComponent( - $scope.row._id - )}?${hash}`; }; // create a tr element that lists the value for each *column* diff --git a/src/plugins/discover/public/application/angular/doc_table/infinite_scroll.ts b/src/plugins/discover/public/application/angular/doc_table/infinite_scroll.ts index 1d38d0fc534d1e..f7f7d4dd90eafb 100644 --- a/src/plugins/discover/public/application/angular/doc_table/infinite_scroll.ts +++ b/src/plugins/discover/public/application/angular/doc_table/infinite_scroll.ts @@ -30,19 +30,26 @@ export function createInfiniteScrollDirective() { more: '=', }, link: ($scope: LazyScope, $element: JQuery) => { - const $window = $(window); let checkTimer: any; + /** + * depending on which version of Discover is displayed, different elements are scrolling + * and have therefore to be considered for calculation of infinite scrolling + */ + const scrollDiv = $element.parents('.dscTable'); + const scrollDivMobile = $(window); function onScroll() { if (!$scope.more) return; + const isMobileView = document.getElementsByClassName('dscSidebar__mobile').length > 0; + const usedScrollDiv = isMobileView ? scrollDivMobile : scrollDiv; + const scrollTop = usedScrollDiv.scrollTop(); - const winHeight = Number($window.height()); - const winBottom = Number(winHeight) + Number($window.scrollTop()); - const offset = $element.offset(); - const elTop = offset ? offset.top : 0; + const winHeight = Number(usedScrollDiv.height()); + const winBottom = Number(winHeight) + Number(scrollTop); + const elTop = $element.get(0).offsetTop || 0; const remaining = elTop - winBottom; - if (remaining <= winHeight * 0.5) { + if (remaining <= winHeight) { $scope[$scope.$$phase ? '$eval' : '$apply'](function () { $scope.more(); }); @@ -57,10 +64,12 @@ export function createInfiniteScrollDirective() { }, 50); } - $window.on('scroll', scheduleCheck); + scrollDiv.on('scroll', scheduleCheck); + window.addEventListener('scroll', scheduleCheck); $scope.$on('$destroy', function () { clearTimeout(checkTimer); - $window.off('scroll', scheduleCheck); + scrollDiv.off('scroll', scheduleCheck); + window.removeEventListener('scroll', scheduleCheck); }); scheduleCheck(); }, diff --git a/src/plugins/discover/public/application/angular/doc_table/lib/get_sort.ts b/src/plugins/discover/public/application/angular/doc_table/lib/get_sort.ts index 73ae691529e2b4..2605ec5bf67456 100644 --- a/src/plugins/discover/public/application/angular/doc_table/lib/get_sort.ts +++ b/src/plugins/discover/public/application/angular/doc_table/lib/get_sort.ts @@ -76,6 +76,12 @@ export function getSort(sort: SortPair[] | SortPair, indexPattern: IndexPattern) * compared to getSort it doesn't return an array of objects, it returns an array of arrays * [[fieldToSort: directionToSort]] */ -export function getSortArray(sort: SortPair[], indexPattern: IndexPattern) { - return getSort(sort, indexPattern).map((sortPair) => Object.entries(sortPair).pop()); +export function getSortArray(sort: SortPair[], indexPattern: IndexPattern): SortPairArr[] { + return getSort(sort, indexPattern).reduce((acc: SortPairArr[], sortPair) => { + const entries = Object.entries(sortPair); + if (entries && entries[0]) { + acc.push(entries[0]); + } + return acc; + }, []); } diff --git a/src/plugins/discover/public/application/components/context_app/context_app_legacy.scss b/src/plugins/discover/public/application/components/context_app/context_app_legacy.scss deleted file mode 100644 index 87194d834827b2..00000000000000 --- a/src/plugins/discover/public/application/components/context_app/context_app_legacy.scss +++ /dev/null @@ -1,5 +0,0 @@ -.dscCxtAppContent { - border: none; - background-color: transparent; - box-shadow: none; -} diff --git a/src/plugins/discover/public/application/components/context_app/context_app_legacy.tsx b/src/plugins/discover/public/application/components/context_app/context_app_legacy.tsx index b5387ec51db81b..af99c995c60eb2 100644 --- a/src/plugins/discover/public/application/components/context_app/context_app_legacy.tsx +++ b/src/plugins/discover/public/application/components/context_app/context_app_legacy.tsx @@ -16,10 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -import './context_app_legacy.scss'; import React from 'react'; import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { EuiPanel, EuiText, EuiPageContent, EuiPage } from '@elastic/eui'; +import { EuiHorizontalRule, EuiText, EuiPageContent, EuiPage } from '@elastic/eui'; import { ContextErrorMessage } from '../context_error_message'; import { DocTableLegacy, @@ -100,14 +99,9 @@ export function ContextAppLegacy(renderProps: ContextAppProps) { const loadingFeedback = () => { if (status === LOADING_STATUS.UNINITIALIZED || status === LOADING_STATUS.LOADING) { return ( - - - - - + + + ); } return null; @@ -122,13 +116,13 @@ export function ContextAppLegacy(renderProps: ContextAppProps) { {loadingFeedback()} + {isLoaded ? ( - -
- -
-
+
+ +
) : null} +
diff --git a/src/plugins/discover/public/application/components/discover.scss b/src/plugins/discover/public/application/components/discover.scss new file mode 100644 index 00000000000000..b17da97a459307 --- /dev/null +++ b/src/plugins/discover/public/application/components/discover.scss @@ -0,0 +1,91 @@ +discover-app { + flex-grow: 1; +} + +.dscPage { + @include euiBreakpoint('m', 'l', 'xl') { + height: calc(100vh - #{($euiHeaderHeightCompensation * 2)}); + } + + flex-direction: column; + overflow: hidden; + padding: 0; + + .dscPageBody { + overflow: hidden; + } +} + +.dscPageBody__inner { + overflow: hidden; + height: 100%; +} + +.dscPageBody__contents { + overflow: hidden; + padding-top: $euiSizeXS / 2; // A little breathing room for the index pattern button +} + +.dscPageContent__wrapper { + padding: 0 $euiSize $euiSize 0; + overflow: hidden; // Ensures horizontal scroll of table + + @include euiBreakpoint('xs', 's') { + padding: 0 $euiSize $euiSize; + } +} + +.dscPageContent, +.dscPageContent__inner { + height: 100%; +} + +.dscPageContent--centered { + height: auto; +} + +.dscResultCount { + padding: $euiSizeS; + + @include euiBreakpoint('xs', 's') { + .dscResultCount__toggle { + align-items: flex-end; + } + + .dscResuntCount__title, + .dscResultCount__actions { + margin-bottom: 0 !important; + } + } +} + +.dscTimechart { + display: block; + position: relative; + + // SASSTODO: the visualizing component should have an option or a modifier + .series > rect { + fill-opacity: 0.5; + stroke-width: 1; + } +} + +.dscHistogram { + display: flex; + height: $euiSize * 12.5; + padding: $euiSizeS; +} + +.dscTable { + // SASSTODO: add a monospace modifier to the doc-table component + .kbnDocTable__row { + font-family: $euiCodeFontFamily; + font-size: $euiFontSizeXS; + } +} + +.dscTable__footer { + background-color: $euiColorLightShade; + padding: $euiSizeXS $euiSizeS; + text-align: center; +} diff --git a/src/plugins/discover/public/application/components/discover_legacy.tsx b/src/plugins/discover/public/application/components/discover_legacy.tsx index e9de4c08a177b5..56f8fa46a9f690 100644 --- a/src/plugins/discover/public/application/components/discover_legacy.tsx +++ b/src/plugins/discover/public/application/components/discover_legacy.tsx @@ -16,23 +16,32 @@ * specific language governing permissions and limitations * under the License. */ -import React, { useState, useCallback, useEffect } from 'react'; -import classNames from 'classnames'; -import { EuiButtonEmpty, EuiButtonIcon } from '@elastic/eui'; +import './discover.scss'; + +import React, { useState, useRef } from 'react'; +import { + EuiButtonEmpty, + EuiButtonIcon, + EuiFlexGroup, + EuiFlexItem, + EuiHideFor, + EuiPage, + EuiPageBody, + EuiPageContent, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; import { IUiSettingsClient, MountPoint } from 'kibana/public'; +import classNames from 'classnames'; import { HitsCounter } from './hits_counter'; import { TimechartHeader } from './timechart_header'; -import { DiscoverSidebar } from './sidebar'; import { getServices, IndexPattern } from '../../kibana_services'; import { DiscoverUninitialized, DiscoverHistogram } from '../angular/directives'; import { DiscoverNoResults } from './no_results'; import { LoadingSpinner } from './loading_spinner/loading_spinner'; -import { DocTableLegacy } from '../angular/doc_table/create_doc_table_react'; +import { DocTableLegacy, DocTableLegacyProps } from '../angular/doc_table/create_doc_table_react'; import { SkipBottomButton } from './skip_bottom_button'; import { - IndexPatternField, search, ISearchSource, TimeRange, @@ -40,15 +49,20 @@ import { IndexPatternAttributes, DataPublicPluginStart, AggConfigs, + FilterManager, } from '../../../../data/public'; import { Chart } from '../angular/helpers/point_series'; import { AppState } from '../angular/discover_state'; import { SavedSearch } from '../../saved_searches'; - import { SavedObject } from '../../../../../core/types'; import { TopNavMenuData } from '../../../../navigation/public'; +import { + DiscoverSidebarResponsive, + DiscoverSidebarResponsiveProps, +} from './sidebar/discover_sidebar_responsive'; +import { DocViewFilterFn, ElasticSearchHit } from '../doc_views/doc_views_types'; -export interface DiscoverLegacyProps { +export interface DiscoverProps { addColumn: (column: string) => void; fetch: () => void; fetchCounter: number; @@ -58,7 +72,7 @@ export interface DiscoverLegacyProps { hits: number; indexPattern: IndexPattern; minimumVisibleRows: number; - onAddFilter: (field: IndexPatternField | string, value: string, type: '+' | '-') => void; + onAddFilter: DocViewFilterFn; onChangeInterval: (interval: string) => void; onMoveColumn: (columns: string, newIdx: number) => void; onRemoveColumn: (column: string) => void; @@ -70,15 +84,17 @@ export interface DiscoverLegacyProps { config: IUiSettingsClient; data: DataPublicPluginStart; fixedScroll: (el: HTMLElement) => void; + filterManager: FilterManager; indexPatternList: Array>; sampleSize: number; savedSearch: SavedSearch; setHeaderActionMenu: (menuMount: MountPoint | undefined) => void; timefield: string; + setAppState: (state: Partial) => void; }; resetQuery: () => void; resultState: string; - rows: Array>; + rows: ElasticSearchHit[]; searchSource: ISearchSource; setIndexPattern: (id: string) => void; showSaveQuery: boolean; @@ -90,6 +106,13 @@ export interface DiscoverLegacyProps { updateSavedQueryId: (savedQueryId?: string) => void; } +export const DocTableLegacyMemoized = React.memo((props: DocTableLegacyProps) => ( + +)); +export const SidebarMemoized = React.memo((props: DiscoverSidebarResponsiveProps) => ( + +)); + export function DiscoverLegacy({ addColumn, fetch, @@ -119,43 +142,30 @@ export function DiscoverLegacy({ topNavMenu, updateQuery, updateSavedQueryId, -}: DiscoverLegacyProps) { +}: DiscoverProps) { + const scrollableDesktop = useRef(null); + const collapseIcon = useRef(null); + const isMobile = () => { + // collapse icon isn't displayed in mobile view, use it to detect which view is displayed + return collapseIcon && !collapseIcon.current; + }; + + const [toggleOn, toggleChart] = useState(true); const [isSidebarClosed, setIsSidebarClosed] = useState(false); - const { TopNavMenu } = getServices().navigation.ui; - const { trackUiMetric } = getServices(); + const services = getServices(); + const { TopNavMenu } = services.navigation.ui; + const { trackUiMetric } = services; const { savedSearch, indexPatternList } = opts; const bucketAggConfig = opts.chartAggConfigs?.aggs[1]; const bucketInterval = bucketAggConfig && search.aggs.isDateHistogramBucketAggConfig(bucketAggConfig) ? bucketAggConfig.buckets?.getInterval() : undefined; - const [fixedScrollEl, setFixedScrollEl] = useState(); - - useEffect(() => (fixedScrollEl ? opts.fixedScroll(fixedScrollEl) : undefined), [ - fixedScrollEl, - opts, - ]); - const fixedScrollRef = useCallback( - (node: HTMLElement) => { - if (node !== null) { - setFixedScrollEl(node); - } - }, - [setFixedScrollEl] - ); - const sidebarClassName = classNames({ - closed: isSidebarClosed, - }); - - const mainSectionClassName = classNames({ - 'col-md-10': !isSidebarClosed, - 'col-md-12': isSidebarClosed, - }); + const contentCentered = resultState === 'uninitialized'; return ( -
-

{savedSearch.title}

+ -
-
-
- {!isSidebarClosed && ( -
- -
- )} - setIsSidebarClosed(!isSidebarClosed)} - data-test-subj="collapseSideBarButton" - aria-controls="discover-sidebar" - aria-expanded={isSidebarClosed ? 'false' : 'true'} - aria-label="Toggle sidebar" - className="dscCollapsibleSidebar__collapseButton" + +

+ {savedSearch.title} +

+ + + -
-
- {resultState === 'none' && ( - + + + setIsSidebarClosed(!isSidebarClosed)} + data-test-subj="collapseSideBarButton" + aria-controls="discover-sidebar" + aria-expanded={isSidebarClosed ? 'false' : 'true'} + aria-label="Toggle sidebar" + buttonRef={collapseIcon} /> - )} - {resultState === 'uninitialized' && } - {resultState === 'loading' && } - {resultState === 'ready' && ( -
- - 0 ? hits : 0} - showResetButton={!!(savedSearch && savedSearch.id)} - onResetQuery={resetQuery} + + + + + {resultState === 'none' && ( + - {opts.timefield && ( - - )} - - {opts.timefield && ( -
- {opts.chartAggConfigs && rows.length !== 0 && ( -
- -
- )} -
- )} - -
-
-

- -

- {rows && rows.length && ( -
- } + {resultState === 'loading' && } + {resultState === 'ready' && ( + + + + + 0 ? hits : 0} + showResetButton={!!(savedSearch && savedSearch.id)} + onResetQuery={resetQuery} /> - - ​ - - {rows.length === opts.sampleSize && ( -
- + {toggleOn && ( + + + + )} + + { + toggleChart(!toggleOn); + }} + > + {toggleOn + ? i18n.translate('discover.hideChart', { + defaultMessage: 'Hide chart', + }) + : i18n.translate('discover.showChart', { + defaultMessage: 'Show chart', + })} + + + + + + {toggleOn && opts.timefield && ( + +
+ {opts.chartAggConfigs && rows.length !== 0 && ( +
+ +
+ )} +
+
+ )} - window.scrollTo(0, 0)}> + +
+

+ +

+ {rows && rows.length && ( +
+ + {rows.length === opts.sampleSize ? ( +
- -
- )} -
- )} -
-
-
- )} -
-
-
-
+ + { + if (scrollableDesktop && scrollableDesktop.current) { + scrollableDesktop.current.focus(); + } + // Only the desktop one needs to target a specific container + if (!isMobile() && scrollableDesktop.current) { + scrollableDesktop.current.scrollTo(0, 0); + } else if (window) { + window.scrollTo(0, 0); + } + }} + > + + +
+ ) : ( + + ​ + + )} +
+ )} + + + + )} + + + + + ); } diff --git a/src/plugins/discover/public/application/components/doc/doc.tsx b/src/plugins/discover/public/application/components/doc/doc.tsx index 2623b5a270a314..d43a09bd51c6aa 100644 --- a/src/plugins/discover/public/application/components/doc/doc.tsx +++ b/src/plugins/discover/public/application/components/doc/doc.tsx @@ -18,7 +18,7 @@ */ import React from 'react'; import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { EuiCallOut, EuiLink, EuiLoadingSpinner, EuiPageContent } from '@elastic/eui'; +import { EuiCallOut, EuiLink, EuiLoadingSpinner, EuiPageContent, EuiPage } from '@elastic/eui'; import { IndexPatternsContract } from 'src/plugins/data/public'; import { ElasticRequestState, useEsDocSearch } from './use_es_doc_search'; import { getServices } from '../../../kibana_services'; @@ -49,84 +49,86 @@ export function Doc(props: DocProps) { return ( - - {reqState === ElasticRequestState.NotFoundIndexPattern && ( - - } - /> - )} - {reqState === ElasticRequestState.NotFound && ( - - } - > - + + {reqState === ElasticRequestState.NotFoundIndexPattern && ( + + } /> - - )} - - {reqState === ElasticRequestState.Error && ( - + } + > - } - > - {' '} - + )} + + {reqState === ElasticRequestState.Error && ( + + } > - - - )} + id="discover.doc.somethingWentWrongDescription" + defaultMessage="{indexName} is missing." + values={{ indexName: props.index }} + />{' '} + + + + + )} - {reqState === ElasticRequestState.Loading && ( - - {' '} - - - )} + {reqState === ElasticRequestState.Loading && ( + + {' '} + + + )} - {reqState === ElasticRequestState.Found && hit !== null && indexPattern && ( -
- -
- )} -
+ {reqState === ElasticRequestState.Found && hit !== null && indexPattern && ( +
+ +
+ )} + +
); } diff --git a/src/plugins/discover/public/application/components/doc_viewer/doc_viewer.scss b/src/plugins/discover/public/application/components/doc_viewer/doc_viewer.scss index ec2beca15a5468..b6b7a244bd1f6f 100644 --- a/src/plugins/discover/public/application/components/doc_viewer/doc_viewer.scss +++ b/src/plugins/discover/public/application/components/doc_viewer/doc_viewer.scss @@ -1,5 +1,8 @@ .kbnDocViewerTable { margin-top: $euiSizeS; + @include euiBreakpoint('xs', 's') { + table-layout: fixed; + } } .kbnDocViewer { @@ -11,10 +14,10 @@ white-space: pre-wrap; color: $euiColorFullShade; vertical-align: top; - padding-top: 2px; + padding-top: $euiSizeXS * 0.5; } .kbnDocViewer__field { - padding-top: 8px; + padding-top: $euiSizeS; } .dscFieldName { @@ -42,10 +45,9 @@ white-space: nowrap; } .kbnDocViewer__buttons { - width: 60px; + width: 96px; // Show all icons if one is focused, - // IE doesn't support, but the fallback is just the focused button becomes visible &:focus-within { .kbnDocViewer__actionButton { opacity: 1; @@ -54,11 +56,16 @@ } .kbnDocViewer__field { - width: 160px; + width: $euiSize * 10; + @include euiBreakpoint('xs', 's') { + width: $euiSize * 6; + } } .kbnDocViewer__actionButton { - opacity: 0; + @include euiBreakpoint('m', 'l', 'xl') { + opacity: 0; + } &:focus { opacity: 1; @@ -68,4 +75,3 @@ .kbnDocViewer__warning { margin-right: $euiSizeS; } - diff --git a/src/plugins/discover/public/application/components/field_name/field_name.tsx b/src/plugins/discover/public/application/components/field_name/field_name.tsx index b8f664d6cf38ab..049557dbe1971e 100644 --- a/src/plugins/discover/public/application/components/field_name/field_name.tsx +++ b/src/plugins/discover/public/application/components/field_name/field_name.tsx @@ -30,6 +30,7 @@ interface Props { fieldMapping?: FieldMapping; fieldIconProps?: Omit; scripted?: boolean; + className?: string; } export function FieldName({ @@ -37,6 +38,7 @@ export function FieldName({ fieldMapping, fieldType, fieldIconProps, + className, scripted = false, }: Props) { const typeName = getFieldTypeName(fieldType); @@ -45,7 +47,7 @@ export function FieldName({ const tooltip = displayName !== fieldName ? `${fieldName} (${displayName})` : fieldName; return ( - + diff --git a/src/plugins/discover/public/application/components/hits_counter/hits_counter.scss b/src/plugins/discover/public/application/components/hits_counter/hits_counter.scss new file mode 100644 index 00000000000000..5a3999f129bf4f --- /dev/null +++ b/src/plugins/discover/public/application/components/hits_counter/hits_counter.scss @@ -0,0 +1,3 @@ +.dscHitsCounter { + flex-grow: 0; +} diff --git a/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx b/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx index 1d2cd12877b1c0..dfd155c3329e47 100644 --- a/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx +++ b/src/plugins/discover/public/application/components/hits_counter/hits_counter.tsx @@ -16,6 +16,8 @@ * specific language governing permissions and limitations * under the License. */ +import './hits_counter.scss'; + import React from 'react'; import { EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; @@ -41,8 +43,8 @@ export function HitsCounter({ hits, showResetButton, onResetQuery }: HitsCounter return ( +

diff --git a/src/plugins/discover/public/application/components/no_results/_no_results.scss b/src/plugins/discover/public/application/components/no_results/_no_results.scss index 7ea945e820bf99..6500593d572348 100644 --- a/src/plugins/discover/public/application/components/no_results/_no_results.scss +++ b/src/plugins/discover/public/application/components/no_results/_no_results.scss @@ -1,3 +1,3 @@ .dscNoResults { - max-width: 1000px; + padding: $euiSize; } diff --git a/src/plugins/discover/public/application/components/no_results/no_results.tsx b/src/plugins/discover/public/application/components/no_results/no_results.tsx index fcc2912d16dd5d..df28b4795b4fb6 100644 --- a/src/plugins/discover/public/application/components/no_results/no_results.tsx +++ b/src/plugins/discover/public/application/components/no_results/no_results.tsx @@ -19,7 +19,7 @@ import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiButton, EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; +import { EuiButton, EuiCallOut, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { getServices } from '../../../kibana_services'; import { DataPublicPluginStart } from '../../../../../data/public'; import { getLuceneQueryMessage, getTimeFieldMessage } from './no_results_helper'; @@ -85,7 +85,6 @@ export function DiscoverNoResults({ return ( - {callOut} ); diff --git a/src/plugins/discover/public/application/components/sidebar/change_indexpattern.tsx b/src/plugins/discover/public/application/components/sidebar/change_indexpattern.tsx index 4a539b618f817f..f4c24c9d30bc10 100644 --- a/src/plugins/discover/public/application/components/sidebar/change_indexpattern.tsx +++ b/src/plugins/discover/public/application/components/sidebar/change_indexpattern.tsx @@ -20,16 +20,16 @@ import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import { - EuiButtonEmpty, + EuiButton, EuiPopover, EuiPopoverTitle, EuiSelectable, - EuiButtonEmptyProps, + EuiButtonProps, } from '@elastic/eui'; import { EuiSelectableProps } from '@elastic/eui/src/components/selectable/selectable'; import { IndexPatternRef } from './types'; -export type ChangeIndexPatternTriggerProps = EuiButtonEmptyProps & { +export type ChangeIndexPatternTriggerProps = EuiButtonProps & { label: string; title?: string; }; @@ -47,16 +47,15 @@ export function ChangeIndexPattern({ indexPatternRefs: IndexPatternRef[]; onChangeIndexPattern: (newId: string) => void; indexPatternId?: string; - selectableProps?: EuiSelectableProps; + selectableProps?: EuiSelectableProps<{ value: string }>; }) { const [isPopoverOpen, setPopoverIsOpen] = useState(false); const createTrigger = function () { const { label, title, ...rest } = trigger; return ( - setPopoverIsOpen(!isPopoverOpen)} {...rest} > - {label} - + {label} + ); }; @@ -74,11 +73,8 @@ export function ChangeIndexPattern({ button={createTrigger()} isOpen={isPopoverOpen} closePopover={() => setPopoverIsOpen(false)} - className="eui-textTruncate" - anchorClassName="eui-textTruncate" display="block" panelPaddingSize="s" - ownFocus >
@@ -86,7 +82,7 @@ export function ChangeIndexPattern({ defaultMessage: 'Change index pattern', })} - data-test-subj="indexPattern-switcher" {...selectableProps} searchable diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field.tsx b/src/plugins/discover/public/application/components/sidebar/discover_field.tsx index 35515a6a0e7a56..f95e512dfb66e5 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_field.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_field.tsx @@ -16,18 +16,24 @@ * specific language governing permissions and limitations * under the License. */ +import './discover_field.scss'; + import React, { useState } from 'react'; import { EuiPopover, EuiPopoverTitle, EuiButtonIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; +import classNames from 'classnames'; import { DiscoverFieldDetails } from './discover_field_details'; import { FieldIcon, FieldButton } from '../../../../../kibana_react/public'; import { FieldDetails } from './types'; import { IndexPatternField, IndexPattern } from '../../../../../data/public'; import { getFieldTypeName } from './lib/get_field_type_name'; -import './discover_field.scss'; export interface DiscoverFieldProps { + /** + * Determines whether add/remove button is displayed not only when focused + */ + alwaysShowActionButton?: boolean; /** * The displayed field */ @@ -62,10 +68,11 @@ export interface DiscoverFieldProps { * @param metricType * @param eventName */ - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } export function DiscoverField({ + alwaysShowActionButton = false, field, indexPattern, onAddField, @@ -120,7 +127,9 @@ export function DiscoverField({ {wrapOnDot(field.displayName)} ); - + const actionBtnClassName = classNames('dscSidebarItem__action', { + ['dscSidebarItem__mobile']: alwaysShowActionButton, + }); let actionButton; if (field.name !== '_source' && !selected) { actionButton = ( @@ -132,7 +141,7 @@ export function DiscoverField({ > ) => { if (ev.type === 'click') { ev.currentTarget.focus(); @@ -157,7 +166,7 @@ export function DiscoverField({ ) => { if (ev.type === 'click') { ev.currentTarget.focus(); @@ -188,7 +197,6 @@ export function DiscoverField({ return ( void; - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } export function DiscoverFieldDetails({ diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field_search.scss b/src/plugins/discover/public/application/components/sidebar/discover_field_search.scss new file mode 100644 index 00000000000000..4b620f20737710 --- /dev/null +++ b/src/plugins/discover/public/application/components/sidebar/discover_field_search.scss @@ -0,0 +1,7 @@ +.dscFieldSearch__formWrapper { + padding: $euiSizeM; +} + +.dscFieldSearch__filterWrapper { + width: 100%; +} diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field_search.test.tsx b/src/plugins/discover/public/application/components/sidebar/discover_field_search.test.tsx index 527be8cff9f0ce..bd31f313ac26c2 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_field_search.test.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_field_search.test.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import React, { EventHandler, MouseEvent as ReactMouseEvent } from 'react'; +import React from 'react'; import { act } from 'react-dom/test-utils'; import { mountWithIntl } from '@kbn/test/jest'; import { findTestSubject } from '@elastic/eui/lib/test'; @@ -50,17 +50,18 @@ describe('DiscoverFieldSearch', () => { test('change in active filters should change facet selection and call onChange', () => { const onChange = jest.fn(); const component = mountComponent({ ...defaultProps, ...{ onChange } }); - let btn = findTestSubject(component, 'toggleFieldFilterButton'); - expect(btn.hasClass('euiFacetButton--isSelected')).toBeFalsy(); + const btn = findTestSubject(component, 'toggleFieldFilterButton'); + const badge = btn.find('.euiNotificationBadge'); + expect(badge.text()).toEqual('0'); btn.simulate('click'); const aggregatableButtonGroup = findButtonGroup(component, 'aggregatable'); + act(() => { // @ts-ignore (aggregatableButtonGroup.props() as EuiButtonGroupProps).onChange('aggregatable-true', null); }); component.update(); - btn = findTestSubject(component, 'toggleFieldFilterButton'); - expect(btn.hasClass('euiFacetButton--isSelected')).toBe(true); + expect(badge.text()).toEqual('1'); expect(onChange).toBeCalledWith('aggregatable', true); }); @@ -145,33 +146,4 @@ describe('DiscoverFieldSearch', () => { popover = component.find(EuiPopover); expect(popover.prop('isOpen')).toBe(false); }); - - test('click outside popover should close popover', () => { - const triggerDocumentMouseDown: EventHandler = (e: ReactMouseEvent) => { - const event = new Event('mousedown'); - // @ts-ignore - event.euiGeneratedBy = e.nativeEvent.euiGeneratedBy; - document.dispatchEvent(event); - }; - const triggerDocumentMouseUp: EventHandler = (e: ReactMouseEvent) => { - const event = new Event('mouseup'); - // @ts-ignore - event.euiGeneratedBy = e.nativeEvent.euiGeneratedBy; - document.dispatchEvent(event); - }; - const component = mountWithIntl( -
- -
- ); - const btn = findTestSubject(component, 'toggleFieldFilterButton'); - btn.simulate('click'); - let popover = component.find(EuiPopover); - expect(popover.length).toBe(1); - expect(popover.prop('isOpen')).toBe(true); - component.find('#wrapperId').simulate('mousedown'); - component.find('#wrapperId').simulate('mouseup'); - popover = component.find(EuiPopover); - expect(popover.prop('isOpen')).toBe(false); - }); }); diff --git a/src/plugins/discover/public/application/components/sidebar/discover_field_search.tsx b/src/plugins/discover/public/application/components/sidebar/discover_field_search.tsx index a42e2412ae9288..60eccefd350069 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_field_search.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_field_search.tsx @@ -16,14 +16,15 @@ * specific language governing permissions and limitations * under the License. */ +import './discover_field_search.scss'; + import React, { OptionHTMLAttributes, ReactNode, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { - EuiFacetButton, EuiFieldSearch, + EuiFilterGroup, EuiFlexGroup, EuiFlexItem, - EuiIcon, EuiPopover, EuiPopoverFooter, EuiPopoverTitle, @@ -34,6 +35,8 @@ import { EuiFormRow, EuiButtonGroup, EuiOutsideClickDetector, + EuiFilterButton, + EuiSpacer, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -108,7 +111,7 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) { defaultMessage: 'Show field filter settings', }); - const handleFacetButtonClicked = () => { + const handleFilterButtonClicked = () => { setPopoverOpen(!isPopoverOpen); }; @@ -162,20 +165,21 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) { }; const buttonContent = ( - } + iconType="arrowDown" isSelected={activeFiltersCount > 0} - quantity={activeFiltersCount} - onClick={handleFacetButtonClicked} + numFilters={0} + hasActiveFilters={activeFiltersCount > 0} + numActiveFilters={activeFiltersCount} + onClick={handleFilterButtonClicked} > - + ); const select = ( @@ -255,7 +259,6 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) { onChange('name', event.currentTarget.value)} placeholder={searchPlaceholder} @@ -263,13 +266,14 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) { /> -
- {}} isDisabled={!isPopoverOpen}> + + {}} isDisabled={!isPopoverOpen}> + { @@ -294,8 +298,8 @@ export function DiscoverFieldSearch({ onChange, value, types }: Props) { /> - -
+ + ); } diff --git a/src/plugins/discover/public/application/components/sidebar/discover_index_pattern.tsx b/src/plugins/discover/public/application/components/sidebar/discover_index_pattern.tsx index 3acdcb1e920919..0bb03492cfc75f 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_index_pattern.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_index_pattern.tsx @@ -65,26 +65,23 @@ export function DiscoverIndexPattern({ } return ( -
- - { - const indexPattern = options.find((pattern) => pattern.id === id); - if (indexPattern) { - setIndexPattern(id); - setSelected(indexPattern); - } - }} - /> - -
+ + { + const indexPattern = options.find((pattern) => pattern.id === id); + if (indexPattern) { + setIndexPattern(id); + setSelected(indexPattern); + } + }} + /> + ); } diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.scss b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.scss index f130b0399f467d..aaf1743653d7d7 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.scss +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.scss @@ -1,26 +1,37 @@ -.dscSidebar__container { - padding-left: 0 !important; - padding-right: 0 !important; - background-color: transparent; - border-right-color: transparent; - border-bottom-color: transparent; +.dscSidebar { + margin: 0; + flex-grow: 1; + padding-left: $euiSize; + width: $euiSize * 19; + height: 100%; + + @include euiBreakpoint('xs', 's') { + width: 100%; + padding: $euiSize $euiSize 0 $euiSize; + background-color: $euiPageBackgroundColor; + } } -.dscIndexPattern__container { - display: flex; - align-items: center; - height: $euiSize * 3; - margin-top: -$euiSizeS; +.dscSidebar__group { + height: 100%; +} + +.dscSidebar__mobile { + width: 100%; + padding: $euiSize $euiSize 0; + + .dscSidebar__mobileBadge { + margin-left: $euiSizeS; + vertical-align: text-bottom; + } } -.dscIndexPattern__triggerButton { - @include euiTitle('xs'); - line-height: $euiSizeXXL; +.dscSidebar__flyoutHeader { + align-items: center; } .dscFieldList { - list-style: none; - margin-bottom: 0; + padding: 0 $euiSizeXS $euiSizeXS; } .dscFieldListHeader { @@ -29,18 +40,10 @@ } .dscFieldList--popular { + padding-bottom: $euiSizeS; background-color: lightOrDarkTheme(tint($euiColorPrimary, 90%), $euiColorLightShade); } -.dscFieldChooser { - padding-left: $euiSize; -} - -.dscFieldChooser__toggle { - color: $euiColorMediumShade; - margin-left: $euiSizeS !important; -} - .dscSidebarItem { &:hover, &:focus-within, @@ -57,40 +60,12 @@ */ .dscSidebarItem__action { opacity: 0; /* 1 */ - transition: none; + + &.dscSidebarItem__mobile { + opacity: 1; + } &:focus { opacity: 1; /* 2 */ } - font-size: $euiFontSizeXS; - padding: 2px 6px !important; - height: 22px !important; - min-width: auto !important; - .euiButton__content { - padding: 0 4px; - } -} - -.dscFieldSearch { - padding: $euiSizeS; -} - -.dscFieldSearch__toggleButton { - width: calc(100% - #{$euiSizeS}); - color: $euiColorPrimary; - padding-left: $euiSizeXS; - margin-left: $euiSizeXS; -} - -.dscFieldSearch__filterWrapper { - flex-grow: 0; -} - -.dscFieldSearch__formWrapper { - padding: $euiSizeM; -} - -.dscFieldDetails { - color: $euiTextColor; - margin-bottom: $euiSizeS; } diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.test.tsx b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.test.tsx index 23d2fa0a39f34d..74921a70e7f2f1 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.test.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.test.tsx @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { each, cloneDeep } from 'lodash'; import { ReactWrapper } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; // @ts-ignore @@ -26,35 +26,41 @@ import realHits from 'fixtures/real_hits.js'; import stubbedLogstashFields from 'fixtures/logstash_fields'; import { mountWithIntl } from '@kbn/test/jest'; import React from 'react'; -import { DiscoverSidebar, DiscoverSidebarProps } from './discover_sidebar'; +import { DiscoverSidebarProps } from './discover_sidebar'; import { coreMock } from '../../../../../../core/public/mocks'; import { IndexPatternAttributes } from '../../../../../data/common'; import { getStubIndexPattern } from '../../../../../data/public/test_utils'; import { SavedObject } from '../../../../../../core/types'; +import { getDefaultFieldFilter } from './lib/field_filter'; +import { DiscoverSidebar } from './discover_sidebar'; +import { DiscoverServices } from '../../../build_services'; +import { ElasticSearchHit } from '../../doc_views/doc_views_types'; -jest.mock('../../../kibana_services', () => ({ - getServices: () => ({ - history: () => ({ - location: { - search: '', - }, - }), - capabilities: { - visualize: { - show: true, - }, - discover: { - save: false, - }, - }, - uiSettings: { - get: (key: string) => { - if (key === 'fields:popularLimit') { - return 5; - } - }, +const mockServices = ({ + history: () => ({ + location: { + search: '', }, }), + capabilities: { + visualize: { + show: true, + }, + discover: { + save: false, + }, + }, + uiSettings: { + get: (key: string) => { + if (key === 'fields:popularLimit') { + return 5; + } + }, + }, +} as unknown) as DiscoverServices; + +jest.mock('../../../kibana_services', () => ({ + getServices: () => mockServices, })); jest.mock('./lib/get_index_pattern_field_list', () => ({ @@ -71,9 +77,9 @@ function getCompProps() { ); // @ts-expect-error _.each() is passing additional args to flattenHit - const hits = _.each(_.cloneDeep(realHits), indexPattern.flattenHit) as Array< + const hits = (each(cloneDeep(realHits), indexPattern.flattenHit) as Array< Record - >; + >) as ElasticSearchHit[]; const indexPatternList = [ { id: '0', attributes: { title: 'b' } } as SavedObject, @@ -97,9 +103,12 @@ function getCompProps() { onAddField: jest.fn(), onRemoveField: jest.fn(), selectedIndexPattern: indexPattern, + services: mockServices, setIndexPattern: jest.fn(), state: {}, trackUiMetric: jest.fn(), + fieldFilter: getDefaultFieldFilter(), + setFieldFilter: jest.fn(), }; } @@ -128,9 +137,4 @@ describe('discover sidebar', function () { findTestSubject(comp, 'fieldToggle-extension').simulate('click'); expect(props.onRemoveField).toHaveBeenCalledWith('extension'); }); - it('should allow adding filters', function () { - findTestSubject(comp, 'field-extension-showDetails').simulate('click'); - findTestSubject(comp, 'plus-extension-gif').simulate('click'); - expect(props.onAddFilter).toHaveBeenCalled(); - }); }); diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx index b8e09ce4d17e86..57cc45b3c3e9f5 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx @@ -19,10 +19,19 @@ import './discover_sidebar.scss'; import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiButtonIcon, EuiTitle, EuiSpacer } from '@elastic/eui'; -import { sortBy } from 'lodash'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; +import { + EuiAccordion, + EuiFlexItem, + EuiFlexGroup, + EuiText, + EuiTitle, + EuiSpacer, + EuiNotificationBadge, + EuiPageSideBar, +} from '@elastic/eui'; +import { isEqual, sortBy } from 'lodash'; +import { FormattedMessage } from '@kbn/i18n/react'; import { DiscoverField } from './discover_field'; import { DiscoverIndexPattern } from './discover_index_pattern'; import { DiscoverFieldSearch } from './discover_field_search'; @@ -32,11 +41,16 @@ import { FIELDS_LIMIT_SETTING } from '../../../../common'; import { groupFields } from './lib/group_fields'; import { IndexPatternField, IndexPattern } from '../../../../../data/public'; import { getDetails } from './lib/get_details'; -import { getDefaultFieldFilter, setFieldFilterProp } from './lib/field_filter'; +import { FieldFilterState, getDefaultFieldFilter, setFieldFilterProp } from './lib/field_filter'; import { getIndexPatternFieldList } from './lib/get_index_pattern_field_list'; -import { getServices } from '../../../kibana_services'; +import { DiscoverServices } from '../../../build_services'; +import { ElasticSearchHit } from '../../doc_views/doc_views_types'; export interface DiscoverSidebarProps { + /** + * Determines whether add/remove buttons are displayed not only when focused + */ + alwaysShowActionButtons?: boolean; /** * the selected columns displayed in the doc table in discover */ @@ -45,10 +59,14 @@ export interface DiscoverSidebarProps { * a statistics of the distribution of fields in the given hits */ fieldCounts: Record; + /** + * Current state of the field filter, filtering fields by name, type, ... + */ + fieldFilter: FieldFilterState; /** * hits fetched from ES, displayed in the doc table */ - hits: Array>; + hits: ElasticSearchHit[]; /** * List of available index patterns */ @@ -70,6 +88,14 @@ export interface DiscoverSidebarProps { * Currently selected index pattern */ selectedIndexPattern?: IndexPattern; + /** + * Discover plugin services; + */ + services: DiscoverServices; + /** + * Change current state of fieldFilter + */ + setFieldFilter: (next: FieldFilterState) => void; /** * Callback function to select another index pattern */ @@ -79,36 +105,42 @@ export interface DiscoverSidebarProps { * @param metricType * @param eventName */ - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; + /** + * Shows index pattern and a button that displays the sidebar in a flyout + */ + useFlyout?: boolean; } export function DiscoverSidebar({ + alwaysShowActionButtons = false, columns, fieldCounts, + fieldFilter, hits, indexPatternList, onAddField, onAddFilter, onRemoveField, selectedIndexPattern, + services, + setFieldFilter, setIndexPattern, trackUiMetric, + useFlyout = false, }: DiscoverSidebarProps) { - const [showFields, setShowFields] = useState(false); const [fields, setFields] = useState(null); - const [fieldFilterState, setFieldFilterState] = useState(getDefaultFieldFilter()); - const services = useMemo(() => getServices(), []); useEffect(() => { const newFields = getIndexPatternFieldList(selectedIndexPattern, fieldCounts); setFields(newFields); - }, [selectedIndexPattern, fieldCounts, hits, services]); + }, [selectedIndexPattern, fieldCounts, hits]); const onChangeFieldSearch = useCallback( (field: string, value: string | boolean | undefined) => { - const newState = setFieldFilterProp(fieldFilterState, field, value); - setFieldFilterState(newState); + const newState = setFieldFilterProp(fieldFilter, field, value); + setFieldFilter(newState); }, - [fieldFilterState] + [fieldFilter, setFieldFilter] ); const getDetailsByField = useCallback( @@ -122,12 +154,12 @@ export function DiscoverSidebar({ selected: selectedFields, popular: popularFields, unpopular: unpopularFields, - } = useMemo(() => groupFields(fields, columns, popularLimit, fieldCounts, fieldFilterState), [ + } = useMemo(() => groupFields(fields, columns, popularLimit, fieldCounts, fieldFilter), [ fields, columns, popularLimit, fieldCounts, - fieldFilterState, + fieldFilter, ]); const fieldTypes = useMemo(() => { @@ -146,10 +178,11 @@ export function DiscoverSidebar({ return null; } - return ( - + const filterChanged = isEqual(fieldFilter, getDefaultFieldFilter()); + + if (useFlyout) { + return (
o.attributes.title)} /> -
+
+ ); + } + + return ( + + + + o.attributes.title)} + /> + +
-
-
- {fields.length > 0 && ( - <> - -

- -

-
- -
    - {selectedFields.map((field: IndexPatternField) => { - return ( -
  • - -
  • - ); - })} -
-
- -

- -

-
-
- setShowFields(!showFields)} - aria-label={ - showFields - ? i18n.translate( - 'discover.fieldChooser.filter.indexAndFieldsSectionHideAriaLabel', - { - defaultMessage: 'Hide fields', - } - ) - : i18n.translate( - 'discover.fieldChooser.filter.indexAndFieldsSectionShowAriaLabel', - { - defaultMessage: 'Show fields', - } - ) - } - /> -
-
- - )} - {popularFields.length > 0 && ( -
- - - -
    - {popularFields.map((field: IndexPatternField) => { - return ( -
  • + +
    + {fields.length > 0 && ( + <> + {selectedFields && + selectedFields.length > 0 && + selectedFields[0].displayName !== '_source' ? ( + <> + + + + + + } + extraAction={ + + {selectedFields.length} + + } > - -
  • - ); - })} -
-
- )} - -
    - {unpopularFields.map((field: IndexPatternField) => { - return ( -
  • +
      + {selectedFields.map((field: IndexPatternField) => { + return ( +
    • + +
    • + ); + })} +
    + + {' '} + + ) : null} + + + + + + } + extraAction={ + + {popularFields.length + unpopularFields.length} + + } > - -
  • - ); - })} -
-
- - + + {popularFields.length > 0 && ( + <> + + + +
    + {popularFields.map((field: IndexPatternField) => { + return ( +
  • + +
  • + ); + })} +
+ + )} +
    + {unpopularFields.map((field: IndexPatternField) => { + return ( +
  • + +
  • + ); + })} +
+ + + )} +

+ +
+ ); } diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.test.tsx b/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.test.tsx new file mode 100644 index 00000000000000..906de04df3a1d7 --- /dev/null +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.test.tsx @@ -0,0 +1,145 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { each, cloneDeep } from 'lodash'; +import { ReactWrapper } from 'enzyme'; +import { findTestSubject } from '@elastic/eui/lib/test'; +// @ts-ignore +import realHits from 'fixtures/real_hits.js'; +// @ts-ignore +import stubbedLogstashFields from 'fixtures/logstash_fields'; +import { mountWithIntl } from '@kbn/test/jest'; +import React from 'react'; +import { DiscoverSidebarProps } from './discover_sidebar'; +import { coreMock } from '../../../../../../core/public/mocks'; +import { IndexPatternAttributes } from '../../../../../data/common'; +import { getStubIndexPattern } from '../../../../../data/public/test_utils'; +import { SavedObject } from '../../../../../../core/types'; +import { FieldFilterState } from './lib/field_filter'; +import { DiscoverSidebarResponsive } from './discover_sidebar_responsive'; +import { DiscoverServices } from '../../../build_services'; +import { ElasticSearchHit } from '../../doc_views/doc_views_types'; + +const mockServices = ({ + history: () => ({ + location: { + search: '', + }, + }), + capabilities: { + visualize: { + show: true, + }, + discover: { + save: false, + }, + }, + uiSettings: { + get: (key: string) => { + if (key === 'fields:popularLimit') { + return 5; + } + }, + }, +} as unknown) as DiscoverServices; + +jest.mock('../../../kibana_services', () => ({ + getServices: () => mockServices, +})); + +jest.mock('./lib/get_index_pattern_field_list', () => ({ + getIndexPatternFieldList: jest.fn((indexPattern) => indexPattern.fields), +})); + +function getCompProps() { + const indexPattern = getStubIndexPattern( + 'logstash-*', + (cfg: any) => cfg, + 'time', + stubbedLogstashFields(), + coreMock.createSetup() + ); + + // @ts-expect-error _.each() is passing additional args to flattenHit + const hits = (each(cloneDeep(realHits), indexPattern.flattenHit) as Array< + Record + >) as ElasticSearchHit[]; + + const indexPatternList = [ + { id: '0', attributes: { title: 'b' } } as SavedObject, + { id: '1', attributes: { title: 'a' } } as SavedObject, + { id: '2', attributes: { title: 'c' } } as SavedObject, + ]; + + const fieldCounts: Record = {}; + + for (const hit of hits) { + for (const key of Object.keys(indexPattern.flattenHit(hit))) { + fieldCounts[key] = (fieldCounts[key] || 0) + 1; + } + } + return { + columns: ['extension'], + fieldCounts, + hits, + indexPatternList, + onAddFilter: jest.fn(), + onAddField: jest.fn(), + onRemoveField: jest.fn(), + selectedIndexPattern: indexPattern, + services: mockServices, + setIndexPattern: jest.fn(), + state: {}, + trackUiMetric: jest.fn(), + fieldFilter: {} as FieldFilterState, + setFieldFilter: jest.fn(), + }; +} + +describe('discover responsive sidebar', function () { + let props: DiscoverSidebarProps; + let comp: ReactWrapper; + + beforeAll(() => { + props = getCompProps(); + comp = mountWithIntl(); + }); + + it('should have Selected Fields and Available Fields with Popular Fields sections', function () { + const popular = findTestSubject(comp, 'fieldList-popular'); + const selected = findTestSubject(comp, 'fieldList-selected'); + const unpopular = findTestSubject(comp, 'fieldList-unpopular'); + expect(popular.children().length).toBe(1); + expect(unpopular.children().length).toBe(7); + expect(selected.children().length).toBe(1); + }); + it('should allow selecting fields', function () { + findTestSubject(comp, 'fieldToggle-bytes').simulate('click'); + expect(props.onAddField).toHaveBeenCalledWith('bytes'); + }); + it('should allow deselecting fields', function () { + findTestSubject(comp, 'fieldToggle-extension').simulate('click'); + expect(props.onRemoveField).toHaveBeenCalledWith('extension'); + }); + it('should allow adding filters', function () { + findTestSubject(comp, 'field-extension-showDetails').simulate('click'); + findTestSubject(comp, 'plus-extension-gif').simulate('click'); + expect(props.onAddFilter).toHaveBeenCalled(); + }); +}); diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.tsx new file mode 100644 index 00000000000000..0413ebd17d71b3 --- /dev/null +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar_responsive.tsx @@ -0,0 +1,205 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React, { useState } from 'react'; +import { sortBy } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { UiCounterMetricType } from '@kbn/analytics'; +import { + EuiTitle, + EuiHideFor, + EuiShowFor, + EuiButton, + EuiBadge, + EuiFlyoutHeader, + EuiFlyout, + EuiSpacer, + EuiIcon, + EuiLink, + EuiPortal, +} from '@elastic/eui'; +import { DiscoverIndexPattern } from './discover_index_pattern'; +import { IndexPatternAttributes } from '../../../../../data/common'; +import { SavedObject } from '../../../../../../core/types'; +import { IndexPatternField, IndexPattern } from '../../../../../data/public'; +import { getDefaultFieldFilter } from './lib/field_filter'; +import { DiscoverSidebar } from './discover_sidebar'; +import { DiscoverServices } from '../../../build_services'; +import { ElasticSearchHit } from '../../doc_views/doc_views_types'; + +export interface DiscoverSidebarResponsiveProps { + /** + * Determines whether add/remove buttons are displayed non only when focused + */ + alwaysShowActionButtons?: boolean; + /** + * the selected columns displayed in the doc table in discover + */ + columns: string[]; + /** + * a statistics of the distribution of fields in the given hits + */ + fieldCounts: Record; + /** + * hits fetched from ES, displayed in the doc table + */ + hits: ElasticSearchHit[]; + /** + * List of available index patterns + */ + indexPatternList: Array>; + /** + * Has been toggled closed + */ + isClosed?: boolean; + /** + * Callback function when selecting a field + */ + onAddField: (fieldName: string) => void; + /** + * Callback function when adding a filter from sidebar + */ + onAddFilter: (field: IndexPatternField | string, value: string, type: '+' | '-') => void; + /** + * Callback function when removing a field + * @param fieldName + */ + onRemoveField: (fieldName: string) => void; + /** + * Currently selected index pattern + */ + selectedIndexPattern?: IndexPattern; + /** + * Discover plugin services; + */ + services: DiscoverServices; + /** + * Callback function to select another index pattern + */ + setIndexPattern: (id: string) => void; + /** + * Metric tracking function + * @param metricType + * @param eventName + */ + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; + /** + * Shows index pattern and a button that displays the sidebar in a flyout + */ + useFlyout?: boolean; +} + +/** + * Component providing 2 different renderings for the sidebar depending on available screen space + * Desktop: Sidebar view, all elements are visible + * Mobile: Index pattern selector is visible and a button to trigger a flyout with all elements + */ +export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) { + const [fieldFilter, setFieldFilter] = useState(getDefaultFieldFilter()); + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + + if (!props.selectedIndexPattern) { + return null; + } + + return ( + <> + {props.isClosed ? null : ( + + + + )} + +
+
+ o.attributes.title)} + /> +
+ + setIsFlyoutVisible(true)} + > + + + {props.columns[0] === '_source' ? 0 : props.columns.length} + + +
+ {isFlyoutVisible && ( + + setIsFlyoutVisible(false)} + aria-labelledby="flyoutTitle" + ownFocus + > + + +

+ setIsFlyoutVisible(false)}> + {' '} + + {i18n.translate('discover.fieldList.flyoutHeading', { + defaultMessage: 'Field list', + })} + + +

+
+
+ {/* Using only the direct flyout body class because we maintain scroll in a lower sidebar component. Needs a fix on the EUI side */} +
+ +
+
+
+ )} +
+ + ); +} diff --git a/src/plugins/discover/public/application/components/sidebar/index.ts b/src/plugins/discover/public/application/components/sidebar/index.ts index aec8dfc86e817e..7575b5691a95aa 100644 --- a/src/plugins/discover/public/application/components/sidebar/index.ts +++ b/src/plugins/discover/public/application/components/sidebar/index.ts @@ -18,3 +18,4 @@ */ export { DiscoverSidebar } from './discover_sidebar'; +export { DiscoverSidebarResponsive } from './discover_sidebar_responsive'; diff --git a/src/plugins/discover/public/application/components/sidebar/lib/get_details.ts b/src/plugins/discover/public/application/components/sidebar/lib/get_details.ts index 22a6e7a6285551..e979131a7a85fa 100644 --- a/src/plugins/discover/public/application/components/sidebar/lib/get_details.ts +++ b/src/plugins/discover/public/application/components/sidebar/lib/get_details.ts @@ -20,10 +20,11 @@ // @ts-ignore import { fieldCalculator } from './field_calculator'; import { IndexPattern, IndexPatternField } from '../../../../../../data/public'; +import { ElasticSearchHit } from '../../../doc_views/doc_views_types'; export function getDetails( field: IndexPatternField, - hits: Array>, + hits: ElasticSearchHit[], columns: string[], indexPattern?: IndexPattern ) { diff --git a/src/plugins/discover/public/application/components/skip_bottom_button/skip_bottom_button.tsx b/src/plugins/discover/public/application/components/skip_bottom_button/skip_bottom_button.tsx index d5bc5bb64f59be..e2b8e0ffcf5188 100644 --- a/src/plugins/discover/public/application/components/skip_bottom_button/skip_bottom_button.tsx +++ b/src/plugins/discover/public/application/components/skip_bottom_button/skip_bottom_button.tsx @@ -18,7 +18,7 @@ */ import React from 'react'; import { EuiSkipLink } from '@elastic/eui'; -import { FormattedMessage, I18nProvider } from '@kbn/i18n/react'; +import { FormattedMessage } from '@kbn/i18n/react'; export interface SkipBottomButtonProps { /** @@ -29,26 +29,22 @@ export interface SkipBottomButtonProps { export function SkipBottomButton({ onClick }: SkipBottomButtonProps) { return ( - - { - // prevent the anchor to reload the page on click - event.preventDefault(); - // The destinationId prop cannot be leveraged here as the table needs - // to be updated first (angular logic) - onClick(); - }} - className="dscSkipButton" - destinationId="" - data-test-subj="discoverSkipTableButton" - > - - - + ) => { + // prevent the anchor to reload the page on click + event.preventDefault(); + // The destinationId prop cannot be leveraged here as the table needs + // to be updated first (angular logic) + onClick(); + }} + className="dscSkipButton" + id="dscSkipButton" + destinationId="" + data-test-subj="discoverSkipTableButton" + position="absolute" + > + + ); } diff --git a/src/plugins/discover/public/application/components/table/table.test.tsx b/src/plugins/discover/public/application/components/table/table.test.tsx index 2874e2483275b7..59ab032e6098d5 100644 --- a/src/plugins/discover/public/application/components/table/table.test.tsx +++ b/src/plugins/discover/public/application/components/table/table.test.tsx @@ -174,18 +174,6 @@ describe('DocViewTable at Discover', () => { }); } }); - - (['noMappingWarning'] as const).forEach((element) => { - const elementExist = check[element]; - - if (typeof elementExist === 'boolean') { - const el = findTestSubject(rowComponent, element); - - it(`renders ${element} for '${check._property}' correctly`, () => { - expect(el.length).toBe(elementExist ? 1 : 0); - }); - } - }); }); }); diff --git a/src/plugins/discover/public/application/components/table/table.tsx b/src/plugins/discover/public/application/components/table/table.tsx index 5d37f598b38f6d..9c136e94a3d2a6 100644 --- a/src/plugins/discover/public/application/components/table/table.tsx +++ b/src/plugins/discover/public/application/components/table/table.tsx @@ -19,7 +19,7 @@ import React, { useState } from 'react'; import { escapeRegExp } from 'lodash'; import { DocViewTableRow } from './table_row'; -import { arrayContainsObjects, trimAngularSpan } from './table_helper'; +import { trimAngularSpan } from './table_helper'; import { DocViewRenderProps } from '../../doc_views/doc_views_types'; const COLLAPSE_LINE_LENGTH = 350; @@ -32,13 +32,16 @@ export function DocViewTable({ onAddColumn, onRemoveColumn, }: DocViewRenderProps) { + const [fieldRowOpen, setFieldRowOpen] = useState({} as Record); + if (!indexPattern) { + return null; + } const mapping = indexPattern.fields.getByName; const flattened = indexPattern.flattenHit(hit); const formatted = indexPattern.formatHit(hit, 'html'); - const [fieldRowOpen, setFieldRowOpen] = useState({} as Record); function toggleValueCollapse(field: string) { - fieldRowOpen[field] = fieldRowOpen[field] !== true; + fieldRowOpen[field] = !fieldRowOpen[field]; setFieldRowOpen({ ...fieldRowOpen }); } @@ -69,11 +72,7 @@ export function DocViewTable({ } } : undefined; - const isArrayOfObjects = - Array.isArray(flattened[field]) && arrayContainsObjects(flattened[field]); const displayUnderscoreWarning = !mapping(field) && field.indexOf('_') === 0; - const displayNoMappingWarning = - !mapping(field) && !displayUnderscoreWarning && !isArrayOfObjects; // Discover doesn't flatten arrays of objects, so for documents with an `object` or `nested` field that // contains an array, Discover will only detect the top level root field. We want to detect when those @@ -125,7 +124,6 @@ export function DocViewTable({ fieldMapping={mapping(field)} fieldType={String(fieldType)} displayUnderscoreWarning={displayUnderscoreWarning} - displayNoMappingWarning={displayNoMappingWarning} isCollapsed={isCollapsed} isCollapsible={isCollapsible} isColumnActive={Array.isArray(columns) && columns.includes(field)} diff --git a/src/plugins/discover/public/application/components/table/table_row.tsx b/src/plugins/discover/public/application/components/table/table_row.tsx index 3d75e175951d54..e7d663158acc03 100644 --- a/src/plugins/discover/public/application/components/table/table_row.tsx +++ b/src/plugins/discover/public/application/components/table/table_row.tsx @@ -24,7 +24,6 @@ import { DocViewTableRowBtnFilterRemove } from './table_row_btn_filter_remove'; import { DocViewTableRowBtnToggleColumn } from './table_row_btn_toggle_column'; import { DocViewTableRowBtnCollapse } from './table_row_btn_collapse'; import { DocViewTableRowBtnFilterExists } from './table_row_btn_filter_exists'; -import { DocViewTableRowIconNoMapping } from './table_row_icon_no_mapping'; import { DocViewTableRowIconUnderscore } from './table_row_icon_underscore'; import { FieldName } from '../field_name/field_name'; @@ -32,7 +31,6 @@ export interface Props { field: string; fieldMapping?: FieldMapping; fieldType: string; - displayNoMappingWarning: boolean; displayUnderscoreWarning: boolean; isCollapsible: boolean; isColumnActive: boolean; @@ -48,7 +46,6 @@ export function DocViewTableRow({ field, fieldMapping, fieldType, - displayNoMappingWarning, displayUnderscoreWarning, isCollapsible, isCollapsed, @@ -67,32 +64,11 @@ export function DocViewTableRow({ return ( - {typeof onFilter === 'function' && ( - - onFilter(fieldMapping, valueRaw, '+')} - /> - onFilter(fieldMapping, valueRaw, '-')} - /> - {typeof onToggleColumn === 'function' && ( - - )} - onFilter('_exists_', field, '+')} - scripted={fieldMapping && fieldMapping.scripted} - /> - - )} @@ -101,7 +77,6 @@ export function DocViewTableRow({ )} {displayUnderscoreWarning && } - {displayNoMappingWarning && }
+ {typeof onFilter === 'function' && ( + + onFilter(fieldMapping, valueRaw, '+')} + /> + onFilter(fieldMapping, valueRaw, '-')} + /> + {typeof onToggleColumn === 'function' && ( + + )} + onFilter('_exists_', field, '+')} + scripted={fieldMapping && fieldMapping.scripted} + /> + + )} ); } diff --git a/src/plugins/discover/public/application/components/table/table_row_btn_filter_add.tsx b/src/plugins/discover/public/application/components/table/table_row_btn_filter_add.tsx index bd842eb5c6f72a..142761768b4720 100644 --- a/src/plugins/discover/public/application/components/table/table_row_btn_filter_add.tsx +++ b/src/plugins/discover/public/application/components/table/table_row_btn_filter_add.tsx @@ -49,7 +49,7 @@ export function DocViewTableRowBtnFilterAdd({ onClick, disabled = false }: Props data-test-subj="addInclusiveFilterButton" disabled={disabled} onClick={onClick} - iconType={'magnifyWithPlus'} + iconType={'plusInCircle'} iconSize={'s'} /> diff --git a/src/plugins/discover/public/application/components/table/table_row_btn_filter_exists.tsx b/src/plugins/discover/public/application/components/table/table_row_btn_filter_exists.tsx index dab22c103bc48e..43a711fc72da52 100644 --- a/src/plugins/discover/public/application/components/table/table_row_btn_filter_exists.tsx +++ b/src/plugins/discover/public/application/components/table/table_row_btn_filter_exists.tsx @@ -61,7 +61,7 @@ export function DocViewTableRowBtnFilterExists({ className="kbnDocViewer__actionButton" data-test-subj="addExistsFilterButton" disabled={disabled} - iconType={'indexOpen'} + iconType={'filter'} iconSize={'s'} /> diff --git a/src/plugins/discover/public/application/components/table/table_row_btn_filter_remove.tsx b/src/plugins/discover/public/application/components/table/table_row_btn_filter_remove.tsx index bbef54cb4ecc77..878088ae0a6d8f 100644 --- a/src/plugins/discover/public/application/components/table/table_row_btn_filter_remove.tsx +++ b/src/plugins/discover/public/application/components/table/table_row_btn_filter_remove.tsx @@ -49,7 +49,7 @@ export function DocViewTableRowBtnFilterRemove({ onClick, disabled = false }: Pr data-test-subj="removeInclusiveFilterButton" disabled={disabled} onClick={onClick} - iconType={'magnifyWithMinus'} + iconType={'minusInCircle'} iconSize={'s'} /> diff --git a/src/plugins/discover/public/application/components/table/table_row_btn_toggle_column.tsx b/src/plugins/discover/public/application/components/table/table_row_btn_toggle_column.tsx index 3e5a0579297016..1a32ba3be1712f 100644 --- a/src/plugins/discover/public/application/components/table/table_row_btn_toggle_column.tsx +++ b/src/plugins/discover/public/application/components/table/table_row_btn_toggle_column.tsx @@ -37,7 +37,7 @@ export function DocViewTableRowBtnToggleColumn({ onClick, active, disabled = fal className="kbnDocViewer__actionButton" data-test-subj="toggleColumnButton" disabled - iconType={'tableOfContents'} + iconType={'listAdd'} iconSize={'s'} /> ); @@ -59,7 +59,7 @@ export function DocViewTableRowBtnToggleColumn({ onClick, active, disabled = fal onClick={onClick} className="kbnDocViewer__actionButton" data-test-subj="toggleColumnButton" - iconType={'tableOfContents'} + iconType={'listAdd'} iconSize={'s'} /> diff --git a/src/plugins/discover/public/application/components/table/table_row_icon_no_mapping.tsx b/src/plugins/discover/public/application/components/table/table_row_icon_no_mapping.tsx deleted file mode 100644 index 3094d366ce3728..00000000000000 --- a/src/plugins/discover/public/application/components/table/table_row_icon_no_mapping.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import React from 'react'; -import { EuiIconTip } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -export function DocViewTableRowIconNoMapping() { - const ariaLabel = i18n.translate('discover.docViews.table.noCachedMappingForThisFieldAriaLabel', { - defaultMessage: 'Warning', - }); - const tooltipContent = i18n.translate( - 'discover.docViews.table.noCachedMappingForThisFieldTooltip', - { - defaultMessage: - 'No cached mapping for this field. Refresh field list from the Management > Index Patterns page', - } - ); - return ( - - ); -} diff --git a/src/plugins/discover/public/application/components/timechart_header/timechart_header.scss b/src/plugins/discover/public/application/components/timechart_header/timechart_header.scss new file mode 100644 index 00000000000000..506dc26d9bee37 --- /dev/null +++ b/src/plugins/discover/public/application/components/timechart_header/timechart_header.scss @@ -0,0 +1,7 @@ +.dscTimeIntervalSelect { + align-items: center; +} + +.dscTimeChartHeader { + flex-grow: 0; +} diff --git a/src/plugins/discover/public/application/components/timechart_header/timechart_header.tsx b/src/plugins/discover/public/application/components/timechart_header/timechart_header.tsx index 1451106827ee0d..544de61b5825be 100644 --- a/src/plugins/discover/public/application/components/timechart_header/timechart_header.tsx +++ b/src/plugins/discover/public/application/components/timechart_header/timechart_header.tsx @@ -25,8 +25,8 @@ import { EuiSelect, EuiIconTip, } from '@elastic/eui'; -import { I18nProvider } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; +import './timechart_header.scss'; import moment from 'moment'; export interface TimechartHeaderProps { @@ -99,73 +99,78 @@ export function TimechartHeader({ } return ( - - - - + + + + {`${toMoment(timeRange.from)} - ${toMoment(timeRange.to)} ${ + interval !== 'auto' + ? i18n.translate('discover.timechartHeader.timeIntervalSelect.per', { + defaultMessage: 'per', + }) + : '' + }`} + + + + + val !== 'custom') + .map(({ display, val }) => { + return { + text: display, + value: val, + label: display, + }; })} - delay="long" - > - - {`${toMoment(timeRange.from)} - ${toMoment(timeRange.to)} ${ - interval !== 'auto' - ? i18n.translate('discover.timechartHeader.timeIntervalSelect.per', { - defaultMessage: 'per', - }) - : '' - }`} - - - - - val !== 'custom') - .map(({ display, val }) => { - return { - text: display, - value: val, - label: display, - }; - })} - value={interval} - onChange={handleIntervalChange} - append={ - bucketInterval.scaled ? ( - 1 - ? i18n.translate('discover.bucketIntervalTooltip.tooLargeBucketsText', { - defaultMessage: 'buckets that are too large', - }) - : i18n.translate('discover.bucketIntervalTooltip.tooManyBucketsText', { - defaultMessage: 'too many buckets', - }), - bucketIntervalDescription: bucketInterval.description, - }, - })} - color="warning" - size="s" - type="alert" - /> - ) : undefined - } - /> - - - + value={interval} + onChange={handleIntervalChange} + append={ + bucketInterval.scaled ? ( + 1 + ? i18n.translate('discover.bucketIntervalTooltip.tooLargeBucketsText', { + defaultMessage: 'buckets that are too large', + }) + : i18n.translate('discover.bucketIntervalTooltip.tooManyBucketsText', { + defaultMessage: 'too many buckets', + }), + bucketIntervalDescription: bucketInterval.description, + }, + })} + color="warning" + size="s" + type="alert" + /> + ) : undefined + } + /> + + ); } diff --git a/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.js.snap b/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.js.snap deleted file mode 100644 index 42cd8613b1de01..00000000000000 --- a/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.js.snap +++ /dev/null @@ -1,69 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`render 1`] = ` - - - -

- -

-
-
- - - } - onChoose={[Function]} - savedObjectMetaData={ - Array [ - Object { - "getIconForSavedObject": [Function], - "name": "Saved search", - "type": "search", - }, - ] - } - savedObjects={Object {}} - uiSettings={Object {}} - /> - - - - - - - - - - -
-`; diff --git a/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap b/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap new file mode 100644 index 00000000000000..2c2674b158bfc1 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/__snapshots__/open_search_panel.test.tsx.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`render 1`] = ` + + + +

+ +

+
+
+ + + } + onChoose={[Function]} + savedObjectMetaData={ + Array [ + Object { + "getIconForSavedObject": [Function], + "name": "Saved search", + "type": "search", + }, + ] + } + savedObjects={Object {}} + uiSettings={Object {}} + /> + + + + + + + + + + +
+`; diff --git a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts new file mode 100644 index 00000000000000..37c4f5a40a1777 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.test.ts @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { getTopNavLinks } from './get_top_nav_links'; +import { inspectorPluginMock } from '../../../../../inspector/public/mocks'; +import { indexPatternMock } from '../../../__mocks__/index_pattern'; +import { savedSearchMock } from '../../../__mocks__/saved_search'; +import { DiscoverServices } from '../../../build_services'; +import { GetStateReturn } from '../../angular/discover_state'; + +const services = ({ + capabilities: { + discover: { + save: true, + }, + }, +} as unknown) as DiscoverServices; + +const state = ({} as unknown) as GetStateReturn; + +test('getTopNavLinks result', () => { + const topNavLinks = getTopNavLinks({ + getFieldCounts: jest.fn(), + indexPattern: indexPatternMock, + inspectorAdapters: inspectorPluginMock, + navigateTo: jest.fn(), + savedSearch: savedSearchMock, + services, + state, + }); + expect(topNavLinks).toMatchInlineSnapshot(` + Array [ + Object { + "description": "New Search", + "id": "new", + "label": "New", + "run": [Function], + "testId": "discoverNewButton", + }, + Object { + "description": "Save Search", + "id": "save", + "label": "Save", + "run": [Function], + "testId": "discoverSaveButton", + }, + Object { + "description": "Open Saved Search", + "id": "open", + "label": "Open", + "run": [Function], + "testId": "discoverOpenButton", + }, + Object { + "description": "Share Search", + "id": "share", + "label": "Share", + "run": [Function], + "testId": "shareTopNavButton", + }, + Object { + "description": "Open Inspector for search", + "id": "inspect", + "label": "Inspect", + "run": [Function], + "testId": "openInspectorButton", + }, + ] + `); +}); diff --git a/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts new file mode 100644 index 00000000000000..62542e9ace4dd7 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/get_top_nav_links.ts @@ -0,0 +1,148 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { i18n } from '@kbn/i18n'; +import { showOpenSearchPanel } from './show_open_search_panel'; +import { getSharingData } from '../../helpers/get_sharing_data'; +import { unhashUrl } from '../../../../../kibana_utils/public'; +import { DiscoverServices } from '../../../build_services'; +import { Adapters } from '../../../../../inspector/common/adapters'; +import { SavedSearch } from '../../../saved_searches'; +import { onSaveSearch } from './on_save_search'; +import { GetStateReturn } from '../../angular/discover_state'; +import { IndexPattern } from '../../../kibana_services'; + +/** + * Helper function to build the top nav links + */ +export const getTopNavLinks = ({ + getFieldCounts, + indexPattern, + inspectorAdapters, + navigateTo, + savedSearch, + services, + state, +}: { + getFieldCounts: () => Promise>; + indexPattern: IndexPattern; + inspectorAdapters: Adapters; + navigateTo: (url: string) => void; + savedSearch: SavedSearch; + services: DiscoverServices; + state: GetStateReturn; +}) => { + const newSearch = { + id: 'new', + label: i18n.translate('discover.localMenu.localMenu.newSearchTitle', { + defaultMessage: 'New', + }), + description: i18n.translate('discover.localMenu.newSearchDescription', { + defaultMessage: 'New Search', + }), + run: () => navigateTo('/'), + testId: 'discoverNewButton', + }; + + const saveSearch = { + id: 'save', + label: i18n.translate('discover.localMenu.saveTitle', { + defaultMessage: 'Save', + }), + description: i18n.translate('discover.localMenu.saveSearchDescription', { + defaultMessage: 'Save Search', + }), + testId: 'discoverSaveButton', + run: () => onSaveSearch({ savedSearch, services, indexPattern, navigateTo, state }), + }; + + const openSearch = { + id: 'open', + label: i18n.translate('discover.localMenu.openTitle', { + defaultMessage: 'Open', + }), + description: i18n.translate('discover.localMenu.openSavedSearchDescription', { + defaultMessage: 'Open Saved Search', + }), + testId: 'discoverOpenButton', + run: () => + showOpenSearchPanel({ + makeUrl: (searchId) => `#/view/${encodeURIComponent(searchId)}`, + I18nContext: services.core.i18n.Context, + }), + }; + + const shareSearch = { + id: 'share', + label: i18n.translate('discover.localMenu.shareTitle', { + defaultMessage: 'Share', + }), + description: i18n.translate('discover.localMenu.shareSearchDescription', { + defaultMessage: 'Share Search', + }), + testId: 'shareTopNavButton', + run: async (anchorElement: HTMLElement) => { + if (!services.share) { + return; + } + const sharingData = await getSharingData( + savedSearch.searchSource, + state.appStateContainer.getState(), + services.uiSettings, + getFieldCounts + ); + services.share.toggleShareContextMenu({ + anchorElement, + allowEmbed: false, + allowShortUrl: !!services.capabilities.discover.createShortUrl, + shareableUrl: unhashUrl(window.location.href), + objectId: savedSearch.id, + objectType: 'search', + sharingData: { + ...sharingData, + title: savedSearch.title, + }, + isDirty: !savedSearch.id || state.isAppStateDirty(), + }); + }, + }; + + const inspectSearch = { + id: 'inspect', + label: i18n.translate('discover.localMenu.inspectTitle', { + defaultMessage: 'Inspect', + }), + description: i18n.translate('discover.localMenu.openInspectorForSearchDescription', { + defaultMessage: 'Open Inspector for search', + }), + testId: 'openInspectorButton', + run: () => { + services.inspector.open(inspectorAdapters, { + title: savedSearch.title, + }); + }, + }; + + return [ + newSearch, + ...(services.capabilities.discover.save ? [saveSearch] : []), + openSearch, + shareSearch, + inspectSearch, + ]; +}; diff --git a/src/plugins/discover/public/application/components/top_nav/on_save_search.test.tsx b/src/plugins/discover/public/application/components/top_nav/on_save_search.test.tsx new file mode 100644 index 00000000000000..b96af355fafd0d --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/on_save_search.test.tsx @@ -0,0 +1,47 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { showSaveModal } from '../../../../../saved_objects/public'; +jest.mock('../../../../../saved_objects/public'); + +import { onSaveSearch } from './on_save_search'; +import { indexPatternMock } from '../../../__mocks__/index_pattern'; +import { savedSearchMock } from '../../../__mocks__/saved_search'; +import { DiscoverServices } from '../../../build_services'; +import { GetStateReturn } from '../../angular/discover_state'; +import { i18nServiceMock } from '../../../../../../core/public/mocks'; + +test('onSaveSearch', async () => { + const serviceMock = ({ + core: { + i18n: i18nServiceMock.create(), + }, + } as unknown) as DiscoverServices; + const stateMock = ({} as unknown) as GetStateReturn; + + await onSaveSearch({ + indexPattern: indexPatternMock, + navigateTo: jest.fn(), + savedSearch: savedSearchMock, + services: serviceMock, + state: stateMock, + }); + + expect(showSaveModal).toHaveBeenCalled(); +}); diff --git a/src/plugins/discover/public/application/components/top_nav/on_save_search.tsx b/src/plugins/discover/public/application/components/top_nav/on_save_search.tsx new file mode 100644 index 00000000000000..c3343968a46855 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/on_save_search.tsx @@ -0,0 +1,158 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { SavedObjectSaveModal, showSaveModal } from '../../../../../saved_objects/public'; +import { SavedSearch } from '../../../saved_searches'; +import { IndexPattern } from '../../../../../data/common/index_patterns/index_patterns'; +import { DiscoverServices } from '../../../build_services'; +import { GetStateReturn } from '../../angular/discover_state'; +import { setBreadcrumbsTitle } from '../../helpers/breadcrumbs'; +import { persistSavedSearch } from '../../helpers/persist_saved_search'; + +async function saveDataSource({ + indexPattern, + navigateTo, + savedSearch, + saveOptions, + services, + state, +}: { + indexPattern: IndexPattern; + navigateTo: (url: string) => void; + savedSearch: SavedSearch; + saveOptions: { + confirmOverwrite: boolean; + isTitleDuplicateConfirmed: boolean; + onTitleDuplicate: () => void; + }; + services: DiscoverServices; + state: GetStateReturn; +}) { + const prevSavedSearchId = savedSearch.id; + function onSuccess(id: string) { + if (id) { + services.toastNotifications.addSuccess({ + title: i18n.translate('discover.notifications.savedSearchTitle', { + defaultMessage: `Search '{savedSearchTitle}' was saved`, + values: { + savedSearchTitle: savedSearch.title, + }, + }), + 'data-test-subj': 'saveSearchSuccess', + }); + + if (savedSearch.id !== prevSavedSearchId) { + navigateTo(`/view/${encodeURIComponent(savedSearch.id)}`); + } else { + // Update defaults so that "reload saved query" functions correctly + state.resetAppState(); + services.chrome.docTitle.change(savedSearch.lastSavedTitle!); + setBreadcrumbsTitle(savedSearch, services.chrome); + } + } + } + + function onError(error: Error) { + services.toastNotifications.addDanger({ + title: i18n.translate('discover.notifications.notSavedSearchTitle', { + defaultMessage: `Search '{savedSearchTitle}' was not saved.`, + values: { + savedSearchTitle: savedSearch.title, + }, + }), + text: error.message, + }); + } + return persistSavedSearch(savedSearch, { + indexPattern, + onError, + onSuccess, + saveOptions, + services, + state: state.appStateContainer.getState(), + }); +} + +export async function onSaveSearch({ + indexPattern, + navigateTo, + savedSearch, + services, + state, +}: { + indexPattern: IndexPattern; + navigateTo: (path: string) => void; + savedSearch: SavedSearch; + services: DiscoverServices; + state: GetStateReturn; +}) { + const onSave = async ({ + newTitle, + newCopyOnSave, + isTitleDuplicateConfirmed, + onTitleDuplicate, + }: { + newTitle: string; + newCopyOnSave: boolean; + isTitleDuplicateConfirmed: boolean; + onTitleDuplicate: () => void; + }) => { + const currentTitle = savedSearch.title; + savedSearch.title = newTitle; + savedSearch.copyOnSave = newCopyOnSave; + const saveOptions = { + confirmOverwrite: false, + isTitleDuplicateConfirmed, + onTitleDuplicate, + }; + const response = await saveDataSource({ + indexPattern, + saveOptions, + services, + navigateTo, + savedSearch, + state, + }); + // If the save wasn't successful, put the original values back. + if (!response.id || response.error) { + savedSearch.title = currentTitle; + } else { + state.resetInitialAppState(); + } + return response; + }; + + const saveModal = ( + {}} + title={savedSearch.title} + showCopyOnSave={!!savedSearch.id} + objectType="search" + description={i18n.translate('discover.localMenu.saveSaveSearchDescription', { + defaultMessage: + 'Save your Discover search so you can use it in visualizations and dashboards', + })} + showDescription={false} + /> + ); + showSaveModal(saveModal, services.core.i18n.Context); +} diff --git a/src/plugins/discover/public/application/components/top_nav/open_search_panel.js b/src/plugins/discover/public/application/components/top_nav/open_search_panel.js deleted file mode 100644 index 9a6840c29bf1c6..00000000000000 --- a/src/plugins/discover/public/application/components/top_nav/open_search_panel.js +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import PropTypes from 'prop-types'; -import rison from 'rison-node'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { - EuiButton, - EuiFlexGroup, - EuiFlexItem, - EuiFlyout, - EuiFlyoutHeader, - EuiFlyoutFooter, - EuiFlyoutBody, - EuiTitle, -} from '@elastic/eui'; -import { SavedObjectFinderUi } from '../../../../../saved_objects/public'; -import { getServices } from '../../../kibana_services'; - -const SEARCH_OBJECT_TYPE = 'search'; - -export function OpenSearchPanel(props) { - const { - core: { uiSettings, savedObjects }, - addBasePath, - } = getServices(); - - return ( - - - -

- -

-
-
- - - } - savedObjectMetaData={[ - { - type: SEARCH_OBJECT_TYPE, - getIconForSavedObject: () => 'search', - name: i18n.translate('discover.savedSearch.savedObjectName', { - defaultMessage: 'Saved search', - }), - }, - ]} - onChoose={(id) => { - window.location.assign(props.makeUrl(id)); - props.onClose(); - }} - uiSettings={uiSettings} - savedObjects={savedObjects} - /> - - - - - {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} - - - - - - -
- ); -} - -OpenSearchPanel.propTypes = { - onClose: PropTypes.func.isRequired, - makeUrl: PropTypes.func.isRequired, -}; diff --git a/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.js b/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.js deleted file mode 100644 index 50ab02c8e273d3..00000000000000 --- a/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import { shallow } from 'enzyme'; - -jest.mock('../../../kibana_services', () => { - return { - getServices: () => ({ - core: { uiSettings: {}, savedObjects: {} }, - addBasePath: (path) => path, - }), - }; -}); - -import { OpenSearchPanel } from './open_search_panel'; - -test('render', () => { - const component = shallow( {}} makeUrl={() => {}} />); - expect(component).toMatchSnapshot(); -}); diff --git a/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.tsx b/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.tsx new file mode 100644 index 00000000000000..4b06964c7bc39e --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/open_search_panel.test.tsx @@ -0,0 +1,37 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +jest.mock('../../../kibana_services', () => { + return { + getServices: () => ({ + core: { uiSettings: {}, savedObjects: {} }, + addBasePath: (path: string) => path, + }), + }; +}); + +import { OpenSearchPanel } from './open_search_panel'; + +test('render', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); +}); diff --git a/src/plugins/discover/public/application/components/top_nav/open_search_panel.tsx b/src/plugins/discover/public/application/components/top_nav/open_search_panel.tsx new file mode 100644 index 00000000000000..62441f7d827d92 --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/open_search_panel.tsx @@ -0,0 +1,107 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React from 'react'; +import rison from 'rison-node'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiFlyoutBody, + EuiTitle, +} from '@elastic/eui'; +import { SavedObjectFinderUi } from '../../../../../saved_objects/public'; +import { getServices } from '../../../kibana_services'; + +const SEARCH_OBJECT_TYPE = 'search'; + +interface OpenSearchPanelProps { + onClose: () => void; + makeUrl: (id: string) => string; +} + +export function OpenSearchPanel(props: OpenSearchPanelProps) { + const { + core: { uiSettings, savedObjects }, + addBasePath, + } = getServices(); + + return ( + + + +

+ +

+
+
+ + + } + savedObjectMetaData={[ + { + type: SEARCH_OBJECT_TYPE, + getIconForSavedObject: () => 'search', + name: i18n.translate('discover.savedSearch.savedObjectName', { + defaultMessage: 'Saved search', + }), + }, + ]} + onChoose={(id) => { + window.location.assign(props.makeUrl(id)); + props.onClose(); + }} + uiSettings={uiSettings} + savedObjects={savedObjects} + /> + + + + + {/* eslint-disable-next-line @elastic/eui/href-or-on-click */} + + + + + + +
+ ); +} diff --git a/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.js b/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.js deleted file mode 100644 index e40d700b488853..00000000000000 --- a/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { OpenSearchPanel } from './open_search_panel'; - -let isOpen = false; - -export function showOpenSearchPanel({ makeUrl, I18nContext }) { - if (isOpen) { - return; - } - - isOpen = true; - const container = document.createElement('div'); - const onClose = () => { - ReactDOM.unmountComponentAtNode(container); - document.body.removeChild(container); - isOpen = false; - }; - - document.body.appendChild(container); - const element = ( - - - - ); - ReactDOM.render(element, container); -} diff --git a/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.tsx b/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.tsx new file mode 100644 index 00000000000000..d9a5cdcb063d3a --- /dev/null +++ b/src/plugins/discover/public/application/components/top_nav/show_open_search_panel.tsx @@ -0,0 +1,53 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import ReactDOM from 'react-dom'; +import { I18nStart } from 'kibana/public'; +import { OpenSearchPanel } from './open_search_panel'; + +let isOpen = false; + +export function showOpenSearchPanel({ + makeUrl, + I18nContext, +}: { + makeUrl: (path: string) => string; + I18nContext: I18nStart['Context']; +}) { + if (isOpen) { + return; + } + + isOpen = true; + const container = document.createElement('div'); + const onClose = () => { + ReactDOM.unmountComponentAtNode(container); + document.body.removeChild(container); + isOpen = false; + }; + + document.body.appendChild(container); + const element = ( + + + + ); + ReactDOM.render(element, container); +} diff --git a/src/plugins/discover/public/application/doc_views/doc_views_types.ts b/src/plugins/discover/public/application/doc_views/doc_views_types.ts index 01145402e0f295..dcfc25fd4099d0 100644 --- a/src/plugins/discover/public/application/doc_views/doc_views_types.ts +++ b/src/plugins/discover/public/application/doc_views/doc_views_types.ts @@ -49,7 +49,7 @@ export interface DocViewRenderProps { columns?: string[]; filter?: DocViewFilterFn; hit: ElasticSearchHit; - indexPattern: IndexPattern; + indexPattern?: IndexPattern; onAddColumn?: (columnName: string) => void; onRemoveColumn?: (columnName: string) => void; } diff --git a/src/plugins/discover/public/application/embeddable/search_embeddable.ts b/src/plugins/discover/public/application/embeddable/search_embeddable.ts index 980e90d0acf200..e592d0b0ec8fd0 100644 --- a/src/plugins/discover/public/application/embeddable/search_embeddable.ts +++ b/src/plugins/discover/public/application/embeddable/search_embeddable.ts @@ -342,12 +342,11 @@ export class SearchEmbeddable if (isFetchRequired) { this.filtersSearchSource!.setField('filter', this.input.filters); this.filtersSearchSource!.setField('query', this.input.query); - - this.fetch(); - this.prevFilters = this.input.filters; this.prevQuery = this.input.query; this.prevTimeRange = this.input.timeRange; + + this.fetch(); } else if (this.searchScope) { // trigger a digest cycle to make sure non-fetch relevant changes are propagated this.searchScope.$applyAsync(); diff --git a/src/plugins/discover/public/application/helpers/breadcrumbs.ts b/src/plugins/discover/public/application/helpers/breadcrumbs.ts index 17492b02f7eab1..96a9f546a06363 100644 --- a/src/plugins/discover/public/application/helpers/breadcrumbs.ts +++ b/src/plugins/discover/public/application/helpers/breadcrumbs.ts @@ -17,7 +17,9 @@ * under the License. */ +import { ChromeStart } from 'kibana/public'; import { i18n } from '@kbn/i18n'; +import { SavedSearch } from '../../saved_searches'; export function getRootBreadcrumbs() { return [ @@ -38,3 +40,29 @@ export function getSavedSearchBreadcrumbs($route: any) { }, ]; } + +/** + * Helper function to set the Discover's breadcrumb + * if there's an active savedSearch, its title is appended + */ +export function setBreadcrumbsTitle(savedSearch: SavedSearch, chrome: ChromeStart) { + const discoverBreadcrumbsTitle = i18n.translate('discover.discoverBreadcrumbTitle', { + defaultMessage: 'Discover', + }); + + if (savedSearch.id && savedSearch.title) { + chrome.setBreadcrumbs([ + { + text: discoverBreadcrumbsTitle, + href: '#/', + }, + { text: savedSearch.title }, + ]); + } else { + chrome.setBreadcrumbs([ + { + text: discoverBreadcrumbsTitle, + }, + ]); + } +} diff --git a/src/plugins/discover/public/application/helpers/calc_field_counts.test.ts b/src/plugins/discover/public/application/helpers/calc_field_counts.test.ts new file mode 100644 index 00000000000000..ce3319bf8a667d --- /dev/null +++ b/src/plugins/discover/public/application/helpers/calc_field_counts.test.ts @@ -0,0 +1,58 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { calcFieldCounts } from './calc_field_counts'; +import { indexPatternMock } from '../../__mocks__/index_pattern'; + +describe('calcFieldCounts', () => { + test('returns valid field count data', async () => { + const rows = [ + { _id: 1, _source: { message: 'test1', bytes: 20 } }, + { _id: 2, _source: { name: 'test2', extension: 'jpg' } }, + ]; + const result = calcFieldCounts({}, rows, indexPatternMock); + expect(result).toMatchInlineSnapshot(` + Object { + "_index": 2, + "_score": 2, + "bytes": 1, + "extension": 1, + "message": 1, + "name": 1, + } + `); + }); + test('updates field count data', async () => { + const rows = [ + { _id: 1, _source: { message: 'test1', bytes: 20 } }, + { _id: 2, _source: { name: 'test2', extension: 'jpg' } }, + ]; + const result = calcFieldCounts({ message: 2 }, rows, indexPatternMock); + expect(result).toMatchInlineSnapshot(` + Object { + "_index": 2, + "_score": 2, + "bytes": 1, + "extension": 1, + "message": 3, + "name": 1, + } + `); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/calc_field_counts.ts b/src/plugins/discover/public/application/helpers/calc_field_counts.ts new file mode 100644 index 00000000000000..02c0299995e191 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/calc_field_counts.ts @@ -0,0 +1,38 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { IndexPattern } from '../../kibana_services'; + +/** + * This function is recording stats of the available fields, for usage in sidebar and sharing + * Note that this values aren't displayed, but used for internal calculations + */ +export function calcFieldCounts( + counts = {} as Record, + rows: Array>, + indexPattern: IndexPattern +) { + for (const hit of rows) { + const fields = Object.keys(indexPattern.flattenHit(hit)); + for (const fieldName of fields) { + counts[fieldName] = (counts[fieldName] || 0) + 1; + } + } + + return counts; +} diff --git a/src/plugins/discover/public/application/helpers/get_context_url.test.ts b/src/plugins/discover/public/application/helpers/get_context_url.test.ts new file mode 100644 index 00000000000000..481ea6b1a5b4f4 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_context_url.test.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { getContextUrl } from './get_context_url'; +import { FilterManager } from '../../../../data/public/query/filter_manager'; +const filterManager = ({ + getGlobalFilters: () => [], + getAppFilters: () => [], +} as unknown) as FilterManager; + +describe('Get context url', () => { + test('returning a valid context url', async () => { + const url = await getContextUrl('docId', 'ipId', ['test1', 'test2'], filterManager); + expect(url).toMatchInlineSnapshot( + `"#/context/ipId/docId?_g=(filters:!())&_a=(columns:!(test1,test2),filters:!())"` + ); + }); + + test('returning a valid context url when docId contains whitespace', async () => { + const url = await getContextUrl('doc Id', 'ipId', ['test1', 'test2'], filterManager); + expect(url).toMatchInlineSnapshot( + `"#/context/ipId/doc%20Id?_g=(filters:!())&_a=(columns:!(test1,test2),filters:!())"` + ); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/get_context_url.tsx b/src/plugins/discover/public/application/helpers/get_context_url.tsx new file mode 100644 index 00000000000000..b159341cbe28d5 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_context_url.tsx @@ -0,0 +1,52 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { stringify } from 'query-string'; +import rison from 'rison-node'; +import { url } from '../../../../kibana_utils/common'; +import { esFilters, FilterManager } from '../../../../data/public'; + +/** + * Helper function to generate an URL to a document in Discover's context view + */ +export function getContextUrl( + documentId: string, + indexPatternId: string, + columns: string[], + filterManager: FilterManager +) { + const globalFilters = filterManager.getGlobalFilters(); + const appFilters = filterManager.getAppFilters(); + + const hash = stringify( + url.encodeQuery({ + _g: rison.encode({ + filters: globalFilters || [], + }), + _a: rison.encode({ + columns, + filters: (appFilters || []).map(esFilters.disableFilter), + }), + }), + { encode: false, sort: false } + ); + + return `#/context/${encodeURIComponent(indexPatternId)}/${encodeURIComponent( + documentId + )}?${hash}`; +} diff --git a/src/plugins/discover/public/application/helpers/get_index_pattern_id.ts b/src/plugins/discover/public/application/helpers/get_index_pattern_id.ts deleted file mode 100644 index 601f892e3c56a7..00000000000000 --- a/src/plugins/discover/public/application/helpers/get_index_pattern_id.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { IIndexPattern } from '../../../../data/common/index_patterns'; - -export function findIndexPatternById( - indexPatterns: IIndexPattern[], - id: string -): IIndexPattern | undefined { - if (!Array.isArray(indexPatterns) || !id) { - return; - } - return indexPatterns.find((o) => o.id === id); -} - -/** - * Checks if the given defaultIndex exists and returns - * the first available index pattern id if not - */ -export function getFallbackIndexPatternId( - indexPatterns: IIndexPattern[], - defaultIndex: string = '' -): string { - if (defaultIndex && findIndexPatternById(indexPatterns, defaultIndex)) { - return defaultIndex; - } - return !indexPatterns || !indexPatterns.length || !indexPatterns[0].id ? '' : indexPatterns[0].id; -} - -/** - * A given index pattern id is checked for existence and a fallback is provided if it doesn't exist - * The provided defaultIndex is usually configured in Advanced Settings, if it's also invalid - * the first entry of the given list of Indexpatterns is used - */ -export function getIndexPatternId( - id: string = '', - indexPatterns: IIndexPattern[], - defaultIndex: string = '' -): string { - if (!id || !findIndexPatternById(indexPatterns, id)) { - return getFallbackIndexPatternId(indexPatterns, defaultIndex); - } - return id; -} diff --git a/src/plugins/discover/public/application/helpers/get_sharing_data.test.ts b/src/plugins/discover/public/application/helpers/get_sharing_data.test.ts new file mode 100644 index 00000000000000..b2aa3a05d7eb02 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_sharing_data.test.ts @@ -0,0 +1,68 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { getSharingData } from './get_sharing_data'; +import { IUiSettingsClient } from 'kibana/public'; +import { createSearchSourceMock } from '../../../../data/common/search/search_source/mocks'; +import { indexPatternMock } from '../../__mocks__/index_pattern'; + +describe('getSharingData', () => { + test('returns valid data for sharing', async () => { + const searchSourceMock = createSearchSourceMock({ index: indexPatternMock }); + const result = await getSharingData( + searchSourceMock, + { columns: [] }, + ({ + get: () => { + return false; + }, + } as unknown) as IUiSettingsClient, + () => Promise.resolve({}) + ); + expect(result).toMatchInlineSnapshot(` + Object { + "conflictedTypesFields": Array [], + "fields": Array [], + "indexPatternId": "the-index-pattern-id", + "metaFields": Array [ + "_index", + "_score", + ], + "searchRequest": Object { + "body": Object { + "_source": Object {}, + "fields": undefined, + "query": Object { + "bool": Object { + "filter": Array [], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, + }, + "script_fields": Object {}, + "sort": Array [], + "stored_fields": undefined, + }, + "index": "the-index-pattern-title", + }, + } + `); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/get_sharing_data.ts b/src/plugins/discover/public/application/helpers/get_sharing_data.ts new file mode 100644 index 00000000000000..e8844eb4eb6bef --- /dev/null +++ b/src/plugins/discover/public/application/helpers/get_sharing_data.ts @@ -0,0 +1,88 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { IUiSettingsClient } from 'kibana/public'; +import { DOC_HIDE_TIME_COLUMN_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../common'; +import { getSortForSearchSource } from '../angular/doc_table'; +import { SearchSource } from '../../../../data/common'; +import { AppState } from '../angular/discover_state'; +import { SortOrder } from '../../saved_searches/types'; + +const getSharingDataFields = async ( + getFieldCounts: () => Promise>, + selectedFields: string[], + timeFieldName: string, + hideTimeColumn: boolean +) => { + if (selectedFields.length === 1 && selectedFields[0] === '_source') { + const fieldCounts = await getFieldCounts(); + return { + searchFields: undefined, + selectFields: Object.keys(fieldCounts).sort(), + }; + } + + const fields = + timeFieldName && !hideTimeColumn ? [timeFieldName, ...selectedFields] : selectedFields; + return { + searchFields: fields, + selectFields: fields, + }; +}; + +/** + * Preparing data to share the current state as link or CSV/Report + */ +export async function getSharingData( + currentSearchSource: SearchSource, + state: AppState, + config: IUiSettingsClient, + getFieldCounts: () => Promise> +) { + const searchSource = currentSearchSource.createCopy(); + const index = searchSource.getField('index')!; + + const { searchFields, selectFields } = await getSharingDataFields( + getFieldCounts, + state.columns || [], + index.timeFieldName || '', + config.get(DOC_HIDE_TIME_COLUMN_SETTING) + ); + searchSource.setField('fieldsFromSource', searchFields); + searchSource.setField( + 'sort', + getSortForSearchSource(state.sort as SortOrder[], index, config.get(SORT_DEFAULT_ORDER_SETTING)) + ); + searchSource.removeField('highlight'); + searchSource.removeField('highlightAll'); + searchSource.removeField('aggs'); + searchSource.removeField('size'); + + const body = await searchSource.getSearchRequestBody(); + + return { + searchRequest: { + index: index.title, + body, + }, + fields: selectFields, + metaFields: index.metaFields, + conflictedTypesFields: index.fields.filter((f) => f.type === 'conflict').map((f) => f.name), + indexPatternId: index.id, + }; +} diff --git a/src/plugins/discover/public/application/helpers/persist_saved_search.ts b/src/plugins/discover/public/application/helpers/persist_saved_search.ts new file mode 100644 index 00000000000000..8e956eff598f3c --- /dev/null +++ b/src/plugins/discover/public/application/helpers/persist_saved_search.ts @@ -0,0 +1,65 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { updateSearchSource } from './update_search_source'; +import { IndexPattern } from '../../../../data/public'; +import { SavedSearch } from '../../saved_searches'; +import { AppState } from '../angular/discover_state'; +import { SortOrder } from '../../saved_searches/types'; +import { SavedObjectSaveOpts } from '../../../../saved_objects/public'; +import { DiscoverServices } from '../../build_services'; + +/** + * Helper function to update and persist the given savedSearch + */ +export async function persistSavedSearch( + savedSearch: SavedSearch, + { + indexPattern, + onError, + onSuccess, + services, + saveOptions, + state, + }: { + indexPattern: IndexPattern; + onError: (error: Error, savedSearch: SavedSearch) => void; + onSuccess: (id: string) => void; + saveOptions: SavedObjectSaveOpts; + services: DiscoverServices; + state: AppState; + } +) { + updateSearchSource(savedSearch.searchSource, { + indexPattern, + services, + sort: state.sort as SortOrder[], + }); + + savedSearch.columns = state.columns || []; + savedSearch.sort = (state.sort as SortOrder[]) || []; + + try { + const id = await savedSearch.save(saveOptions); + onSuccess(id); + return { id }; + } catch (saveError) { + onError(saveError, savedSearch); + return { error: saveError }; + } +} diff --git a/src/plugins/discover/public/application/helpers/popularize_field.ts b/src/plugins/discover/public/application/helpers/popularize_field.ts index 0aea86e47c9542..0623ac84c55e12 100644 --- a/src/plugins/discover/public/application/helpers/popularize_field.ts +++ b/src/plugins/discover/public/application/helpers/popularize_field.ts @@ -31,6 +31,7 @@ async function popularizeField( } field.count++; + // Catch 409 errors caused by user adding columns in a higher frequency that the changes can be persisted to Elasticsearch try { await indexPatternsService.updateSavedObject(indexPattern, 0, true); diff --git a/src/plugins/discover/public/application/helpers/resolve_index_pattern.test.ts b/src/plugins/discover/public/application/helpers/resolve_index_pattern.test.ts new file mode 100644 index 00000000000000..826f738c381a47 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/resolve_index_pattern.test.ts @@ -0,0 +1,56 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { + loadIndexPattern, + getFallbackIndexPatternId, + IndexPatternSavedObject, +} from './resolve_index_pattern'; +import { indexPatternsMock } from '../../__mocks__/index_patterns'; +import { indexPatternMock } from '../../__mocks__/index_pattern'; +import { configMock } from '../../__mocks__/config'; + +describe('Resolve index pattern tests', () => { + test('returns valid data for an existing index pattern', async () => { + const indexPatternId = 'the-index-pattern-id'; + const result = await loadIndexPattern(indexPatternId, indexPatternsMock, configMock); + expect(result.loaded).toEqual(indexPatternMock); + expect(result.stateValFound).toEqual(true); + expect(result.stateVal).toEqual(indexPatternId); + }); + test('returns fallback data for an invalid index pattern', async () => { + const indexPatternId = 'invalid-id'; + const result = await loadIndexPattern(indexPatternId, indexPatternsMock, configMock); + expect(result.loaded).toEqual(indexPatternMock); + expect(result.stateValFound).toBe(false); + expect(result.stateVal).toBe(indexPatternId); + }); + test('getFallbackIndexPatternId with an empty indexPatterns array', async () => { + const result = await getFallbackIndexPatternId([], ''); + expect(result).toBe(''); + }); + test('getFallbackIndexPatternId with an indexPatterns array', async () => { + const list = await indexPatternsMock.getCache(); + const result = await getFallbackIndexPatternId( + (list as unknown) as IndexPatternSavedObject[], + '' + ); + expect(result).toBe('the-index-pattern-id'); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/resolve_index_pattern.ts b/src/plugins/discover/public/application/helpers/resolve_index_pattern.ts new file mode 100644 index 00000000000000..61f7f087501baa --- /dev/null +++ b/src/plugins/discover/public/application/helpers/resolve_index_pattern.ts @@ -0,0 +1,158 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { i18n } from '@kbn/i18n'; +import { IUiSettingsClient, SavedObject, ToastsStart } from 'kibana/public'; +import { IndexPattern } from '../../kibana_services'; +import { IndexPatternsService, SearchSource } from '../../../../data/common'; + +export type IndexPatternSavedObject = SavedObject & { title: string }; + +interface IndexPatternData { + /** + * List of existing index patterns + */ + list: IndexPatternSavedObject[]; + /** + * Loaded index pattern (might be default index pattern if requested was not found) + */ + loaded: IndexPattern; + /** + * Id of the requested index pattern + */ + stateVal: string; + /** + * Determines if requested index pattern was found + */ + stateValFound: boolean; +} + +export function findIndexPatternById( + indexPatterns: IndexPatternSavedObject[], + id: string +): IndexPatternSavedObject | undefined { + if (!Array.isArray(indexPatterns) || !id) { + return; + } + return indexPatterns.find((o) => o.id === id); +} + +/** + * Checks if the given defaultIndex exists and returns + * the first available index pattern id if not + */ +export function getFallbackIndexPatternId( + indexPatterns: IndexPatternSavedObject[], + defaultIndex: string = '' +): string { + if (defaultIndex && findIndexPatternById(indexPatterns, defaultIndex)) { + return defaultIndex; + } + return indexPatterns && indexPatterns[0]?.id ? indexPatterns[0].id : ''; +} + +/** + * A given index pattern id is checked for existence and a fallback is provided if it doesn't exist + * The provided defaultIndex is usually configured in Advanced Settings, if it's also invalid + * the first entry of the given list of Indexpatterns is used + */ +export function getIndexPatternId( + id: string = '', + indexPatterns: IndexPatternSavedObject[] = [], + defaultIndex: string = '' +): string { + if (!id || !findIndexPatternById(indexPatterns, id)) { + return getFallbackIndexPatternId(indexPatterns, defaultIndex); + } + return id; +} + +/** + * Function to load the given index pattern by id, providing a fallback if it doesn't exist + */ +export async function loadIndexPattern( + id: string, + indexPatterns: IndexPatternsService, + config: IUiSettingsClient +): Promise { + const indexPatternList = ((await indexPatterns.getCache()) as unknown) as IndexPatternSavedObject[]; + + const actualId = getIndexPatternId(id, indexPatternList, config.get('defaultIndex')); + return { + list: indexPatternList || [], + loaded: await indexPatterns.get(actualId), + stateVal: id, + stateValFound: !!id && actualId === id, + }; +} + +/** + * Function used in the discover controller to message the user about the state of the current + * index pattern + */ +export function resolveIndexPattern( + ip: IndexPatternData, + searchSource: SearchSource, + toastNotifications: ToastsStart +) { + const { loaded: loadedIndexPattern, stateVal, stateValFound } = ip; + + const ownIndexPattern = searchSource.getOwnField('index'); + + if (ownIndexPattern && !stateVal) { + return ownIndexPattern; + } + + if (stateVal && !stateValFound) { + const warningTitle = i18n.translate('discover.valueIsNotConfiguredIndexPatternIDWarningTitle', { + defaultMessage: '{stateVal} is not a configured index pattern ID', + values: { + stateVal: `"${stateVal}"`, + }, + }); + + if (ownIndexPattern) { + toastNotifications.addWarning({ + title: warningTitle, + text: i18n.translate('discover.showingSavedIndexPatternWarningDescription', { + defaultMessage: + 'Showing the saved index pattern: "{ownIndexPatternTitle}" ({ownIndexPatternId})', + values: { + ownIndexPatternTitle: ownIndexPattern.title, + ownIndexPatternId: ownIndexPattern.id, + }, + }), + }); + return ownIndexPattern; + } + + toastNotifications.addWarning({ + title: warningTitle, + text: i18n.translate('discover.showingDefaultIndexPatternWarningDescription', { + defaultMessage: + 'Showing the default index pattern: "{loadedIndexPatternTitle}" ({loadedIndexPatternId})', + values: { + loadedIndexPatternTitle: loadedIndexPattern.title, + loadedIndexPatternId: loadedIndexPattern.id, + }, + }), + }); + } + + return loadedIndexPattern; +} diff --git a/src/plugins/discover/public/application/helpers/update_search_source.test.ts b/src/plugins/discover/public/application/helpers/update_search_source.test.ts new file mode 100644 index 00000000000000..91832325432ef3 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/update_search_source.test.ts @@ -0,0 +1,51 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { updateSearchSource } from './update_search_source'; +import { createSearchSourceMock } from '../../../../data/common/search/search_source/mocks'; +import { indexPatternMock } from '../../__mocks__/index_pattern'; +import { IUiSettingsClient } from 'kibana/public'; +import { DiscoverServices } from '../../build_services'; +import { dataPluginMock } from '../../../../data/public/mocks'; +import { SAMPLE_SIZE_SETTING } from '../../../common'; +import { SortOrder } from '../../saved_searches/types'; + +describe('updateSearchSource', () => { + test('updates a given search source', async () => { + const searchSourceMock = createSearchSourceMock({}); + const sampleSize = 250; + const result = updateSearchSource(searchSourceMock, { + indexPattern: indexPatternMock, + services: ({ + data: dataPluginMock.createStartContract(), + uiSettings: ({ + get: (key: string) => { + if (key === SAMPLE_SIZE_SETTING) { + return sampleSize; + } + return false; + }, + } as unknown) as IUiSettingsClient, + } as unknown) as DiscoverServices, + sort: [] as SortOrder[], + }); + expect(result.getField('index')).toEqual(indexPatternMock); + expect(result.getField('size')).toEqual(sampleSize); + }); +}); diff --git a/src/plugins/discover/public/application/helpers/update_search_source.ts b/src/plugins/discover/public/application/helpers/update_search_source.ts new file mode 100644 index 00000000000000..324dc8a48457a5 --- /dev/null +++ b/src/plugins/discover/public/application/helpers/update_search_source.ts @@ -0,0 +1,54 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { getSortForSearchSource } from '../angular/doc_table'; +import { SAMPLE_SIZE_SETTING, SORT_DEFAULT_ORDER_SETTING } from '../../../common'; +import { IndexPattern, ISearchSource } from '../../../../data/common/'; +import { SortOrder } from '../../saved_searches/types'; +import { DiscoverServices } from '../../build_services'; + +/** + * Helper function to update the given searchSource before fetching/sharing/persisting + */ +export function updateSearchSource( + searchSource: ISearchSource, + { + indexPattern, + services, + sort, + }: { + indexPattern: IndexPattern; + services: DiscoverServices; + sort: SortOrder[]; + } +) { + const { uiSettings, data } = services; + const usedSort = getSortForSearchSource( + sort, + indexPattern, + uiSettings.get(SORT_DEFAULT_ORDER_SETTING) + ); + + searchSource + .setField('index', indexPattern) + .setField('size', uiSettings.get(SAMPLE_SIZE_SETTING)) + .setField('sort', usedSort) + .setField('query', data.query.queryString.getQuery() || null) + .setField('filter', data.query.filterManager.getFilters()); + return searchSource; +} diff --git a/src/plugins/discover/public/application/index.scss b/src/plugins/discover/public/application/index.scss index 5aa353828274cb..3c24d4f51de2e6 100644 --- a/src/plugins/discover/public/application/index.scss +++ b/src/plugins/discover/public/application/index.scss @@ -1,2 +1 @@ @import 'angular/index'; -@import 'discover'; diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index b8e8bb314dd559..eab47394a3725c 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -37,7 +37,7 @@ import { Start as InspectorPublicPluginStart } from 'src/plugins/inspector/publi import { SharePluginStart } from 'src/plugins/share/public'; import { ChartsPluginStart } from 'src/plugins/charts/public'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { DiscoverStartPlugins } from './plugin'; import { createSavedSearchesLoader, SavedSearch } from './saved_searches'; import { getHistory } from './kibana_services'; @@ -68,7 +68,7 @@ export interface DiscoverServices { getSavedSearchUrlById: (id: string) => Promise; getEmbeddableInjector: any; uiSettings: IUiSettingsClient; - trackUiMetric?: (metricType: UiStatsMetricType, eventName: string | string[]) => void; + trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; } export async function buildServices( @@ -109,6 +109,6 @@ export async function buildServices( timefilter: plugins.data.query.timefilter.timefilter, toastNotifications: core.notifications.toasts, uiSettings: core.uiSettings, - trackUiMetric: usageCollection?.reportUiStats.bind(usageCollection, 'discover'), + trackUiMetric: usageCollection?.reportUiCounter.bind(usageCollection, 'discover'), }; } diff --git a/src/plugins/discover/public/saved_searches/types.ts b/src/plugins/discover/public/saved_searches/types.ts index 13361cb647ddc0..d5e5dd765a364d 100644 --- a/src/plugins/discover/public/saved_searches/types.ts +++ b/src/plugins/discover/public/saved_searches/types.ts @@ -17,18 +17,21 @@ * under the License. */ -import { ISearchSource } from '../../../data/public'; +import { SearchSource } from '../../../data/public'; +import { SavedObjectSaveOpts } from '../../../saved_objects/public'; export type SortOrder = [string, string]; export interface SavedSearch { readonly id: string; title: string; - searchSource: ISearchSource; + searchSource: SearchSource; description?: string; columns: string[]; sort: SortOrder[]; destroy: () => void; + save: (saveOptions: SavedObjectSaveOpts) => Promise; lastSavedTitle?: string; + copyOnSave?: boolean; } export interface SavedSearchLoader { get: (id: string) => Promise; diff --git a/src/plugins/discover/public/url_generator.test.ts b/src/plugins/discover/public/url_generator.test.ts index 98b7625e63c72f..95bff6b1fdc9c1 100644 --- a/src/plugins/discover/public/url_generator.test.ts +++ b/src/plugins/discover/public/url_generator.test.ts @@ -221,6 +221,19 @@ describe('Discover url generator', () => { expect(url).toContain('__test__'); }); + test('can specify columns, interval, sort and savedQuery', async () => { + const { generator } = await setup(); + const url = await generator.createUrl({ + columns: ['_source'], + interval: 'auto', + sort: [['timestamp, asc']], + savedQuery: '__savedQueryId__', + }); + expect(url).toMatchInlineSnapshot( + `"xyz/app/discover#/?_g=()&_a=(columns:!(_source),interval:auto,savedQuery:__savedQueryId__,sort:!(!('timestamp,%20asc')))"` + ); + }); + describe('useHash property', () => { describe('when default useHash is set to false', () => { test('when using default, sets index pattern ID in the generated URL', async () => { diff --git a/src/plugins/discover/public/url_generator.ts b/src/plugins/discover/public/url_generator.ts index df9b16a4627ec7..6d86818910b11b 100644 --- a/src/plugins/discover/public/url_generator.ts +++ b/src/plugins/discover/public/url_generator.ts @@ -52,7 +52,7 @@ export interface DiscoverUrlGeneratorState { refreshInterval?: RefreshInterval; /** - * Optionally apply filers. + * Optionally apply filters. */ filters?: Filter[]; @@ -72,6 +72,24 @@ export interface DiscoverUrlGeneratorState { * Background search session id */ searchSessionId?: string; + + /** + * Columns displayed in the table + */ + columns?: string[]; + + /** + * Used interval of the histogram + */ + interval?: string; + /** + * Array of the used sorting [[field,direction],...] + */ + sort?: string[][]; + /** + * id of the used saved query + */ + savedQuery?: string; } interface Params { @@ -88,20 +106,28 @@ export class DiscoverUrlGenerator public readonly id = DISCOVER_APP_URL_GENERATOR; public readonly createUrl = async ({ + useHash = this.params.useHash, filters, indexPatternId, query, refreshInterval, savedSearchId, timeRange, - useHash = this.params.useHash, searchSessionId, + columns, + savedQuery, + sort, + interval, }: DiscoverUrlGeneratorState): Promise => { const savedSearchPath = savedSearchId ? encodeURIComponent(savedSearchId) : ''; const appState: { query?: Query; filters?: Filter[]; index?: string; + columns?: string[]; + interval?: string; + sort?: string[][]; + savedQuery?: string; } = {}; const queryState: QueryState = {}; @@ -109,6 +135,10 @@ export class DiscoverUrlGenerator if (filters && filters.length) appState.filters = filters?.filter((f) => !esFilters.isFilterPinned(f)); if (indexPatternId) appState.index = indexPatternId; + if (columns) appState.columns = columns; + if (savedQuery) appState.savedQuery = savedQuery; + if (sort) appState.sort = sort; + if (interval) appState.interval = interval; if (timeRange) queryState.time = timeRange; if (filters && filters.length) diff --git a/src/plugins/embeddable/jest.config.js b/src/plugins/embeddable/jest.config.js new file mode 100644 index 00000000000000..a0797910925498 --- /dev/null +++ b/src/plugins/embeddable/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/embeddable'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/embeddable/public/lib/containers/container.ts b/src/plugins/embeddable/public/lib/containers/container.ts index 292d7d3bf7a1e3..1426ade147d307 100644 --- a/src/plugins/embeddable/public/lib/containers/container.ts +++ b/src/plugins/embeddable/public/lib/containers/container.ts @@ -171,7 +171,7 @@ export abstract class Container< return this.children[id] as TEmbeddable; } - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const subscription = merge(this.getOutput$(), this.getInput$()).subscribe(() => { if (this.output.embeddableLoaded[id]) { subscription.unsubscribe(); @@ -181,6 +181,7 @@ export abstract class Container< // If we hit this, the panel was removed before the embeddable finished loading. if (this.input.panels[id] === undefined) { subscription.unsubscribe(); + // @ts-expect-error undefined in not assignable to TEmbeddable | ErrorEmbeddable resolve(undefined); } }); diff --git a/src/plugins/embeddable/public/lib/state_transfer/types.ts b/src/plugins/embeddable/public/lib/state_transfer/types.ts index d8b4f4801bba3c..d36954528dbf02 100644 --- a/src/plugins/embeddable/public/lib/state_transfer/types.ts +++ b/src/plugins/embeddable/public/lib/state_transfer/types.ts @@ -53,7 +53,7 @@ export function isEmbeddablePackageState(state: unknown): state is EmbeddablePac function ensureFieldOfTypeExists(key: string, obj: unknown, type?: string): boolean { return ( - obj && + Boolean(obj) && key in (obj as { [key: string]: unknown }) && (!type || typeof (obj as { [key: string]: unknown })[key] === type) ); diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx index 893b6b04e50bcd..b6a7137c1e421c 100644 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx +++ b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx @@ -56,6 +56,7 @@ export class ContactCardEmbeddableFactory { modalSession.close(); + // @ts-expect-error resolve(undefined); }} onCreate={(input: { firstName: string; lastName?: string }) => { diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx new file mode 100644 index 00000000000000..338eb4877a50a1 --- /dev/null +++ b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ContactCardEmbeddable } from './contact_card_embeddable'; + +export class ContactCardExportableEmbeddable extends ContactCardEmbeddable { + public getInspectorAdapters = () => { + return { + tables: { + layer1: { + type: 'datatable', + columns: [ + { id: 'firstName', name: 'First Name' }, + { id: 'originalLastName', name: 'Last Name' }, + ], + rows: [ + { + firstName: this.getInput().firstName, + orignialLastName: this.getInput().lastName, + }, + ], + }, + }, + }; + }; +} + +export const CONTACT_EXPORTABLE_USER_TRIGGER = 'CONTACT_EXPORTABLE_USER_TRIGGER'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx new file mode 100644 index 00000000000000..5b8827ac6fc2a3 --- /dev/null +++ b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { UiActionsStart } from 'src/plugins/ui_actions/public'; + +import { CoreStart } from 'src/core/public'; +import { toMountPoint } from '../../../../../../kibana_react/public'; +import { EmbeddableFactoryDefinition } from '../../../embeddables'; +import { Container } from '../../../containers'; +import { ContactCardEmbeddableInput } from './contact_card_embeddable'; +import { ContactCardExportableEmbeddable } from './contact_card_exportable_embeddable'; +import { ContactCardInitializer } from './contact_card_initializer'; + +export const CONTACT_CARD_EXPORTABLE_EMBEDDABLE = 'CONTACT_CARD_EXPORTABLE_EMBEDDABLE'; + +export class ContactCardExportableEmbeddableFactory + implements EmbeddableFactoryDefinition { + public readonly type = CONTACT_CARD_EXPORTABLE_EMBEDDABLE; + + constructor( + private readonly execTrigger: UiActionsStart['executeTriggerActions'], + private readonly overlays: CoreStart['overlays'] + ) {} + + public async isEditable() { + return true; + } + + public getDisplayName() { + return i18n.translate('embeddableApi.samples.contactCard.displayName', { + defaultMessage: 'contact card', + }); + } + + public getExplicitInput = (): Promise> => { + return new Promise((resolve) => { + const modalSession = this.overlays.openModal( + toMountPoint( + { + modalSession.close(); + // @ts-expect-error + resolve(undefined); + }} + onCreate={(input: { firstName: string; lastName?: string }) => { + modalSession.close(); + resolve(input); + }} + /> + ), + { + 'data-test-subj': 'createContactCardEmbeddable', + } + ); + }); + }; + + public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { + return new ContactCardExportableEmbeddable( + initialInput, + { + execAction: this.execTrigger, + }, + parent + ); + }; +} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts index c79a4f517916ea..a9006cdc7b477d 100644 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts +++ b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts @@ -20,5 +20,7 @@ export * from './contact_card'; export * from './contact_card_embeddable'; export * from './contact_card_embeddable_factory'; +export * from './contact_card_exportable_embeddable'; +export * from './contact_card_exportable_embeddable_factory'; export * from './contact_card_initializer'; export * from './slow_contact_card_embeddable_factory'; diff --git a/src/plugins/embeddable/public/public.api.md b/src/plugins/embeddable/public/public.api.md index f3f3682404e326..1621dfa3f2c3c3 100644 --- a/src/plugins/embeddable/public/public.api.md +++ b/src/plugins/embeddable/public/public.api.md @@ -12,6 +12,7 @@ import { ApiResponse as ApiResponse_2 } from '@elastic/elasticsearch'; import { ApplicationStart as ApplicationStart_2 } from 'kibana/public'; import { Assign } from '@kbn/utility-types'; import { BehaviorSubject } from 'rxjs'; +import { BfetchPublicSetup } from 'src/plugins/bfetch/public'; import Boom from '@hapi/boom'; import { CoreSetup as CoreSetup_2 } from 'src/core/public'; import { CoreSetup as CoreSetup_3 } from 'kibana/public'; @@ -27,12 +28,14 @@ import { EuiButtonEmptyProps } from '@elastic/eui'; import { EuiComboBoxProps } from '@elastic/eui'; import { EuiConfirmModalProps } from '@elastic/eui'; import { EuiContextMenuPanelDescriptor } from '@elastic/eui'; +import { EuiFlyoutSize } from '@elastic/eui'; import { EuiGlobalToastListToast } from '@elastic/eui'; import { EventEmitter } from 'events'; import { ExclusiveUnion } from '@elastic/eui'; import { ExpressionAstFunction } from 'src/plugins/expressions/common'; import { History } from 'history'; import { Href } from 'history'; +import { HttpSetup as HttpSetup_2 } from 'kibana/public'; import { I18nStart as I18nStart_2 } from 'src/core/public'; import { IconType } from '@elastic/eui'; import { ISearchOptions } from 'src/plugins/data/public'; @@ -55,7 +58,9 @@ import { OverlayStart as OverlayStart_2 } from 'src/core/public'; import { PackageInfo } from '@kbn/config'; import { Path } from 'history'; import { PluginInitializerContext } from 'src/core/public'; +import { PluginInitializerContext as PluginInitializerContext_3 } from 'kibana/public'; import * as PropTypes from 'prop-types'; +import { PublicContract } from '@kbn/utility-types'; import { PublicMethodsOf } from '@kbn/utility-types'; import { PublicUiSettingsParams } from 'src/core/server/types'; import React from 'react'; @@ -69,6 +74,7 @@ import { SavedObjectAttributes } from 'kibana/server'; import { SavedObjectAttributes as SavedObjectAttributes_2 } from 'src/core/public'; import { SavedObjectAttributes as SavedObjectAttributes_3 } from 'kibana/public'; import { SavedObjectsClientContract as SavedObjectsClientContract_3 } from 'src/core/public'; +import { SavedObjectsFindOptions as SavedObjectsFindOptions_3 } from 'kibana/public'; import { SavedObjectsFindResponse as SavedObjectsFindResponse_2 } from 'kibana/server'; import { Search } from '@elastic/elasticsearch/api/requestParams'; import { SearchResponse } from 'elasticsearch'; @@ -76,6 +82,7 @@ import { SerializedFieldFormat as SerializedFieldFormat_2 } from 'src/plugins/ex import { ShallowPromise } from '@kbn/utility-types'; import { SimpleSavedObject as SimpleSavedObject_2 } from 'src/core/public'; import { Start as Start_2 } from 'src/plugins/inspector/public'; +import { StartServicesAccessor as StartServicesAccessor_2 } from 'kibana/public'; import { ToastInputFields as ToastInputFields_2 } from 'src/core/public/notifications'; import { ToastsSetup as ToastsSetup_2 } from 'kibana/public'; import { TransportRequestOptions } from '@elastic/elasticsearch/lib/Transport'; @@ -83,7 +90,7 @@ import { TransportRequestParams } from '@elastic/elasticsearch/lib/Transport'; import { TransportRequestPromise } from '@elastic/elasticsearch/lib/Transport'; import { TypeOf } from '@kbn/config-schema'; import { UiComponent } from 'src/plugins/kibana_utils/public'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { UnregisterCallback } from 'history'; import { UserProvidedValues } from 'src/core/server/types'; diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts new file mode 100644 index 00000000000000..29369f74a459dd --- /dev/null +++ b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts @@ -0,0 +1,42 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { parseEsError } from './es_error_parser'; + +describe('ES error parser', () => { + test('should return all the cause of the error', () => { + const esError = `{ + "error": { + "reason": "Houston we got a problem", + "caused_by": { + "reason": "First reason", + "caused_by": { + "reason": "Second reason", + "caused_by": { + "reason": "Third reason" + } + } + } + } + }`; + + const parsedError = parseEsError(esError); + expect(parsedError.message).toEqual('Houston we got a problem'); + expect(parsedError.cause).toEqual(['First reason', 'Second reason', 'Third reason']); + }); +}); diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts new file mode 100644 index 00000000000000..800a56bc007eb5 --- /dev/null +++ b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts @@ -0,0 +1,52 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +interface ParsedError { + message: string; + cause: string[]; +} + +const getCause = (obj: any = {}, causes: string[] = []): string[] => { + const updated = [...causes]; + + if (obj.caused_by) { + updated.push(obj.caused_by.reason); + + // Recursively find all the "caused by" reasons + return getCause(obj.caused_by, updated); + } + + return updated.filter(Boolean); +}; + +export const parseEsError = (err: string): ParsedError => { + try { + const { error } = JSON.parse(err); + const cause = getCause(error); + return { + message: error.reason, + cause, + }; + } catch (e) { + return { + message: err, + cause: [], + }; + } +}; diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts index 484dc17868ab0d..e467930d3ad0be 100644 --- a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts +++ b/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts @@ -19,3 +19,4 @@ export { isEsError } from './is_es_error'; export { handleEsError } from './handle_es_error'; +export { parseEsError } from './es_error_parser'; diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx b/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx index 4dd9cfcaff16bf..2b3e6ab48992d6 100644 --- a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx +++ b/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx @@ -54,7 +54,7 @@ export const GlobalFlyoutProvider: React.FC = ({ children }) => { const [showFlyout, setShowFlyout] = useState(false); const [activeContent, setActiveContent] = useState | undefined>(undefined); - const { id, Component, props, flyoutProps } = activeContent ?? {}; + const { id, Component, props, flyoutProps, cleanUpFunc } = activeContent ?? {}; const addContent: Context['addContent'] = useCallback((content) => { setActiveContent((prev) => { @@ -77,11 +77,19 @@ export const GlobalFlyoutProvider: React.FC = ({ children }) => { const removeContent: Context['removeContent'] = useCallback( (contentId: string) => { + // Note: when we will actually deal with multi content then + // there will be more logic here! :) if (contentId === id) { + setActiveContent(undefined); + + if (cleanUpFunc) { + cleanUpFunc(); + } + closeFlyout(); } }, - [id, closeFlyout] + [id, closeFlyout, cleanUpFunc] ); const mergedFlyoutProps = useMemo(() => { @@ -130,14 +138,6 @@ export const useGlobalFlyout = () => { const contents = useRef | undefined>(undefined); const { removeContent, addContent: addContentToContext } = ctx; - useEffect(() => { - isMounted.current = true; - - return () => { - isMounted.current = false; - }; - }, []); - const getContents = useCallback(() => { if (contents.current === undefined) { contents.current = new Set(); @@ -153,6 +153,14 @@ export const useGlobalFlyout = () => { [getContents, addContentToContext] ); + useEffect(() => { + isMounted.current = true; + + return () => { + isMounted.current = false; + }; + }, []); + useEffect(() => { return () => { if (!isMounted.current) { diff --git a/src/plugins/es_ui_shared/jest.config.js b/src/plugins/es_ui_shared/jest.config.js new file mode 100644 index 00000000000000..5b8b34692800d6 --- /dev/null +++ b/src/plugins/es_ui_shared/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/es_ui_shared'], +}; diff --git a/src/plugins/es_ui_shared/server/errors/index.ts b/src/plugins/es_ui_shared/server/errors/index.ts index 532e02774ff502..3533e96aaea3ae 100644 --- a/src/plugins/es_ui_shared/server/errors/index.ts +++ b/src/plugins/es_ui_shared/server/errors/index.ts @@ -17,4 +17,4 @@ * under the License. */ -export { isEsError, handleEsError } from '../../__packages_do_not_import__/errors'; +export { isEsError, handleEsError, parseEsError } from '../../__packages_do_not_import__/errors'; diff --git a/src/plugins/es_ui_shared/server/index.ts b/src/plugins/es_ui_shared/server/index.ts index b2c9c85d956bac..2801d0569aa3f4 100644 --- a/src/plugins/es_ui_shared/server/index.ts +++ b/src/plugins/es_ui_shared/server/index.ts @@ -17,7 +17,7 @@ * under the License. */ -export { isEsError, handleEsError } from './errors'; +export { isEsError, handleEsError, parseEsError } from './errors'; /** dummy plugin*/ export function plugin() { diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx b/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx index b80d6caf54f4f9..2a7087b5b2806c 100644 --- a/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx +++ b/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx @@ -30,7 +30,7 @@ interface Props { [key: string]: any; } -export const CheckBoxField = ({ field, euiFieldProps = {}, ...rest }: Props) => { +export const CheckBoxField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const CheckBoxField = ({ field, euiFieldProps = {}, ...rest }: Props) => error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const ComboBoxField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { // Errors for the comboBox value (the "array") const errorMessageField = field.getErrorsMessages(); @@ -87,7 +87,7 @@ export const ComboBoxField = ({ field, euiFieldProps = {}, ...rest }: Props) => error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const MultiSelectField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const MultiSelectField = ({ field, euiFieldProps = {}, ...rest }: Props) error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const NumericField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const NumericField = ({ field, euiFieldProps = {}, ...rest }: Props) => { error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const RadioGroupField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const RadioGroupField = ({ field, euiFieldProps = {}, ...rest }: Props) = error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const RangeField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); const { onChange: onFieldChange } = field; @@ -50,7 +50,7 @@ export const RangeField = ({ field, euiFieldProps = {}, ...rest }: Props) => { error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const SelectField = ({ field, euiFieldProps, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -44,7 +44,7 @@ export const SelectField = ({ field, euiFieldProps, ...rest }: Props) => { error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const SuperSelectField = ({ + field, + euiFieldProps = { options: [] }, + idAria, + ...rest +}: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -42,7 +47,7 @@ export const SuperSelectField = ({ field, euiFieldProps = { options: [] }, ...re error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const TextAreaField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const TextAreaField = ({ field, euiFieldProps = {}, ...rest }: Props) => error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const TextField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); return ( @@ -39,7 +39,7 @@ export const TextField = ({ field, euiFieldProps = {}, ...rest }: Props) => { error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > { +export const ToggleField = ({ field, euiFieldProps = {}, idAria, ...rest }: Props) => { const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); // Shim for sufficient overlap between EuiSwitchEvent and FieldHook[onChange] event @@ -46,7 +46,7 @@ export const ToggleField = ({ field, euiFieldProps = {}, ...rest }: Props) => { error={errorMessage} isInvalid={isInvalid} fullWidth - describedByIds={rest.idAria ? [rest.idAria] : undefined} + describedByIds={idAria ? [idAria] : undefined} {...rest} > ( return; } - return new Promise((resolve) => { + return new Promise((resolve) => { setTimeout(() => { areSomeFieldValidating = fieldsToArray().some((field) => field.isValidating); if (areSomeFieldValidating) { diff --git a/src/plugins/expressions/common/execution/execution.test.ts b/src/plugins/expressions/common/execution/execution.test.ts index 3bd29632f0902f..10a18d0cbf4350 100644 --- a/src/plugins/expressions/common/execution/execution.test.ts +++ b/src/plugins/expressions/common/execution/execution.test.ts @@ -195,6 +195,18 @@ describe('Execution', () => { expect(typeof result).toBe('object'); }); + test('context.getKibanaRequest is a function if provided', async () => { + const { result } = (await run('introspectContext key="getKibanaRequest"', { + kibanaRequest: {}, + })) as any; + expect(typeof result).toBe('function'); + }); + + test('context.getKibanaRequest is undefined if not provided', async () => { + const { result } = (await run('introspectContext key="getKibanaRequest"')) as any; + expect(typeof result).toBe('undefined'); + }); + test('unknown context key is undefined', async () => { const { result } = (await run('introspectContext key="foo"')) as any; expect(typeof result).toBe('undefined'); diff --git a/src/plugins/expressions/common/execution/execution.ts b/src/plugins/expressions/common/execution/execution.ts index e53a6f7d58e1cc..9eae7fd717eda0 100644 --- a/src/plugins/expressions/common/execution/execution.ts +++ b/src/plugins/expressions/common/execution/execution.ts @@ -152,6 +152,9 @@ export class Execution< this.context = { getSearchContext: () => this.execution.params.searchContext || {}, getSearchSessionId: () => execution.params.searchSessionId, + getKibanaRequest: execution.params.kibanaRequest + ? () => execution.params.kibanaRequest + : undefined, variables: execution.params.variables || {}, types: executor.getTypes(), abortSignal: this.abortController.signal, diff --git a/src/plugins/expressions/common/execution/types.ts b/src/plugins/expressions/common/execution/types.ts index abe3e08fc20c26..a41f97118c4b2b 100644 --- a/src/plugins/expressions/common/execution/types.ts +++ b/src/plugins/expressions/common/execution/types.ts @@ -17,6 +17,9 @@ * under the License. */ +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import type { KibanaRequest } from 'src/core/server'; + import { ExpressionType, SerializableState } from '../expression_types'; import { Adapters, DataAdapter, RequestAdapter } from '../../../inspector/common'; import { SavedObject, SavedObjectAttributes } from '../../../../core/public'; @@ -59,6 +62,13 @@ export interface ExecutionContext< */ getSearchSessionId: () => string | undefined; + /** + * Getter to retrieve the `KibanaRequest` object inside an expression function. + * Useful for functions which are running on the server and need to perform + * operations that are scoped to a specific user. + */ + getKibanaRequest?: () => KibanaRequest; + /** * Allows to fetch saved objects from ElasticSearch. In browser `getSavedObject` * function is provided automatically by the Expressions plugin. On the server diff --git a/src/plugins/expressions/common/expression_functions/series_calculation_helpers.ts b/src/plugins/expressions/common/expression_functions/series_calculation_helpers.ts index 99ad2098ab10a0..71e528f78ec81f 100644 --- a/src/plugins/expressions/common/expression_functions/series_calculation_helpers.ts +++ b/src/plugins/expressions/common/expression_functions/series_calculation_helpers.ts @@ -39,14 +39,19 @@ export function getBucketIdentifier(row: DatatableRow, groupColumns?: string[]) * @param outputColumnId Id of the output column * @param inputColumnId Id of the input column * @param outputColumnName Optional name of the output column + * @param options Optional options, set `allowColumnOverwrite` to true to not raise an exception if the output column exists already */ export function buildResultColumns( input: Datatable, outputColumnId: string, inputColumnId: string, - outputColumnName: string | undefined + outputColumnName: string | undefined, + options: { allowColumnOverwrite: boolean } = { allowColumnOverwrite: false } ) { - if (input.columns.some((column) => column.id === outputColumnId)) { + if ( + !options.allowColumnOverwrite && + input.columns.some((column) => column.id === outputColumnId) + ) { throw new Error( i18n.translate('expressions.functions.seriesCalculations.columnConflictMessage', { defaultMessage: diff --git a/src/plugins/expressions/common/expression_renderers/types.ts b/src/plugins/expressions/common/expression_renderers/types.ts index 0ea3d72e756092..dd3124c7d17ee3 100644 --- a/src/plugins/expressions/common/expression_renderers/types.ts +++ b/src/plugins/expressions/common/expression_renderers/types.ts @@ -61,6 +61,18 @@ export interface ExpressionRenderDefinition { export type AnyExpressionRenderDefinition = ExpressionRenderDefinition; +/** + * Mode of the expression render environment. + * This value can be set from a consumer embedding an expression renderer and is accessible + * from within the active render function as part of the handlers. + * The following modes are supported: + * * display (default): The chart is rendered in a container with the main purpose of viewing the chart (e.g. in a container like dashboard or canvas) + * * preview: The chart is rendered in very restricted space (below 100px width and height) and should only show a rough outline + * * edit: The chart is rendered within an editor and configuration elements within the chart should be displayed + * * noInteractivity: The chart is rendered in a non-interactive environment and should not provide any affordances for interaction like brushing + */ +export type RenderMode = 'noInteractivity' | 'edit' | 'preview' | 'display'; + export interface IInterpreterRenderHandlers { /** * Done increments the number of rendering successes @@ -70,5 +82,6 @@ export interface IInterpreterRenderHandlers { reload: () => void; update: (params: any) => void; event: (event: any) => void; + getRenderMode: () => RenderMode; uiState?: PersistedState; } diff --git a/src/plugins/expressions/common/expression_types/expression_type.test.ts b/src/plugins/expressions/common/expression_types/expression_type.test.ts index b94d9a305121fe..2976697e0299f3 100644 --- a/src/plugins/expressions/common/expression_types/expression_type.test.ts +++ b/src/plugins/expressions/common/expression_types/expression_type.test.ts @@ -44,7 +44,7 @@ export const render: ExpressionTypeDefinition<'render', ExpressionValueRender(v: T): ExpressionValueRender => ({ - type: name, + type: 'render', as: 'debug', value: v, }), diff --git a/src/plugins/expressions/common/service/expressions_services.ts b/src/plugins/expressions/common/service/expressions_services.ts index c9cc0680360bb1..ec1fffe64f1027 100644 --- a/src/plugins/expressions/common/service/expressions_services.ts +++ b/src/plugins/expressions/common/service/expressions_services.ts @@ -17,6 +17,9 @@ * under the License. */ +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import type { KibanaRequest } from 'src/core/server'; + import { Executor } from '../executor'; import { AnyExpressionRenderDefinition, ExpressionRendererRegistry } from '../expression_renderers'; import { ExpressionAstExpression } from '../ast'; @@ -58,6 +61,13 @@ export interface ExpressionExecutionParams { */ debug?: boolean; + /** + * Makes a `KibanaRequest` object available to expression functions. Useful for + * functions which are running on the server and need to perform operations that + * are scoped to a specific user. + */ + kibanaRequest?: KibanaRequest; + searchSessionId?: string; inspectorAdapters?: Adapters; diff --git a/src/plugins/expressions/jest.config.js b/src/plugins/expressions/jest.config.js new file mode 100644 index 00000000000000..b4e3e10b3fc700 --- /dev/null +++ b/src/plugins/expressions/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/expressions'], +}; diff --git a/src/plugins/expressions/public/loader.test.ts b/src/plugins/expressions/public/loader.test.ts index bf8b4427695638..598b614a326a9d 100644 --- a/src/plugins/expressions/public/loader.test.ts +++ b/src/plugins/expressions/public/loader.test.ts @@ -20,17 +20,24 @@ import { first, skip, toArray } from 'rxjs/operators'; import { loader, ExpressionLoader } from './loader'; import { Observable } from 'rxjs'; -import { parseExpression, IInterpreterRenderHandlers } from '../common'; +import { + parseExpression, + IInterpreterRenderHandlers, + RenderMode, + AnyExpressionFunctionDefinition, +} from '../common'; // eslint-disable-next-line -const { __getLastExecution } = require('./services'); +const { __getLastExecution, __getLastRenderMode } = require('./services'); const element: HTMLElement = null as any; jest.mock('./services', () => { + let renderMode: RenderMode | undefined; const renderers: Record = { test: { render: (el: HTMLElement, value: unknown, handlers: IInterpreterRenderHandlers) => { + renderMode = handlers.getRenderMode(); handlers.done(); }, }, @@ -39,9 +46,18 @@ jest.mock('./services', () => { // eslint-disable-next-line const service = new (require('../common/service/expressions_services').ExpressionsService as any)(); + const testFn: AnyExpressionFunctionDefinition = { + fn: () => ({ type: 'render', as: 'test' }), + name: 'testrender', + args: {}, + help: '', + }; + service.registerFunction(testFn); + const moduleMock = { __execution: undefined, __getLastExecution: () => moduleMock.__execution, + __getLastRenderMode: () => renderMode, getRenderersRegistry: () => ({ get: (id: string) => renderers[id], }), @@ -130,6 +146,14 @@ describe('ExpressionLoader', () => { expect(response).toBe(2); }); + it('passes mode to the renderer', async () => { + const expressionLoader = new ExpressionLoader(element, 'testrender', { + renderMode: 'edit', + }); + await expressionLoader.render$.pipe(first()).toPromise(); + expect(__getLastRenderMode()).toEqual('edit'); + }); + it('cancels the previous request when the expression is updated', () => { const expressionLoader = new ExpressionLoader(element, 'var foo', {}); const execution = __getLastExecution(); diff --git a/src/plugins/expressions/public/loader.ts b/src/plugins/expressions/public/loader.ts index 91c482621de36c..983a344c0e1a16 100644 --- a/src/plugins/expressions/public/loader.ts +++ b/src/plugins/expressions/public/loader.ts @@ -63,6 +63,7 @@ export class ExpressionLoader { this.renderHandler = new ExpressionRenderHandler(element, { onRenderError: params && params.onRenderError, + renderMode: params?.renderMode, }); this.render$ = this.renderHandler.render$; this.update$ = this.renderHandler.update$; diff --git a/src/plugins/expressions/public/public.api.md b/src/plugins/expressions/public/public.api.md index 17f8e6255f6bb0..97ff00db0966c0 100644 --- a/src/plugins/expressions/public/public.api.md +++ b/src/plugins/expressions/public/public.api.md @@ -9,6 +9,7 @@ import { CoreStart } from 'src/core/public'; import { Ensure } from '@kbn/utility-types'; import { EnvironmentMode } from '@kbn/config'; import { EventEmitter } from 'events'; +import { KibanaRequest } from 'src/core/server'; import { Observable } from 'rxjs'; import { PackageInfo } from '@kbn/config'; import { PersistedState } from 'src/plugins/visualizations/public'; @@ -136,6 +137,7 @@ export type ExecutionContainer = StateContainer { abortSignal: AbortSignal; + getKibanaRequest?: () => KibanaRequest; // Warning: (ae-forgotten-export) The symbol "SavedObjectAttributes" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "SavedObject" needs to be exported by the entry point index.d.ts getSavedObject?: (type: string, id: string) => Promise>; @@ -530,7 +532,7 @@ export interface ExpressionRenderError extends Error { // @public (undocumented) export class ExpressionRenderHandler { // Warning: (ae-forgotten-export) The symbol "ExpressionRenderHandlerParams" needs to be exported by the entry point index.d.ts - constructor(element: HTMLElement, { onRenderError }?: Partial); + constructor(element: HTMLElement, { onRenderError, renderMode }?: Partial); // (undocumented) destroy: () => void; // (undocumented) @@ -891,6 +893,10 @@ export interface IExpressionLoaderParams { // // (undocumented) onRenderError?: RenderErrorHandlerFnType; + // Warning: (ae-forgotten-export) The symbol "RenderMode" needs to be exported by the entry point index.d.ts + // + // (undocumented) + renderMode?: RenderMode; // (undocumented) searchContext?: SerializableState_2; // (undocumented) @@ -909,6 +915,8 @@ export interface IInterpreterRenderHandlers { // (undocumented) event: (event: any) => void; // (undocumented) + getRenderMode: () => RenderMode; + // (undocumented) onDestroy: (fn: () => void) => void; // (undocumented) reload: () => void; diff --git a/src/plugins/expressions/public/render.test.ts b/src/plugins/expressions/public/render.test.ts index 97a37d49147ec9..c44683f6779c05 100644 --- a/src/plugins/expressions/public/render.test.ts +++ b/src/plugins/expressions/public/render.test.ts @@ -129,7 +129,7 @@ describe('ExpressionRenderHandler', () => { it('sends a next observable once rendering is complete', () => { const expressionRenderHandler = new ExpressionRenderHandler(element); expect.assertions(1); - return new Promise((resolve) => { + return new Promise((resolve) => { expressionRenderHandler.render$.subscribe((renderCount) => { expect(renderCount).toBe(1); resolve(); diff --git a/src/plugins/expressions/public/render.ts b/src/plugins/expressions/public/render.ts index 924f8d4830f733..4390033b5be606 100644 --- a/src/plugins/expressions/public/render.ts +++ b/src/plugins/expressions/public/render.ts @@ -22,7 +22,7 @@ import { Observable } from 'rxjs'; import { filter } from 'rxjs/operators'; import { ExpressionRenderError, RenderErrorHandlerFnType, IExpressionLoaderParams } from './types'; import { renderErrorHandler as defaultRenderErrorHandler } from './render_error_handler'; -import { IInterpreterRenderHandlers, ExpressionAstExpression } from '../common'; +import { IInterpreterRenderHandlers, ExpressionAstExpression, RenderMode } from '../common'; import { getRenderersRegistry } from './services'; @@ -30,6 +30,7 @@ export type IExpressionRendererExtraHandlers = Record; export interface ExpressionRenderHandlerParams { onRenderError: RenderErrorHandlerFnType; + renderMode: RenderMode; } export interface ExpressionRendererEvent { @@ -58,7 +59,7 @@ export class ExpressionRenderHandler { constructor( element: HTMLElement, - { onRenderError }: Partial = {} + { onRenderError, renderMode }: Partial = {} ) { this.element = element; @@ -92,6 +93,9 @@ export class ExpressionRenderHandler { event: (data) => { this.eventsSubject.next(data); }, + getRenderMode: () => { + return renderMode || 'display'; + }, }; } diff --git a/src/plugins/expressions/public/types/index.ts b/src/plugins/expressions/public/types/index.ts index 4af36fea169a1b..5bae9856994768 100644 --- a/src/plugins/expressions/public/types/index.ts +++ b/src/plugins/expressions/public/types/index.ts @@ -23,6 +23,7 @@ import { ExpressionValue, ExpressionsService, SerializableState, + RenderMode, } from '../../common'; /** @@ -54,6 +55,7 @@ export interface IExpressionLoaderParams { inspectorAdapters?: Adapters; onRenderError?: RenderErrorHandlerFnType; searchSessionId?: string; + renderMode?: RenderMode; } export interface ExpressionRenderError extends Error { diff --git a/src/plugins/expressions/server/server.api.md b/src/plugins/expressions/server/server.api.md index e5b499206ebdd8..761ddba8f92709 100644 --- a/src/plugins/expressions/server/server.api.md +++ b/src/plugins/expressions/server/server.api.md @@ -8,6 +8,7 @@ import { CoreSetup } from 'src/core/server'; import { CoreStart } from 'src/core/server'; import { Ensure } from '@kbn/utility-types'; import { EventEmitter } from 'events'; +import { KibanaRequest } from 'src/core/server'; import { Observable } from 'rxjs'; import { PersistedState } from 'src/plugins/visualizations/public'; import { Plugin as Plugin_2 } from 'src/core/server'; @@ -134,6 +135,7 @@ export type ExecutionContainer = StateContainer { abortSignal: AbortSignal; + getKibanaRequest?: () => KibanaRequest; // Warning: (ae-forgotten-export) The symbol "SavedObjectAttributes" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "SavedObject" needs to be exported by the entry point index.d.ts getSavedObject?: (type: string, id: string) => Promise>; @@ -729,6 +731,10 @@ export interface IInterpreterRenderHandlers { done: () => void; // (undocumented) event: (event: any) => void; + // Warning: (ae-forgotten-export) The symbol "RenderMode" needs to be exported by the entry point index.d.ts + // + // (undocumented) + getRenderMode: () => RenderMode; // (undocumented) onDestroy: (fn: () => void) => void; // (undocumented) diff --git a/src/plugins/home/jest.config.js b/src/plugins/home/jest.config.js new file mode 100644 index 00000000000000..c56c7b3eed1d6d --- /dev/null +++ b/src/plugins/home/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/home'], +}; diff --git a/src/plugins/home/public/application/components/recently_accessed.js b/src/plugins/home/public/application/components/recently_accessed.js index 181968a2e063ab..80119a5063f140 100644 --- a/src/plugins/home/public/application/components/recently_accessed.js +++ b/src/plugins/home/public/application/components/recently_accessed.js @@ -99,7 +99,6 @@ export class RecentlyAccessed extends Component { return ( void; + trackUiMetric: (type: UiCounterMetricType, eventNames: string | string[], count?: number) => void; getBasePath: () => string; docLinks: DocLinksStart; addBasePath: (url: string) => string; diff --git a/src/plugins/home/public/plugin.ts b/src/plugins/home/public/plugin.ts index 90f2f939101cba..23f0b6c55c2426 100644 --- a/src/plugins/home/public/plugin.ts +++ b/src/plugins/home/public/plugin.ts @@ -80,7 +80,7 @@ export class HomePublicPlugin navLinkStatus: AppNavLinkStatus.hidden, mount: async (params: AppMountParameters) => { const trackUiMetric = usageCollection - ? usageCollection.reportUiStats.bind(usageCollection, 'Kibana_home') + ? usageCollection.reportUiCounter.bind(usageCollection, 'Kibana_home') : () => {}; const [ coreStart, diff --git a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts index 37657912deb95b..60d05890028d10 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts @@ -294,8 +294,7 @@ export const getSavedObjects = (): SavedObject[] => [ attributes: { title: 'kibana_sample_data_ecommerce', timeFieldName: 'order_date', - fields: - '[{"name":"_id","type":"string","esTypes":["_id"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_index","type":"string","esTypes":["_index"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_score","type":"number","count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_source","type":"_source","esTypes":["_source"],"count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_type","type":"string","esTypes":["_type"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"category","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"category.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"category"}}},{"name":"currency","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"customer_birth_date","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"customer_first_name","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"customer_first_name.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_first_name"}}},{"name":"customer_full_name","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"customer_full_name.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_full_name"}}},{"name":"customer_gender","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"customer_id","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"customer_last_name","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"customer_last_name.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"customer_last_name"}}},{"name":"customer_phone","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"day_of_week","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"day_of_week_i","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"email","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"event.dataset","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geoip.city_name","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geoip.continent_name","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geoip.country_iso_code","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geoip.location","type":"geo_point","esTypes":["geo_point"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geoip.region_name","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"manufacturer","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"manufacturer.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"manufacturer"}}},{"name":"order_date","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"order_id","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products._id","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"products._id.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products._id"}}},{"name":"products.base_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.base_unit_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.category","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"products.category.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.category"}}},{"name":"products.created_on","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.discount_amount","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.discount_percentage","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.manufacturer","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"products.manufacturer.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.manufacturer"}}},{"name":"products.min_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.product_id","type":"number","esTypes":["long"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.product_name","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"products.product_name.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent":"products.product_name"}}},{"name":"products.quantity","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.sku","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.tax_amount","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.taxful_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.taxless_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"products.unit_discount_amount","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"sku","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"taxful_total_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"taxless_total_price","type":"number","esTypes":["half_float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"total_quantity","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"total_unique_products","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"type","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"user","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true}]', + fields: '[]', fieldFormatMap: '{"taxful_total_price":{"id":"number","params":{"pattern":"$0,0.[00]"}}}', }, references: [], diff --git a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts index 6f701d75e7d52d..e65b6ad40651bc 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts @@ -439,7 +439,7 @@ export const getSavedObjects = (): SavedObject[] => [ title: 'kibana_sample_data_flights', timeFieldName: 'timestamp', fields: - '[{"name":"AvgTicketPrice","type":"number","esTypes":["float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"Cancelled","type":"boolean","esTypes":["boolean"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"Carrier","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"Dest","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestAirportID","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestCityName","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestCountry","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestLocation","type":"geo_point","esTypes":["geo_point"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestRegion","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DestWeather","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DistanceKilometers","type":"number","esTypes":["float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"DistanceMiles","type":"number","esTypes":["float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightDelay","type":"boolean","esTypes":["boolean"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightDelayMin","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightDelayType","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightNum","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightTimeHour","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"FlightTimeMin","type":"number","esTypes":["float"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"Origin","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginAirportID","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginCityName","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginCountry","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginLocation","type":"geo_point","esTypes":["geo_point"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginRegion","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"OriginWeather","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"_id","type":"string","esTypes":["_id"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_index","type":"string","esTypes":["_index"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_score","type":"number","count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_source","type":"_source","esTypes":["_source"],"count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_type","type":"string","esTypes":["_type"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"dayOfWeek","type":"number","esTypes":["integer"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"timestamp","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"hour_of_day","type":"number","count":0,"scripted":true,"script":"doc[\'timestamp\'].value.hourOfDay","lang":"painless","searchable":true,"aggregatable":true,"readFromDocValues":false}]', + '[{"name":"hour_of_day","type":"number","count":0,"scripted":true,"script":"doc[\'timestamp\'].value.hourOfDay","lang":"painless","searchable":true,"aggregatable":true,"readFromDocValues":false}]', fieldFormatMap: '{"hour_of_day":{"id":"number","params":{"pattern":"00"}},"AvgTicketPrice":{"id":"number","params":{"pattern":"$0,0.[00]"}}}', }, diff --git a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts index f8d39e6689fa8b..068ba66c4b0ded 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts @@ -270,7 +270,7 @@ export const getSavedObjects = (): SavedObject[] => [ title: 'kibana_sample_data_logs', timeFieldName: 'timestamp', fields: - '[{"name":"@timestamp","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"_id","type":"string","esTypes":["_id"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_index","type":"string","esTypes":["_index"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_score","type":"number","count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_source","type":"_source","esTypes":["_source"],"count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_type","type":"string","esTypes":["_type"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"agent","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"agent.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "agent"}}},{"name":"bytes","type":"number","esTypes":["long"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"clientip","type":"ip","esTypes":["ip"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"event.dataset","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"extension","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"extension.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "extension"}}},{"name":"geo.coordinates","type":"geo_point","esTypes":["geo_point"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geo.dest","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geo.src","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"geo.srcdest","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"host","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"host.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "host"}}},{"name":"index","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"index.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "index"}}},{"name":"ip","type":"ip","esTypes":["ip"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"machine.os","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"machine.os.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "machine.os"}}},{"name":"machine.ram","type":"number","esTypes":["long"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"memory","type":"number","esTypes":["double"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"message","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"message.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "message"}}},{"name":"phpmemory","type":"number","esTypes":["long"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"referer","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"request","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"request.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "request"}}},{"name":"response","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"response.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "response"}}},{"name":"tags","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"tags.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "tags"}}},{"name":"timestamp","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"url","type":"string","esTypes":["text"],"count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"url.keyword","type":"string","esTypes":["keyword"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true,"subType":{"multi":{"parent": "url"}}},{"name":"utc_time","type":"date","esTypes":["date"],"count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true},{"name":"hour_of_day","type":"number","count":0,"scripted":true,"script":"doc[\'timestamp\'].value.getHour()","lang":"painless","searchable":true,"aggregatable":true,"readFromDocValues":false}]', + '[{"name":"hour_of_day","type":"number","count":0,"scripted":true,"script":"doc[\'timestamp\'].value.getHour()","lang":"painless","searchable":true,"aggregatable":true,"readFromDocValues":false}]', fieldFormatMap: '{"hour_of_day":{}}', }, references: [], diff --git a/src/plugins/home/server/services/sample_data/usage/usage.ts b/src/plugins/home/server/services/sample_data/usage/usage.ts index ba67906febf1a3..6a243b47dee554 100644 --- a/src/plugins/home/server/services/sample_data/usage/usage.ts +++ b/src/plugins/home/server/services/sample_data/usage/usage.ts @@ -43,7 +43,7 @@ export function usage( addInstall: async (dataSet: string) => { try { const internalRepository = await internalRepositoryPromise; - await internalRepository.incrementCounter(SAVED_OBJECT_ID, dataSet, `installCount`); + await internalRepository.incrementCounter(SAVED_OBJECT_ID, dataSet, [`installCount`]); } catch (err) { handleIncrementError(err); } @@ -51,7 +51,7 @@ export function usage( addUninstall: async (dataSet: string) => { try { const internalRepository = await internalRepositoryPromise; - await internalRepository.incrementCounter(SAVED_OBJECT_ID, dataSet, `unInstallCount`); + await internalRepository.incrementCounter(SAVED_OBJECT_ID, dataSet, [`unInstallCount`]); } catch (err) { handleIncrementError(err); } diff --git a/src/plugins/index_pattern_management/jest.config.js b/src/plugins/index_pattern_management/jest.config.js new file mode 100644 index 00000000000000..8a499406080fd7 --- /dev/null +++ b/src/plugins/index_pattern_management/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/index_pattern_management'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/ensure_minimum_time.test.ts b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/ensure_minimum_time.test.ts index a38f3cbd8fe815..5a202bff53b644 100644 --- a/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/ensure_minimum_time.test.ts +++ b/src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/ensure_minimum_time.test.ts @@ -38,7 +38,7 @@ describe('ensureMinimumTime', () => { it('resolves in the amount of time provided, at minimum', async (done) => { const startTime = new Date().getTime(); - const promise = new Promise((resolve) => resolve()); + const promise = new Promise((resolve) => resolve()); await ensureMinimumTime(promise, 100); const endTime = new Date().getTime(); expect(endTime - startTime).toBeGreaterThanOrEqual(100); diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx index 67a20c428040f4..a8a4c87c561981 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx @@ -58,19 +58,6 @@ const mappingConflictHeader = i18n.translate( } ); -const confirmMessage = i18n.translate('indexPatternManagement.editIndexPattern.refreshLabel', { - defaultMessage: 'This action resets the popularity counter of each field.', -}); - -const confirmModalOptionsRefresh = { - confirmButtonText: i18n.translate('indexPatternManagement.editIndexPattern.refreshButton', { - defaultMessage: 'Refresh', - }), - title: i18n.translate('indexPatternManagement.editIndexPattern.refreshHeader', { - defaultMessage: 'Refresh field list?', - }), -}; - const confirmModalOptionsDelete = { confirmButtonText: i18n.translate('indexPatternManagement.editIndexPattern.deleteButton', { defaultMessage: 'Delete', @@ -118,16 +105,6 @@ export const EditIndexPattern = withRouter( setDefaultIndex(indexPattern.id || ''); }, [uiSettings, indexPattern.id]); - const refreshFields = () => { - overlays.openConfirm(confirmMessage, confirmModalOptionsRefresh).then(async (isConfirmed) => { - if (isConfirmed) { - await data.indexPatterns.refreshFields(indexPattern); - await data.indexPatterns.updateSavedObject(indexPattern); - setFields(indexPattern.getNonScriptedFields()); - } - }); - }; - const removePattern = () => { async function doRemove() { if (indexPattern.id === defaultIndex) { @@ -190,7 +167,6 @@ export const EditIndexPattern = withRouter( diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx index 8ca8c6453c7e96..aeeea6dec9a58d 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/index_header/index_header.tsx @@ -26,7 +26,6 @@ interface IndexHeaderProps { indexPattern: IIndexPattern; defaultIndex?: string; setDefault?: () => void; - refreshFields?: () => void; deleteIndexPatternClick?: () => void; } @@ -44,14 +43,6 @@ const setDefaultTooltip = i18n.translate( } ); -const refreshAriaLabel = i18n.translate('indexPatternManagement.editIndexPattern.refreshAria', { - defaultMessage: 'Reload field list.', -}); - -const refreshTooltip = i18n.translate('indexPatternManagement.editIndexPattern.refreshTooltip', { - defaultMessage: 'Refresh field list.', -}); - const removeAriaLabel = i18n.translate('indexPatternManagement.editIndexPattern.removeAria', { defaultMessage: 'Remove index pattern.', }); @@ -64,7 +55,6 @@ export function IndexHeader({ defaultIndex, indexPattern, setDefault, - refreshFields, deleteIndexPatternClick, }: IndexHeaderProps) { return ( @@ -90,20 +80,6 @@ export function IndexHeader({ )} - {refreshFields && ( - - - - - - )} - {deleteIndexPatternClick && ( diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/__snapshots__/add_filter.test.tsx.snap b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/__snapshots__/add_filter.test.tsx.snap index 92998bc3f07e3e..8c4e05085528f0 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/__snapshots__/add_filter.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/__snapshots__/add_filter.test.tsx.snap @@ -8,7 +8,7 @@ exports[`AddFilter should ignore strings with just spaces 1`] = ` @@ -35,7 +35,7 @@ exports[`AddFilter should render normally 1`] = ` diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/add_filter.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/add_filter.tsx index 1d840743065a1f..56e33b9e20f54d 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/add_filter.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/add_filter/add_filter.tsx @@ -31,7 +31,7 @@ const sourcePlaceholder = i18n.translate( 'indexPatternManagement.editIndexPattern.sourcePlaceholder', { defaultMessage: - "source filter, accepts wildcards (e.g., `user*` to filter fields starting with 'user')", + "field filter, accepts wildcards (e.g., `user*` to filter fields starting with 'user')", } ); diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap index 0020adb19983dc..9d92a3689b6983 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/confirmation_modal/__snapshots__/confirmation_modal.test.tsx.snap @@ -23,7 +23,7 @@ exports[`Header should render normally 1`] = ` onConfirm={[Function]} title={

@@ -16,7 +16,7 @@ exports[`Header should render normally 1`] = `

diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/header/header.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/header/header.tsx index 709908a1bb2536..cf62ef86ade1b6 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/header/header.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/source_filters_table/components/header/header.tsx @@ -28,7 +28,7 @@ export const Header = () => (

@@ -36,10 +36,9 @@ export const Header = () => (

diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts b/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts index a94ed60b7aed5e..ed51fc3be59628 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/tabs/utils.ts @@ -67,7 +67,7 @@ function getTitle(type: string, filteredCount: Dictionary, totalCount: D break; case 'sourceFilters': title = i18n.translate('indexPatternManagement.editIndexPattern.tabs.sourceHeader', { - defaultMessage: 'Source filters', + defaultMessage: 'Field filters', }); break; } diff --git a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/color/color.tsx b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/color/color.tsx index 32b5d28872ac8c..dc9dfdf28da4f4 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/color/color.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/color/color.tsx @@ -63,7 +63,7 @@ export class ColorFormatEditor extends DefaultFormatEditor { - const colors = [...this.props.formatParams.colors]; + const colors = [...(this.props.formatParams.colors || [])]; this.onChange({ colors: [...colors, { ...fieldFormats.DEFAULT_CONVERTER_COLOR }], }); diff --git a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/static_lookup/static_lookup.tsx b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/static_lookup/static_lookup.tsx index 4b51ae478a1780..514e4f20a8e2eb 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/static_lookup/static_lookup.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/static_lookup/static_lookup.tsx @@ -50,7 +50,7 @@ export class StaticLookupFormatEditor extends DefaultFormatEditor { - const lookupEntries = [...this.props.formatParams.lookupEntries]; + const lookupEntries = [...(this.props.formatParams.lookupEntries || [])]; this.onChange({ lookupEntries: [...lookupEntries, {}], }); diff --git a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx index c9f5f1fcb4a311..55fc1e6eb521e6 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx @@ -200,7 +200,7 @@ describe('FieldEditor', () => { }, }; indexPattern.fieldFormatMap = { test: field }; - indexPattern.deleteFieldFormat = jest.fn(); + (indexPattern.deleteFieldFormat as any) = jest.fn(); const component = createComponentWithContext( FieldEditor, diff --git a/src/plugins/input_control_vis/jest.config.js b/src/plugins/input_control_vis/jest.config.js new file mode 100644 index 00000000000000..17fb6f3359bf38 --- /dev/null +++ b/src/plugins/input_control_vis/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/input_control_vis'], +}; diff --git a/src/plugins/input_control_vis/public/__snapshots__/input_control_fn.test.ts.snap b/src/plugins/input_control_vis/public/__snapshots__/input_control_fn.test.ts.snap index 35349b47196761..696b74d040e0c5 100644 --- a/src/plugins/input_control_vis/public/__snapshots__/input_control_fn.test.ts.snap +++ b/src/plugins/input_control_vis/public/__snapshots__/input_control_fn.test.ts.snap @@ -2,7 +2,7 @@ exports[`interpreter/functions#input_control_vis returns an object with the correct structure 1`] = ` Object { - "as": "visualization", + "as": "input_control_vis", "type": "render", "value": Object { "visConfig": Object { diff --git a/src/plugins/input_control_vis/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/input_control_vis/public/__snapshots__/to_ast.test.ts.snap new file mode 100644 index 00000000000000..edd44d8dd03374 --- /dev/null +++ b/src/plugins/input_control_vis/public/__snapshots__/to_ast.test.ts.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`input_control_vis toExpressionAst should build an expression based on vis.params 1`] = ` +Object { + "chain": Array [ + Object { + "arguments": Object { + "visConfig": Array [ + "{\\"controls\\":[{\\"id\\":\\"1536977437774\\",\\"fieldName\\":\\"manufacturer.keyword\\",\\"parent\\":\\"\\",\\"label\\":\\"Manufacturer\\",\\"type\\":\\"list\\",\\"options\\":{\\"type\\":\\"terms\\",\\"multiselect\\":true,\\"dynamicOptions\\":true,\\"size\\":5,\\"order\\":\\"desc\\"},\\"indexPattern\\":\\"ff959d40-b880-11e8-a6d9-e546fe2bba5f\\"}],\\"updateFiltersOnChange\\":false,\\"useTimeFilter\\":true,\\"pinFilters\\":false}", + ], + }, + "function": "input_control_vis", + "type": "function", + }, + ], + "type": "expression", +} +`; diff --git a/src/plugins/input_control_vis/public/components/editor/_index.scss b/src/plugins/input_control_vis/public/components/editor/_index.scss deleted file mode 100644 index 9af8f8d6e82224..00000000000000 --- a/src/plugins/input_control_vis/public/components/editor/_index.scss +++ /dev/null @@ -1 +0,0 @@ -@import './control_editor'; diff --git a/src/plugins/input_control_vis/public/components/editor/_control_editor.scss b/src/plugins/input_control_vis/public/components/editor/control_editor.scss similarity index 100% rename from src/plugins/input_control_vis/public/components/editor/_control_editor.scss rename to src/plugins/input_control_vis/public/components/editor/control_editor.scss diff --git a/src/plugins/input_control_vis/public/components/editor/control_editor.tsx b/src/plugins/input_control_vis/public/components/editor/control_editor.tsx index aa473095aaf3f1..109237f8db4ec6 100644 --- a/src/plugins/input_control_vis/public/components/editor/control_editor.tsx +++ b/src/plugins/input_control_vis/public/components/editor/control_editor.tsx @@ -36,6 +36,8 @@ import { getTitle, ControlParams, CONTROL_TYPES, ControlParamsOptions } from '.. import { IIndexPattern } from '../../../../data/public'; import { InputControlVisDependencies } from '../../plugin'; +import './control_editor.scss'; + interface ControlEditorUiProps { controlIndex: number; controlParams: ControlParams; diff --git a/src/plugins/input_control_vis/public/components/editor/controls_tab.test.tsx b/src/plugins/input_control_vis/public/components/editor/controls_tab.test.tsx index a85f98c7b89ba8..c05dec8fccbe1b 100644 --- a/src/plugins/input_control_vis/public/components/editor/controls_tab.test.tsx +++ b/src/plugins/input_control_vis/public/components/editor/controls_tab.test.tsx @@ -21,16 +21,16 @@ import React from 'react'; import { shallowWithIntl, mountWithIntl } from '@kbn/test/jest'; import { findTestSubject } from '@elastic/eui/lib/test'; import { getDepsMock, getIndexPatternMock } from '../../test_utils'; -import { ControlsTab, ControlsTabUiProps } from './controls_tab'; +import ControlsTab, { ControlsTabProps } from './controls_tab'; import { Vis } from '../../../../visualizations/public'; const indexPatternsMock = { get: getIndexPatternMock, }; -let props: ControlsTabUiProps; +let props: ControlsTabProps; beforeEach(() => { - props = { + props = ({ deps: getDepsMock(), vis: ({ API: { @@ -78,18 +78,18 @@ beforeEach(() => { }, setValue: jest.fn(), intl: null as any, - }; + } as unknown) as ControlsTabProps; }); test('renders ControlsTab', () => { - const component = shallowWithIntl(); + const component = shallowWithIntl(); expect(component).toMatchSnapshot(); }); describe('behavior', () => { test('add control button', () => { - const component = mountWithIntl(); + const component = mountWithIntl(); findTestSubject(component, 'inputControlEditorAddBtn').simulate('click'); @@ -102,7 +102,7 @@ describe('behavior', () => { }); test('remove control button', () => { - const component = mountWithIntl(); + const component = mountWithIntl(); findTestSubject(component, 'inputControlEditorRemoveControl0').simulate('click'); const expectedParams = [ 'controls', @@ -125,7 +125,7 @@ describe('behavior', () => { }); test('move down control button', () => { - const component = mountWithIntl(); + const component = mountWithIntl(); findTestSubject(component, 'inputControlEditorMoveDownControl0').simulate('click'); const expectedParams = [ 'controls', @@ -162,7 +162,7 @@ describe('behavior', () => { }); test('move up control button', () => { - const component = mountWithIntl(); + const component = mountWithIntl(); findTestSubject(component, 'inputControlEditorMoveUpControl1').simulate('click'); const expectedParams = [ 'controls', diff --git a/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx b/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx index a9f04a86f8d03c..0e622e08c529fc 100644 --- a/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx +++ b/src/plugins/input_control_vis/public/components/editor/controls_tab.tsx @@ -18,7 +18,8 @@ */ import React, { PureComponent } from 'react'; -import { injectI18n, FormattedMessage, InjectedIntlProps } from '@kbn/i18n/react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; import { EuiButton, @@ -44,22 +45,17 @@ import { } from '../../editor_utils'; import { getLineageMap, getParentCandidates } from '../../lineage'; import { InputControlVisDependencies } from '../../plugin'; +import { InputControlVisParams } from '../../types'; interface ControlsTabUiState { type: CONTROL_TYPES; } -interface ControlsTabUiParams { - controls: ControlParams[]; -} -type ControlsTabUiInjectedProps = InjectedIntlProps & - Pick, 'vis' | 'stateParams' | 'setValue'> & { - deps: InputControlVisDependencies; - }; +export type ControlsTabProps = VisOptionsProps & { + deps: InputControlVisDependencies; +}; -export type ControlsTabUiProps = ControlsTabUiInjectedProps; - -class ControlsTabUi extends PureComponent { +class ControlsTab extends PureComponent { state = { type: CONTROL_TYPES.LIST, }; @@ -161,8 +157,6 @@ class ControlsTabUi extends PureComponent {this.renderControls()} @@ -176,25 +170,31 @@ class ControlsTabUi extends PureComponent this.setState({ type: event.target.value as CONTROL_TYPES })} - aria-label={intl.formatMessage({ - id: 'inputControl.editor.controlsTab.select.controlTypeAriaLabel', - defaultMessage: 'Select control type', - })} + aria-label={i18n.translate( + 'inputControl.editor.controlsTab.select.controlTypeAriaLabel', + { + defaultMessage: 'Select control type', + } + )} /> @@ -205,10 +205,12 @@ class ControlsTabUi extends PureComponent ( - props: Omit -) => ; +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { ControlsTab as default }; diff --git a/src/plugins/input_control_vis/public/components/editor/index.tsx b/src/plugins/input_control_vis/public/components/editor/index.tsx new file mode 100644 index 00000000000000..11b3c2ea4ee8a8 --- /dev/null +++ b/src/plugins/input_control_vis/public/components/editor/index.tsx @@ -0,0 +1,34 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { lazy } from 'react'; +import { VisOptionsProps } from 'src/plugins/vis_default_editor/public'; +import { InputControlVisDependencies } from '../../plugin'; +import { InputControlVisParams } from '../../types'; + +const ControlsTab = lazy(() => import('./controls_tab')); +const OptionsTab = lazy(() => import('./options_tab')); + +export const getControlsTab = (deps: InputControlVisDependencies) => ( + props: VisOptionsProps +) => ; + +export const OptionsTabLazy = (props: VisOptionsProps) => ( + +); diff --git a/src/plugins/input_control_vis/public/components/editor/options_tab.test.tsx b/src/plugins/input_control_vis/public/components/editor/options_tab.test.tsx index 0f126e915a68c5..0970d1cd3c2984 100644 --- a/src/plugins/input_control_vis/public/components/editor/options_tab.test.tsx +++ b/src/plugins/input_control_vis/public/components/editor/options_tab.test.tsx @@ -22,13 +22,13 @@ import { shallow } from 'enzyme'; import { mountWithIntl } from '@kbn/test/jest'; import { Vis } from '../../../../visualizations/public'; -import { OptionsTab, OptionsTabProps } from './options_tab'; +import OptionsTab, { OptionsTabProps } from './options_tab'; describe('OptionsTab', () => { let props: OptionsTabProps; beforeEach(() => { - props = { + props = ({ vis: {} as Vis, stateParams: { updateFiltersOnChange: false, @@ -36,7 +36,7 @@ describe('OptionsTab', () => { pinFilters: false, }, setValue: jest.fn(), - }; + } as unknown) as OptionsTabProps; }); it('should renders OptionsTab', () => { diff --git a/src/plugins/input_control_vis/public/components/editor/options_tab.tsx b/src/plugins/input_control_vis/public/components/editor/options_tab.tsx index cdff6cabad8ba8..306d1141e75bd8 100644 --- a/src/plugins/input_control_vis/public/components/editor/options_tab.tsx +++ b/src/plugins/input_control_vis/public/components/editor/options_tab.tsx @@ -24,20 +24,11 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { EuiSwitchEvent } from '@elastic/eui'; import { VisOptionsProps } from 'src/plugins/vis_default_editor/public'; +import { InputControlVisParams } from '../../types'; -interface OptionsTabParams { - updateFiltersOnChange: boolean; - useTimeFilter: boolean; - pinFilters: boolean; -} -type OptionsTabInjectedProps = Pick< - VisOptionsProps, - 'vis' | 'setValue' | 'stateParams' ->; - -export type OptionsTabProps = OptionsTabInjectedProps; +export type OptionsTabProps = VisOptionsProps; -export class OptionsTab extends PureComponent { +class OptionsTab extends PureComponent { handleUpdateFiltersChange = (event: EuiSwitchEvent) => { this.props.setValue('updateFiltersOnChange', event.target.checked); }; @@ -98,3 +89,6 @@ export class OptionsTab extends PureComponent { ); } } +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { OptionsTab as default }; diff --git a/src/plugins/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap b/src/plugins/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap index 5a76967c71fbb3..5e1f25993616b0 100644 --- a/src/plugins/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap +++ b/src/plugins/input_control_vis/public/components/vis/__snapshots__/input_control_vis.test.tsx.snap @@ -2,355 +2,371 @@ exports[`Apply and Cancel change btns enabled when there are changes 1`] = `

- - - - - - - - - - - - + + - - - - - - + + + + - - - - + + + + + + + + + + +

`; exports[`Clear btns enabled when there are values 1`] = `
- - - - - - - - - - - - + + - - - - - - + + + + - - - - + + + + + + + + + + +
`; exports[`Renders list control 1`] = `
- - - - - - - - - - - - + + - - - - - - + + + + - - - - + + + + + + + + + + +
`; exports[`Renders range control 1`] = `
- - - - - - - - - - - - + + - - - - - - + + + + - - - - + + + + + + + + + + +
`; diff --git a/src/plugins/input_control_vis/public/components/vis/_index.scss b/src/plugins/input_control_vis/public/components/vis/_index.scss deleted file mode 100644 index a428a7c1782e30..00000000000000 --- a/src/plugins/input_control_vis/public/components/vis/_index.scss +++ /dev/null @@ -1 +0,0 @@ -@import './vis'; diff --git a/src/plugins/input_control_vis/public/components/vis/_vis.scss b/src/plugins/input_control_vis/public/components/vis/_vis.scss deleted file mode 100644 index d42c2c5f263c75..00000000000000 --- a/src/plugins/input_control_vis/public/components/vis/_vis.scss +++ /dev/null @@ -1,5 +0,0 @@ -.icvContainer { - width: 100%; - margin: 0 $euiSizeXS; - padding: $euiSizeS; -} diff --git a/src/plugins/input_control_vis/public/components/vis/input_control_vis.scss b/src/plugins/input_control_vis/public/components/vis/input_control_vis.scss new file mode 100644 index 00000000000000..322573446f7629 --- /dev/null +++ b/src/plugins/input_control_vis/public/components/vis/input_control_vis.scss @@ -0,0 +1,13 @@ +.icvContainer__wrapper { + @include euiScrollBar; + min-height: 0; + flex: 1 1 0; + display: flex; + overflow: auto; +} + +.icvContainer { + width: 100%; + margin: 0 $euiSizeXS; + padding: $euiSizeS; +} diff --git a/src/plugins/input_control_vis/public/components/vis/input_control_vis.tsx b/src/plugins/input_control_vis/public/components/vis/input_control_vis.tsx index 95edb4a35bc22d..058f39cb8a6d43 100644 --- a/src/plugins/input_control_vis/public/components/vis/input_control_vis.tsx +++ b/src/plugins/input_control_vis/public/components/vis/input_control_vis.tsx @@ -26,6 +26,8 @@ import { RangeControl } from '../../control/range_control_factory'; import { ListControl as ListControlComponent } from './list_control'; import { RangeControl as RangeControlComponent } from './range_control'; +import './input_control_vis.scss'; + function isListControl(control: RangeControl | ListControl): control is ListControl { return control.type === CONTROL_TYPES.LIST; } @@ -165,9 +167,11 @@ export class InputControlVis extends Component { } return ( -
- {this.renderControls()} - {stagingButtons} +
+
+ {this.renderControls()} + {stagingButtons} +
); } diff --git a/src/plugins/input_control_vis/public/index.scss b/src/plugins/input_control_vis/public/index.scss deleted file mode 100644 index 42fded23d77615..00000000000000 --- a/src/plugins/input_control_vis/public/index.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Prefix all styles with "icv" to avoid conflicts. -// Examples -// icvChart -// icvChart__legend -// icvChart__legend--small -// icvChart__legend-isLoading - -@import './components/editor/index'; -@import './components/vis/index'; diff --git a/src/plugins/input_control_vis/public/index.ts b/src/plugins/input_control_vis/public/index.ts index 8edd3fd9996c3f..b6fee12f6d9cbd 100644 --- a/src/plugins/input_control_vis/public/index.ts +++ b/src/plugins/input_control_vis/public/index.ts @@ -17,8 +17,6 @@ * under the License. */ -import './index.scss'; - import { PluginInitializerContext } from '../../../core/public'; import { InputControlVisPlugin as Plugin } from './plugin'; diff --git a/src/plugins/input_control_vis/public/input_control_fn.ts b/src/plugins/input_control_vis/public/input_control_fn.ts index 1664555b916b66..46fba66264bcb2 100644 --- a/src/plugins/input_control_vis/public/input_control_fn.ts +++ b/src/plugins/input_control_vis/public/input_control_fn.ts @@ -20,24 +20,25 @@ import { i18n } from '@kbn/i18n'; import { ExpressionFunctionDefinition, Datatable, Render } from '../../expressions/public'; +import { InputControlVisParams } from './types'; interface Arguments { visConfig: string; } -type VisParams = Required; - -interface RenderValue { +export interface InputControlRenderValue { visType: 'input_control_vis'; - visConfig: VisParams; + visConfig: InputControlVisParams; } -export const createInputControlVisFn = (): ExpressionFunctionDefinition< +export type InputControlExpressionFunctionDefinition = ExpressionFunctionDefinition< 'input_control_vis', Datatable, Arguments, - Render -> => ({ + Render +>; + +export const createInputControlVisFn = (): InputControlExpressionFunctionDefinition => ({ name: 'input_control_vis', type: 'render', inputTypes: [], @@ -52,10 +53,10 @@ export const createInputControlVisFn = (): ExpressionFunctionDefinition< }, }, fn(input, args) { - const params = JSON.parse(args.visConfig); + const params: InputControlVisParams = JSON.parse(args.visConfig); return { type: 'render', - as: 'visualization', + as: 'input_control_vis', value: { visType: 'input_control_vis', visConfig: params, diff --git a/src/plugins/input_control_vis/public/input_control_vis_renderer.tsx b/src/plugins/input_control_vis/public/input_control_vis_renderer.tsx new file mode 100644 index 00000000000000..6431ed6ebed1ee --- /dev/null +++ b/src/plugins/input_control_vis/public/input_control_vis_renderer.tsx @@ -0,0 +1,51 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ExpressionRenderDefinition } from 'src/plugins/expressions'; +import { InputControlVisDependencies } from './plugin'; +import { InputControlRenderValue } from './input_control_fn'; +import type { InputControlVisControllerType } from './vis_controller'; + +const inputControlVisRegistry = new Map(); + +export const getInputControlVisRenderer: ( + deps: InputControlVisDependencies +) => ExpressionRenderDefinition = (deps) => ({ + name: 'input_control_vis', + reuseDomNode: true, + render: async (domNode, { visConfig }, handlers) => { + let registeredController = inputControlVisRegistry.get(domNode); + + if (!registeredController) { + const { createInputControlVisController } = await import('./vis_controller'); + + const Controller = createInputControlVisController(deps, handlers); + registeredController = new Controller(domNode); + inputControlVisRegistry.set(domNode, registeredController); + + handlers.onDestroy(() => { + registeredController?.destroy(); + inputControlVisRegistry.delete(domNode); + }); + } + + await registeredController.render(visConfig); + handlers.done(); + }, +}); diff --git a/src/plugins/input_control_vis/public/input_control_vis_type.ts b/src/plugins/input_control_vis/public/input_control_vis_type.ts index 6e33e18c1603b0..686327a1ba774a 100644 --- a/src/plugins/input_control_vis/public/input_control_vis_type.ts +++ b/src/plugins/input_control_vis/public/input_control_vis_type.ts @@ -19,15 +19,14 @@ import { i18n } from '@kbn/i18n'; import { VisGroups, BaseVisTypeOptions } from '../../visualizations/public'; -import { createInputControlVisController } from './vis_controller'; -import { getControlsTab } from './components/editor/controls_tab'; -import { OptionsTab } from './components/editor/options_tab'; +import { getControlsTab, OptionsTabLazy } from './components/editor'; import { InputControlVisDependencies } from './plugin'; +import { toExpressionAst } from './to_ast'; +import { InputControlVisParams } from './types'; export function createInputControlVisTypeDefinition( deps: InputControlVisDependencies -): BaseVisTypeOptions { - const InputControlVisController = createInputControlVisController(deps); +): BaseVisTypeOptions { const ControlsTab = getControlsTab(deps); return { @@ -41,7 +40,6 @@ export function createInputControlVisTypeDefinition( defaultMessage: 'Add dropdown menus and range sliders to your dashboard.', }), stage: 'experimental', - visualization: InputControlVisController, visConfig: { defaults: { controls: [], @@ -64,12 +62,12 @@ export function createInputControlVisTypeDefinition( title: i18n.translate('inputControl.register.tabs.optionsTitle', { defaultMessage: 'Options', }), - editor: OptionsTab, + editor: OptionsTabLazy, }, ], }, inspectorAdapters: {}, requestHandler: 'none', - responseHandler: 'none', + toExpressionAst, }; } diff --git a/src/plugins/input_control_vis/public/plugin.ts b/src/plugins/input_control_vis/public/plugin.ts index 2c93a529c25b19..afaaa27d74c82e 100644 --- a/src/plugins/input_control_vis/public/plugin.ts +++ b/src/plugins/input_control_vis/public/plugin.ts @@ -22,6 +22,7 @@ import { DataPublicPluginSetup, DataPublicPluginStart } from 'src/plugins/data/p import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public'; import { VisualizationsSetup, VisualizationsStart } from '../../visualizations/public'; import { createInputControlVisFn } from './input_control_fn'; +import { getInputControlVisRenderer } from './input_control_vis_renderer'; import { createInputControlVisTypeDefinition } from './input_control_vis_type'; type InputControlVisCoreSetup = CoreSetup; @@ -76,6 +77,7 @@ export class InputControlVisPlugin implements Plugin { }; expressions.registerFunction(createInputControlVisFn); + expressions.registerRenderer(getInputControlVisRenderer(visualizationDependencies)); visualizations.createBaseVisualization( createInputControlVisTypeDefinition(visualizationDependencies) ); diff --git a/src/plugins/input_control_vis/public/to_ast.test.ts b/src/plugins/input_control_vis/public/to_ast.test.ts new file mode 100644 index 00000000000000..fbeb78ee93a1ed --- /dev/null +++ b/src/plugins/input_control_vis/public/to_ast.test.ts @@ -0,0 +1,54 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Vis } from '../../visualizations/public'; +import { InputControlVisParams } from './types'; +import { toExpressionAst } from './to_ast'; + +describe('input_control_vis toExpressionAst', () => { + const vis = { + params: { + controls: [ + { + id: '1536977437774', + fieldName: 'manufacturer.keyword', + parent: '', + label: 'Manufacturer', + type: 'list', + options: { + type: 'terms', + multiselect: true, + dynamicOptions: true, + size: 5, + order: 'desc', + }, + indexPattern: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + }, + ], + updateFiltersOnChange: false, + useTimeFilter: true, + pinFilters: false, + }, + } as Vis; + + it('should build an expression based on vis.params', () => { + const expression = toExpressionAst(vis); + expect(expression).toMatchSnapshot(); + }); +}); diff --git a/src/plugins/input_control_vis/public/to_ast.ts b/src/plugins/input_control_vis/public/to_ast.ts new file mode 100644 index 00000000000000..93c0b4a87cfe6c --- /dev/null +++ b/src/plugins/input_control_vis/public/to_ast.ts @@ -0,0 +1,36 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { buildExpression, buildExpressionFunction } from '../../expressions/public'; +import { Vis } from '../../visualizations/public'; +import { InputControlExpressionFunctionDefinition } from './input_control_fn'; +import { InputControlVisParams } from './types'; + +export const toExpressionAst = (vis: Vis) => { + const inputControl = buildExpressionFunction( + 'input_control_vis', + { + visConfig: JSON.stringify(vis.params), + } + ); + + const ast = buildExpression([inputControl]); + + return ast.toAst(); +}; diff --git a/src/plugins/input_control_vis/public/types.ts b/src/plugins/input_control_vis/public/types.ts new file mode 100644 index 00000000000000..2898ab49590ed4 --- /dev/null +++ b/src/plugins/input_control_vis/public/types.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ControlParams } from './editor_utils'; + +export interface InputControlVisParams { + controls: ControlParams[]; + pinFilters: boolean; + updateFiltersOnChange: boolean; + useTimeFilter: boolean; +} diff --git a/src/plugins/input_control_vis/public/vis_controller.tsx b/src/plugins/input_control_vis/public/vis_controller.tsx index 6f35e17866120b..8e762a38671e9c 100644 --- a/src/plugins/input_control_vis/public/vis_controller.tsx +++ b/src/plugins/input_control_vis/public/vis_controller.tsx @@ -20,20 +20,29 @@ import React from 'react'; import { isEqual } from 'lodash'; import { render, unmountComponentAtNode } from 'react-dom'; - import { Subscription } from 'rxjs'; + import { I18nStart } from 'kibana/public'; +import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; +import { VisualizationContainer } from '../../visualizations/public'; +import { FilterManager, Filter } from '../../data/public'; + import { InputControlVis } from './components/vis/input_control_vis'; import { getControlFactory } from './control/control_factory'; import { getLineageMap } from './lineage'; -import { ControlParams } from './editor_utils'; import { RangeControl } from './control/range_control_factory'; import { ListControl } from './control/list_control_factory'; import { InputControlVisDependencies } from './plugin'; -import { FilterManager, Filter } from '../../data/public'; -import { VisParams, ExprVis } from '../../visualizations/public'; +import { InputControlVisParams } from './types'; -export const createInputControlVisController = (deps: InputControlVisDependencies) => { +export type InputControlVisControllerType = InstanceType< + ReturnType +>; + +export const createInputControlVisController = ( + deps: InputControlVisDependencies, + handlers: IInterpreterRenderHandlers +) => { return class InputControlVisController { private I18nContext?: I18nStart['Context']; private _isLoaded = false; @@ -43,9 +52,9 @@ export const createInputControlVisController = (deps: InputControlVisDependencie filterManager: FilterManager; updateSubsciption: any; timeFilterSubscription: Subscription; - visParams?: VisParams; + visParams?: InputControlVisParams; - constructor(public el: Element, public vis: ExprVis) { + constructor(public el: Element) { this.controls = []; this.queryBarUpdateHandler = this.updateControlsFromKbn.bind(this); @@ -63,7 +72,7 @@ export const createInputControlVisController = (deps: InputControlVisDependencie }); } - async render(visData: any, visParams: VisParams) { + async render(visParams: InputControlVisParams) { if (!this.I18nContext) { const [{ i18n }] = await deps.core.getStartServices(); this.I18nContext = i18n.Context; @@ -71,7 +80,7 @@ export const createInputControlVisController = (deps: InputControlVisDependencie if (!this._isLoaded || !isEqual(visParams, this.visParams)) { this.visParams = visParams; this.controls = []; - this.controls = await this.initControls(); + this.controls = await this.initControls(visParams); this._isLoaded = true; } this.drawVis(); @@ -91,34 +100,34 @@ export const createInputControlVisController = (deps: InputControlVisDependencie render( - + + + , this.el ); }; - async initControls() { - const controlParamsList = (this.visParams?.controls as ControlParams[])?.filter( - (controlParams) => { - // ignore controls that do not have indexPattern or field - return controlParams.indexPattern && controlParams.fieldName; - } - ); + async initControls(visParams: InputControlVisParams) { + const controlParamsList = visParams.controls.filter((controlParams) => { + // ignore controls that do not have indexPattern or field + return controlParams.indexPattern && controlParams.fieldName; + }); const controlFactoryPromises = controlParamsList.map((controlParams) => { const factory = getControlFactory(controlParams); - return factory(controlParams, this.visParams?.useTimeFilter, deps); + return factory(controlParams, visParams.useTimeFilter, deps); }); const controls = await Promise.all(controlFactoryPromises); diff --git a/src/plugins/inspector/jest.config.js b/src/plugins/inspector/jest.config.js new file mode 100644 index 00000000000000..6fc4a063970b93 --- /dev/null +++ b/src/plugins/inspector/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/inspector'], +}; diff --git a/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap b/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap index 7fb00fe8d40c41..1d110c235d5f99 100644 --- a/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap +++ b/src/plugins/inspector/public/ui/__snapshots__/inspector_panel.test.tsx.snap @@ -240,12 +240,11 @@ exports[`InspectorPanel should render as expected 1`] = ` hasArrow={true} id="inspectorViewChooser" isOpen={false} - ownFocus={true} + ownFocus={false} panelPaddingSize="none" repositionOnScroll={true} >
{ return ( /src/plugins/kibana_legacy'], +}; diff --git a/src/plugins/kibana_overview/jest.config.js b/src/plugins/kibana_overview/jest.config.js new file mode 100644 index 00000000000000..4a719b38e47aee --- /dev/null +++ b/src/plugins/kibana_overview/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/kibana_overview'], +}; diff --git a/src/plugins/kibana_overview/kibana.json b/src/plugins/kibana_overview/kibana.json index 9ddcaabdaed6b6..f09fe0cc16a318 100644 --- a/src/plugins/kibana_overview/kibana.json +++ b/src/plugins/kibana_overview/kibana.json @@ -4,6 +4,6 @@ "server": false, "ui": true, "requiredPlugins": ["navigation", "data", "home"], - "optionalPlugins": ["newsfeed"], + "optionalPlugins": ["newsfeed", "usageCollection"], "requiredBundles": ["kibanaReact", "newsfeed"] } diff --git a/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap b/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap index 42623abd79ac02..25538d2eda2871 100644 --- a/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap +++ b/src/plugins/kibana_overview/public/components/add_data/__snapshots__/add_data.test.tsx.snap @@ -61,6 +61,7 @@ exports[`AddData render 1`] = ` iconType="indexOpen" id="home_tutorial_directory" isBeta={false} + onClick={[Function]} title="Ingest data" url="/app/home#/tutorial_directory" wrapInPanel={true} @@ -76,6 +77,7 @@ exports[`AddData render 1`] = ` iconType="indexManagementApp" id="ingestManager" isBeta={false} + onClick={[Function]} title="Add Elastic Agent" url="/app/ingestManager" wrapInPanel={true} @@ -91,6 +93,7 @@ exports[`AddData render 1`] = ` iconType="document" id="ml_file_data_visualizer" isBeta={false} + onClick={[Function]} title="Upload a file" url="/app/ml#/filedatavisualizer" wrapInPanel={true} diff --git a/src/plugins/kibana_overview/public/components/add_data/add_data.test.tsx b/src/plugins/kibana_overview/public/components/add_data/add_data.test.tsx index c04aa9db87ace9..6b3aead0391fc8 100644 --- a/src/plugins/kibana_overview/public/components/add_data/add_data.test.tsx +++ b/src/plugins/kibana_overview/public/components/add_data/add_data.test.tsx @@ -55,6 +55,10 @@ const mockFeatures = [ }, ]; +jest.mock('../../lib/ui_metric', () => ({ + trackUiMetric: jest.fn(), +})); + const addBasePathMock = jest.fn((path: string) => (path ? path : 'path')); describe('AddData', () => { diff --git a/src/plugins/kibana_overview/public/components/add_data/add_data.tsx b/src/plugins/kibana_overview/public/components/add_data/add_data.tsx index e29c2a08395cff..acb1cf726a28c2 100644 --- a/src/plugins/kibana_overview/public/components/add_data/add_data.tsx +++ b/src/plugins/kibana_overview/public/components/add_data/add_data.tsx @@ -26,6 +26,7 @@ import { RedirectAppLinks, useKibana } from '../../../../../../src/plugins/kiban import { FeatureCatalogueEntry } from '../../../../../../src/plugins/home/public'; // @ts-expect-error untyped component import { Synopsis } from '../synopsis'; +import { METRIC_TYPE, trackUiMetric } from '../../lib/ui_metric'; interface Props { addBasePath: (path: string) => string; @@ -82,6 +83,9 @@ export const AddData: FC = ({ addBasePath, features }) => { title={feature.title} url={addBasePath(feature.path)} wrapInPanel + onClick={() => { + trackUiMetric(METRIC_TYPE.CLICK, `ingest_data_card_${feature.id}`); + }} /> diff --git a/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap b/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap index 4be9e4df6b7367..9abb7c9c12147b 100644 --- a/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap +++ b/src/plugins/kibana_overview/public/components/manage_data/__snapshots__/manage_data.test.tsx.snap @@ -41,6 +41,7 @@ exports[`ManageData render 1`] = ` iconType="securityApp" id="security" isBeta={false} + onClick={[Function]} title="Protect your data" url="path-to-security-roles" wrapInPanel={true} @@ -57,6 +58,7 @@ exports[`ManageData render 1`] = ` iconType="monitoringApp" id="monitoring" isBeta={false} + onClick={[Function]} title="Monitor the stack" url="path-to-monitoring" wrapInPanel={true} @@ -73,6 +75,7 @@ exports[`ManageData render 1`] = ` iconType="storage" id="snapshot_restore" isBeta={false} + onClick={[Function]} title="Store & recover backups" url="path-to-snapshot-restore" wrapInPanel={true} @@ -89,6 +92,7 @@ exports[`ManageData render 1`] = ` iconType="indexSettings" id="index_lifecycle_management" isBeta={false} + onClick={[Function]} title="Manage index lifecycles" url="path-to-index-lifecycle-management" wrapInPanel={true} diff --git a/src/plugins/kibana_overview/public/components/manage_data/manage_data.test.tsx b/src/plugins/kibana_overview/public/components/manage_data/manage_data.test.tsx index 69ef12f217738c..e4298aeb191b65 100644 --- a/src/plugins/kibana_overview/public/components/manage_data/manage_data.test.tsx +++ b/src/plugins/kibana_overview/public/components/manage_data/manage_data.test.tsx @@ -66,6 +66,10 @@ const mockFeatures = [ }, ]; +jest.mock('../../lib/ui_metric', () => ({ + trackUiMetric: jest.fn(), +})); + const addBasePathMock = jest.fn((path: string) => (path ? path : 'path')); describe('ManageData', () => { diff --git a/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx b/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx index f7a40b9370efd7..5ceff207b28093 100644 --- a/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx +++ b/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx @@ -26,6 +26,7 @@ import { RedirectAppLinks, useKibana } from '../../../../../../src/plugins/kiban import { FeatureCatalogueEntry } from '../../../../../../src/plugins/home/public'; // @ts-expect-error untyped component import { Synopsis } from '../synopsis'; +import { METRIC_TYPE, trackUiMetric } from '../../lib/ui_metric'; interface Props { addBasePath: (path: string) => string; @@ -68,6 +69,9 @@ export const ManageData: FC = ({ addBasePath, features }) => { title={feature.title} url={addBasePath(feature.path)} wrapInPanel + onClick={() => { + trackUiMetric(METRIC_TYPE.CLICK, `ingest_data_card_${feature.id}`); + }} /> diff --git a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap index 028bf085c8c063..142fe37ae932f8 100644 --- a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap +++ b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap @@ -204,6 +204,7 @@ exports[`Overview render 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_kibana_light_2x.png" + onClick={[Function]} title="Kibana" titleElement="h3" titleSize="xs" @@ -229,6 +230,7 @@ exports[`Overview render 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_2_light_2x.png" + onClick={[Function]} title="Solution two" titleElement="h3" titleSize="xs" @@ -254,6 +256,7 @@ exports[`Overview render 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_3_light_2x.png" + onClick={[Function]} title="Solution three" titleElement="h3" titleSize="xs" @@ -279,6 +282,7 @@ exports[`Overview render 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_4_light_2x.png" + onClick={[Function]} title="Solution four" titleElement="h3" titleSize="xs" @@ -358,6 +362,8 @@ exports[`Overview render 1`] = ` ], } } + onChangeDefaultRoute={[Function]} + onSetDefaultRoute={[Function]} path="/app/kibana_overview" />
@@ -624,6 +630,7 @@ exports[`Overview without features 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_kibana_light_2x.png" + onClick={[Function]} title="Kibana" titleElement="h3" titleSize="xs" @@ -649,6 +656,7 @@ exports[`Overview without features 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_2_light_2x.png" + onClick={[Function]} title="Solution two" titleElement="h3" titleSize="xs" @@ -674,6 +682,7 @@ exports[`Overview without features 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_3_light_2x.png" + onClick={[Function]} title="Solution three" titleElement="h3" titleSize="xs" @@ -699,6 +708,7 @@ exports[`Overview without features 1`] = ` /> } image="/plugins/kibanaOverview/assets/solutions_solution_4_light_2x.png" + onClick={[Function]} title="Solution four" titleElement="h3" titleSize="xs" @@ -834,6 +844,8 @@ exports[`Overview without features 1`] = ` ], } } + onChangeDefaultRoute={[Function]} + onSetDefaultRoute={[Function]} path="/app/kibana_overview" />
@@ -1215,6 +1227,8 @@ exports[`Overview without solutions 1`] = ` ], } } + onChangeDefaultRoute={[Function]} + onSetDefaultRoute={[Function]} path="/app/kibana_overview" /> diff --git a/src/plugins/kibana_overview/public/components/overview/overview.test.tsx b/src/plugins/kibana_overview/public/components/overview/overview.test.tsx index 07c3a6e69c15c2..9748c60776330c 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.test.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.test.tsx @@ -36,6 +36,10 @@ jest.mock('../../../../../../src/plugins/kibana_react/public', () => ({ OverviewPageHeader: jest.fn().mockReturnValue(<>), })); +jest.mock('../../lib/ui_metric', () => ({ + trackUiMetric: jest.fn(), +})); + afterAll(() => jest.clearAllMocks()); const mockNewsFetchResult = { diff --git a/src/plugins/kibana_overview/public/components/overview/overview.tsx b/src/plugins/kibana_overview/public/components/overview/overview.tsx index c951c01aa361e3..0a2bcda7ebb15e 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.tsx @@ -49,6 +49,7 @@ import { AddData } from '../add_data'; import { GettingStarted } from '../getting_started'; import { ManageData } from '../manage_data'; import { NewsFeed } from '../news_feed'; +import { METRIC_TYPE, trackUiMetric } from '../../lib/ui_metric'; const sortByOrder = (featureA: FeatureCatalogueEntry, featureB: FeatureCatalogueEntry) => (featureA.order || Infinity) - (featureB.order || Infinity); @@ -108,6 +109,9 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => { + trackUiMetric(METRIC_TYPE.CLICK, `app_card_${appId}`); + }} image={addBasePath( `/plugins/${PLUGIN_ID}/assets/kibana_${appId}_${IS_DARK_THEME ? 'dark' : 'light'}.svg` )} @@ -222,6 +226,9 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => title={title} titleElement="h3" titleSize="xs" + onClick={() => { + trackUiMetric(METRIC_TYPE.CLICK, `solution_panel_${id}`); + }} /> @@ -252,7 +259,16 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) =>
@@ -114,38 +161,8 @@ export class SavedObjectSaveModal extends React.Component {this.props.description} )} - - - + {formBody} {this.renderCopyOnSave()} - - - } - > - - - - {this.renderViewDescription()} - - {typeof this.props.options === 'function' - ? this.props.options(this.state) - : this.props.options} @@ -238,6 +255,10 @@ export class SavedObjectSaveModal extends React.Component this.setState({ copyOnSave: event.target.checked, }); + + if (this.props.onCopyOnSaveChange) { + this.props.onCopyOnSaveChange(event.target.checked); + } }; private onFormSubmit = (event: React.FormEvent) => { @@ -259,12 +280,14 @@ export class SavedObjectSaveModal extends React.Component confirmLabel = this.props.confirmButtonLabel; } + const isValid = this.props.isValid !== undefined ? this.props.isValid : true; + return ( {confirmLabel} @@ -315,6 +338,7 @@ export class SavedObjectSaveModal extends React.Component return ( <> + /> } /> - ); }; diff --git a/src/plugins/saved_objects_management/jest.config.js b/src/plugins/saved_objects_management/jest.config.js new file mode 100644 index 00000000000000..3cedb8c937f5ea --- /dev/null +++ b/src/plugins/saved_objects_management/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/saved_objects_management'], +}; diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap index fd90663e4700da..2e262ce43731a6 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/__snapshots__/saved_objects_table.test.tsx.snap @@ -262,6 +262,7 @@ exports[`SavedObjectsTable should render normally 1`] = ` "basePath": "", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "", } diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/flyout.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/flyout.test.tsx.snap index 3fbacef99806d5..d06fd0df98a8cf 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/flyout.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/flyout.test.tsx.snap @@ -175,6 +175,7 @@ exports[`Flyout conflicts should allow conflict resolution 2`] = ` "basePath": "", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "", }, @@ -570,11 +571,17 @@ exports[`Flyout should render import step 1`] = ` hasChildLabel={true} hasEmptyLabelSpace={false} label={ - + + + + + } labelType="label" > diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx index c19bb5d8191586..0ffc162b7ae7a9 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx @@ -758,10 +758,14 @@ export class Flyout extends Component { + + + + + } > onChange({ overwrite: id === overwriteEnabled.id })} - disabled={createNewCopies} + disabled={createNewCopies && !isLegacyFile} data-test-subj={'savedObjectsManagement-importModeControl-overwriteRadioGroup'} /> ); diff --git a/src/plugins/saved_objects_tagging_oss/jest.config.js b/src/plugins/saved_objects_tagging_oss/jest.config.js new file mode 100644 index 00000000000000..7e75b5c5593e7b --- /dev/null +++ b/src/plugins/saved_objects_tagging_oss/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/saved_objects_tagging_oss'], +}; diff --git a/src/plugins/saved_objects_tagging_oss/public/api.mock.ts b/src/plugins/saved_objects_tagging_oss/public/api.mock.ts index e29922c2481c43..1e66a9baa812e3 100644 --- a/src/plugins/saved_objects_tagging_oss/public/api.mock.ts +++ b/src/plugins/saved_objects_tagging_oss/public/api.mock.ts @@ -18,10 +18,10 @@ */ import { ITagsClient } from '../common'; -import { SavedObjectsTaggingApiUi, SavedObjectsTaggingApiUiComponent } from './api'; +import { SavedObjectsTaggingApiUi, SavedObjectsTaggingApiUiComponent, ITagsCache } from './api'; -const createClientMock = (): jest.Mocked => { - const mock = { +const createClientMock = () => { + const mock: jest.Mocked = { create: jest.fn(), get: jest.fn(), getAll: jest.fn(), @@ -32,14 +32,25 @@ const createClientMock = (): jest.Mocked => { return mock; }; +const createCacheMock = () => { + const mock: jest.Mocked = { + getState: jest.fn(), + getState$: jest.fn(), + }; + + return mock; +}; + interface SavedObjectsTaggingApiMock { client: jest.Mocked; + cache: jest.Mocked; ui: SavedObjectsTaggingApiUiMock; } const createApiMock = (): SavedObjectsTaggingApiMock => { - const mock = { + const mock: SavedObjectsTaggingApiMock = { client: createClientMock(), + cache: createCacheMock(), ui: createApiUiMock(), }; @@ -50,8 +61,8 @@ type SavedObjectsTaggingApiUiMock = Omit, components: SavedObjectsTaggingApiUiComponentMock; }; -const createApiUiMock = (): SavedObjectsTaggingApiUiMock => { - const mock = { +const createApiUiMock = () => { + const mock: SavedObjectsTaggingApiUiMock = { components: createApiUiComponentsMock(), // TS is very picky with type guards hasTagDecoration: jest.fn() as any, @@ -60,6 +71,7 @@ const createApiUiMock = (): SavedObjectsTaggingApiUiMock => { convertNameToReference: jest.fn(), parseSearchQuery: jest.fn(), getTagIdsFromReferences: jest.fn(), + getTagIdFromName: jest.fn(), updateTagsReferences: jest.fn(), }; @@ -68,8 +80,8 @@ const createApiUiMock = (): SavedObjectsTaggingApiUiMock => { type SavedObjectsTaggingApiUiComponentMock = jest.Mocked; -const createApiUiComponentsMock = (): SavedObjectsTaggingApiUiComponentMock => { - const mock = { +const createApiUiComponentsMock = () => { + const mock: SavedObjectsTaggingApiUiComponentMock = { TagList: jest.fn(), TagSelector: jest.fn(), SavedObjectSaveModalTagSelector: jest.fn(), @@ -81,6 +93,7 @@ const createApiUiComponentsMock = (): SavedObjectsTaggingApiUiComponentMock => { export const taggingApiMock = { create: createApiMock, createClient: createClientMock, + createCache: createCacheMock, createUi: createApiUiMock, createComponents: createApiUiComponentsMock, }; diff --git a/src/plugins/saved_objects_tagging_oss/public/api.ts b/src/plugins/saved_objects_tagging_oss/public/api.ts index 71548cd5c7f510..987930af1e3e4b 100644 --- a/src/plugins/saved_objects_tagging_oss/public/api.ts +++ b/src/plugins/saved_objects_tagging_oss/public/api.ts @@ -17,22 +17,49 @@ * under the License. */ +import { Observable } from 'rxjs'; import { SearchFilterConfig, EuiTableFieldDataColumnType } from '@elastic/eui'; import type { FunctionComponent } from 'react'; import { SavedObject, SavedObjectReference } from '../../../core/types'; import { SavedObjectsFindOptionsReference } from '../../../core/public'; import { SavedObject as SavedObjectClass } from '../../saved_objects/public'; import { TagDecoratedSavedObject } from './decorator'; -import { ITagsClient } from '../common'; +import { ITagsClient, Tag } from '../common'; /** * @public */ export interface SavedObjectsTaggingApi { + /** + * The client to perform tag-related operations on the server-side + */ client: ITagsClient; + /** + * A client-side auto-refreshing cache of the existing tags. Can be used + * to synchronously access the list of tags. + */ + cache: ITagsCache; + /** + * UI API to use to add tagging capabilities to an application + */ ui: SavedObjectsTaggingApiUi; } +/** + * @public + */ +export interface ITagsCache { + /** + * Return the current state of the cache + */ + getState(): Tag[]; + + /** + * Return an observable that will emit everytime the cache's state mutates. + */ + getState$(): Observable; +} + /** * @public */ @@ -84,7 +111,7 @@ export interface SavedObjectsTaggingApiUi { /** * Convert given tag name to a {@link SavedObjectsFindOptionsReference | reference } * to be used to search using the savedObjects `_find` API. Will return `undefined` - * is the given name does not match any existing tag. + * if the given name does not match any existing tag. */ convertNameToReference(tagName: string): SavedObjectsFindOptionsReference | undefined; @@ -124,6 +151,12 @@ export interface SavedObjectsTaggingApiUi { references: Array ): string[]; + /** + * Returns the id for given tag name. Will return `undefined` + * if the given name does not match any existing tag. + */ + getTagIdFromName(tagName: string): string | undefined; + /** * Returns a new references array that replace the old tag references with references to the * new given tag ids, while preserving all non-tag references. diff --git a/src/plugins/saved_objects_tagging_oss/public/index.ts b/src/plugins/saved_objects_tagging_oss/public/index.ts index bc824621830d20..ef3087f944add2 100644 --- a/src/plugins/saved_objects_tagging_oss/public/index.ts +++ b/src/plugins/saved_objects_tagging_oss/public/index.ts @@ -26,6 +26,7 @@ export { SavedObjectsTaggingApi, SavedObjectsTaggingApiUi, SavedObjectsTaggingApiUiComponent, + ITagsCache, TagListComponentProps, TagSelectorComponentProps, GetSearchBarFilterOptions, diff --git a/src/plugins/security_oss/jest.config.js b/src/plugins/security_oss/jest.config.js new file mode 100644 index 00000000000000..3bf6ee33d3e485 --- /dev/null +++ b/src/plugins/security_oss/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/security_oss'], +}; diff --git a/src/plugins/share/jest.config.js b/src/plugins/share/jest.config.js new file mode 100644 index 00000000000000..39b048279e73be --- /dev/null +++ b/src/plugins/share/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/share'], +}; diff --git a/src/plugins/share/public/index.ts b/src/plugins/share/public/index.ts index 950ecebeaadc74..9f98d9c21d233f 100644 --- a/src/plugins/share/public/index.ts +++ b/src/plugins/share/public/index.ts @@ -41,5 +41,7 @@ export { import { SharePlugin } from './plugin'; export { KibanaURL } from './kibana_url'; +export { downloadMultipleAs, downloadFileAs } from './lib/download_as'; +export type { DownloadableContent } from './lib/download_as'; export const plugin = () => new SharePlugin(); diff --git a/src/plugins/share/public/lib/download_as.ts b/src/plugins/share/public/lib/download_as.ts new file mode 100644 index 00000000000000..6f40b894f85bc6 --- /dev/null +++ b/src/plugins/share/public/lib/download_as.ts @@ -0,0 +1,67 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// @ts-ignore +import { saveAs } from '@elastic/filesaver'; +import pMap from 'p-map'; + +export type DownloadableContent = { content: string; type: string } | Blob; + +/** + * Convenient method to use for a single file download + * **Note**: for multiple files use the downloadMultipleAs method, do not iterate with this method here + * @param filename full name of the file + * @param payload either a Blob content, or a Record with a stringified content and type + * + * @returns a Promise that resolves when the download has been correctly started + */ +export function downloadFileAs(filename: string, payload: DownloadableContent) { + return downloadMultipleAs({ [filename]: payload }); +} + +/** + * Multiple files download method + * @param files a Record containing one entry per file: the key entry should be the filename + * and the value either a Blob content, or a Record with a stringified content and type + * + * @returns a Promise that resolves when all the downloads have been correctly started + */ +export async function downloadMultipleAs(files: Record) { + const filenames = Object.keys(files); + const downloadQueue = filenames.map((filename, i) => { + const payload = files[filename]; + const blob = + // probably this is enough? It does not support Node or custom implementations + payload instanceof Blob ? payload : new Blob([payload.content], { type: payload.type }); + + // TODO: remove this workaround for multiple files when fixed (in filesaver?) + return () => Promise.resolve().then(() => saveAs(blob, filename)); + }); + + // There's a bug in some browser with multiple files downloaded at once + // * sometimes only the first/last content is downloaded multiple times + // * sometimes only the first/last filename is used multiple times + await pMap(downloadQueue, (downloadFn) => Promise.all([downloadFn(), wait(50)]), { + concurrency: 1, + }); +} +// Probably there's already another one around? +function wait(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/src/plugins/share/server/routes/lib/short_url_assert_valid.test.ts b/src/plugins/share/server/routes/lib/short_url_assert_valid.test.ts index 02a5e123b64811..232429ac4ec333 100644 --- a/src/plugins/share/server/routes/lib/short_url_assert_valid.test.ts +++ b/src/plugins/share/server/routes/lib/short_url_assert_valid.test.ts @@ -19,36 +19,39 @@ import { shortUrlAssertValid } from './short_url_assert_valid'; +const PROTOCOL_ERROR = /^Short url targets cannot have a protocol/; +const HOSTNAME_ERROR = /^Short url targets cannot have a hostname/; +const PATH_ERROR = /^Short url target path must be in the format/; + describe('shortUrlAssertValid()', () => { const invalid = [ - ['protocol', 'http://localhost:5601/app/kibana'], - ['protocol', 'https://localhost:5601/app/kibana'], - ['protocol', 'mailto:foo@bar.net'], - ['protocol', 'javascript:alert("hi")'], // eslint-disable-line no-script-url - ['hostname', 'localhost/app/kibana'], - ['hostname and port', 'local.host:5601/app/kibana'], - ['hostname and auth', 'user:pass@localhost.net/app/kibana'], - ['path traversal', '/app/../../not-kibana'], - ['deep path', '/app/kibana/foo'], - ['deep path', '/app/kibana/foo/bar'], - ['base path', '/base/app/kibana'], + ['protocol', 'http://localhost:5601/app/kibana', PROTOCOL_ERROR], + ['protocol', 'https://localhost:5601/app/kibana', PROTOCOL_ERROR], + ['protocol', 'mailto:foo@bar.net', PROTOCOL_ERROR], + ['protocol', 'javascript:alert("hi")', PROTOCOL_ERROR], // eslint-disable-line no-script-url + ['hostname', 'localhost/app/kibana', PATH_ERROR], // according to spec, this is not a valid URL -- you cannot specify a hostname without a protocol + ['hostname and port', 'local.host:5601/app/kibana', PROTOCOL_ERROR], // parser detects 'local.host' as the protocol + ['hostname and auth', 'user:pass@localhost.net/app/kibana', PROTOCOL_ERROR], // parser detects 'user' as the protocol + ['path traversal', '/app/../../not-kibana', PATH_ERROR], // fails because there are >2 path parts + ['path traversal', '/../not-kibana', PATH_ERROR], // fails because first path part is not 'app' + ['deep path', '/app/kibana/foo', PATH_ERROR], // fails because there are >2 path parts + ['deeper path', '/app/kibana/foo/bar', PATH_ERROR], // fails because there are >2 path parts + ['base path', '/base/app/kibana', PATH_ERROR], // fails because there are >2 path parts + ['path with an extra leading slash', '//foo/app/kibana', HOSTNAME_ERROR], // parser detects 'foo' as the hostname + ['path with an extra leading slash', '///app/kibana', HOSTNAME_ERROR], // parser detects '' as the hostname + ['path without app', '/foo/kibana', PATH_ERROR], // fails because first path part is not 'app' + ['path without appId', '/app/', PATH_ERROR], // fails because there is only one path part (leading and trailing slashes are trimmed) ]; - invalid.forEach(([desc, url]) => { - it(`fails when url has ${desc}`, () => { - try { - shortUrlAssertValid(url); - throw new Error(`expected assertion to throw`); - } catch (err) { - if (!err || !err.isBoom) { - throw err; - } - } + invalid.forEach(([desc, url, error]) => { + it(`fails when url has ${desc as string}`, () => { + expect(() => shortUrlAssertValid(url as string)).toThrowError(error); }); }); const valid = [ '/app/kibana', + '/app/kibana/', // leading and trailing slashes are trimmed '/app/monitoring#angular/route', '/app/text#document-id', '/app/some?with=query', diff --git a/src/plugins/share/server/routes/lib/short_url_assert_valid.ts b/src/plugins/share/server/routes/lib/short_url_assert_valid.ts index 581410359322fd..773e3acdcb902f 100644 --- a/src/plugins/share/server/routes/lib/short_url_assert_valid.ts +++ b/src/plugins/share/server/routes/lib/short_url_assert_valid.ts @@ -22,18 +22,22 @@ import { trim } from 'lodash'; import Boom from '@hapi/boom'; export function shortUrlAssertValid(url: string) { - const { protocol, hostname, pathname } = parse(url); + const { protocol, hostname, pathname } = parse( + url, + false /* parseQueryString */, + true /* slashesDenoteHost */ + ); - if (protocol) { + if (protocol !== null) { throw Boom.notAcceptable(`Short url targets cannot have a protocol, found "${protocol}"`); } - if (hostname) { + if (hostname !== null) { throw Boom.notAcceptable(`Short url targets cannot have a hostname, found "${hostname}"`); } const pathnameParts = trim(pathname === null ? undefined : pathname, '/').split('/'); - if (pathnameParts.length !== 2) { + if (pathnameParts.length !== 2 || pathnameParts[0] !== 'app' || !pathnameParts[1]) { throw Boom.notAcceptable( `Short url target path must be in the format "/app/{{appId}}", found "${pathname}"` ); diff --git a/src/plugins/telemetry/jest.config.js b/src/plugins/telemetry/jest.config.js new file mode 100644 index 00000000000000..914cea68cd01bc --- /dev/null +++ b/src/plugins/telemetry/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/telemetry'], +}; diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index a1eae69ffaed04..55384329f9af76 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -616,7 +616,7 @@ } } }, - "ingestManager": { + "fleet": { "properties": { "clicks_total": { "type": "long" @@ -1391,7 +1391,7 @@ "disableProtection": { "type": "boolean" }, - "whitelistConfigured": { + "allowlistConfigured": { "type": "boolean" } } @@ -1516,6 +1516,57 @@ } } } + }, + "apiCalls.savedObjectsImport.total": { + "type": "long" + }, + "apiCalls.savedObjectsImport.kibanaRequest.yes": { + "type": "long" + }, + "apiCalls.savedObjectsImport.kibanaRequest.no": { + "type": "long" + }, + "apiCalls.savedObjectsImport.createNewCopiesEnabled.yes": { + "type": "long" + }, + "apiCalls.savedObjectsImport.createNewCopiesEnabled.no": { + "type": "long" + }, + "apiCalls.savedObjectsImport.overwriteEnabled.yes": { + "type": "long" + }, + "apiCalls.savedObjectsImport.overwriteEnabled.no": { + "type": "long" + }, + "apiCalls.savedObjectsResolveImportErrors.total": { + "type": "long" + }, + "apiCalls.savedObjectsResolveImportErrors.kibanaRequest.yes": { + "type": "long" + }, + "apiCalls.savedObjectsResolveImportErrors.kibanaRequest.no": { + "type": "long" + }, + "apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.yes": { + "type": "long" + }, + "apiCalls.savedObjectsResolveImportErrors.createNewCopiesEnabled.no": { + "type": "long" + }, + "apiCalls.savedObjectsExport.total": { + "type": "long" + }, + "apiCalls.savedObjectsExport.kibanaRequest.yes": { + "type": "long" + }, + "apiCalls.savedObjectsExport.kibanaRequest.no": { + "type": "long" + }, + "apiCalls.savedObjectsExport.allTypesSelected.yes": { + "type": "long" + }, + "apiCalls.savedObjectsExport.allTypesSelected.no": { + "type": "long" } } }, @@ -1869,6 +1920,35 @@ } } }, + "ui_counters": { + "properties": { + "dailyEvents": { + "type": "array", + "items": { + "properties": { + "appName": { + "type": "keyword" + }, + "eventName": { + "type": "keyword" + }, + "lastUpdatedAt": { + "type": "date" + }, + "fromTimestamp": { + "type": "date" + }, + "counterType": { + "type": "keyword" + }, + "total": { + "type": "integer" + } + } + } + } + } + }, "ui_metric": { "properties": { "console": { diff --git a/src/plugins/telemetry/server/fetcher.ts b/src/plugins/telemetry/server/fetcher.ts index a3649f51577ac3..820f2c7c4c4af0 100644 --- a/src/plugins/telemetry/server/fetcher.ts +++ b/src/plugins/telemetry/server/fetcher.ts @@ -17,7 +17,6 @@ * under the License. */ -import moment from 'moment'; import { Observable, Subscription, timer } from 'rxjs'; import { take } from 'rxjs/operators'; // @ts-ignore @@ -213,7 +212,6 @@ export class FetcherTask { private async fetchTelemetry() { return await this.telemetryCollectionManager!.getStats({ unencrypted: false, - timestamp: moment().valueOf(), }); } diff --git a/src/plugins/telemetry/server/index.ts b/src/plugins/telemetry/server/index.ts index e9887456e2f365..326c87a75b0ea5 100644 --- a/src/plugins/telemetry/server/index.ts +++ b/src/plugins/telemetry/server/index.ts @@ -44,7 +44,6 @@ export const plugin = (initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get(); @@ -109,12 +105,7 @@ export class TelemetryPlugin implements Plugin this.elasticsearchClient, - () => this.savedObjectsService - ); + registerCollection(telemetryCollectionManager); const router = http.createRouter(); registerRoutes({ @@ -138,11 +129,9 @@ export class TelemetryPlugin implements Plugin= 7.6 and < 8.0, this flag is needed otherwise 'platinum' is returned for 'enterprise' license. - accept_enterprise: true, - }); - return body; -} -/** - * Get the cluster's license from the connected node. - * - * This is the equivalent of GET /_license?local=true&accept_enterprise=true. - * - * Like any X-Pack related API, X-Pack must installed for this to work. - * - * In OSS we'll get a 400 response using the new elasticsearch client. - */ -async function getLicenseFromLocalOrMaster(esClient: ElasticsearchClient) { - // Fetching the local license is cheaper than getting it from the master node and good enough - const { license } = await fetchLicense(esClient, true).catch(async (err) => { - if (cachedLicense) { - try { - // Fallback to the master node's license info - const response = await fetchLicense(esClient, false); - return response; - } catch (masterError) { - if ([400, 404].includes(masterError.statusCode)) { - // If the master node does not have a license, we can assume there is no license - cachedLicense = undefined; - } else { - throw err; - } - } - } - return { license: void 0 }; - }); - - if (license) { - cachedLicense = license; - } - return license; -} - -export const getLocalLicense: LicenseGetter = async (clustersDetails, { esClient }) => { - const license = await getLicenseFromLocalOrMaster(esClient); - // It should be called only with 1 cluster element in the clustersDetails array, but doing reduce just in case. - return clustersDetails.reduce((acc, { clusterUuid }) => ({ ...acc, [clusterUuid]: license }), {}); -}; diff --git a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts index a3666683a05a17..12245ce62305ea 100644 --- a/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts +++ b/src/plugins/telemetry/server/telemetry_collection/get_local_stats.ts @@ -66,7 +66,7 @@ export type TelemetryLocalStats = ReturnType; * @param {Object} config contains the usageCollection, callCluster (deprecated), the esClient and Saved Objects client scoped to the request or the internal repository, and the kibana request * @param {Object} StatsCollectionContext contains logger and version (string) */ -export const getLocalStats: StatsGetter<{}, TelemetryLocalStats> = async ( +export const getLocalStats: StatsGetter = async ( clustersDetails, config, context diff --git a/src/plugins/telemetry/server/telemetry_collection/index.ts b/src/plugins/telemetry/server/telemetry_collection/index.ts index 40cbf0e4caa1d9..77894091f61330 100644 --- a/src/plugins/telemetry/server/telemetry_collection/index.ts +++ b/src/plugins/telemetry/server/telemetry_collection/index.ts @@ -24,6 +24,5 @@ export { buildDataTelemetryPayload, } from './get_data_telemetry'; export { getLocalStats, TelemetryLocalStats } from './get_local_stats'; -export { getLocalLicense } from './get_local_license'; export { getClusterUuids } from './get_cluster_stats'; export { registerCollection } from './register_collection'; diff --git a/src/plugins/telemetry/server/telemetry_collection/register_collection.ts b/src/plugins/telemetry/server/telemetry_collection/register_collection.ts index 27ca5ae7465123..fac315b01493eb 100644 --- a/src/plugins/telemetry/server/telemetry_collection/register_collection.ts +++ b/src/plugins/telemetry/server/telemetry_collection/register_collection.ts @@ -36,27 +36,17 @@ * under the License. */ -import { ILegacyClusterClient, SavedObjectsServiceStart } from 'kibana/server'; import { TelemetryCollectionManagerPluginSetup } from 'src/plugins/telemetry_collection_manager/server'; -import { IClusterClient } from '../../../../../src/core/server'; import { getLocalStats } from './get_local_stats'; import { getClusterUuids } from './get_cluster_stats'; -import { getLocalLicense } from './get_local_license'; export function registerCollection( - telemetryCollectionManager: TelemetryCollectionManagerPluginSetup, - esCluster: ILegacyClusterClient, - esClientGetter: () => IClusterClient | undefined, - soServiceGetter: () => SavedObjectsServiceStart | undefined + telemetryCollectionManager: TelemetryCollectionManagerPluginSetup ) { - telemetryCollectionManager.setCollection({ - esCluster, - esClientGetter, - soServiceGetter, + telemetryCollectionManager.setCollectionStrategy({ title: 'local', priority: 0, statsGetter: getLocalStats, clusterDetailsGetter: getClusterUuids, - licenseGetter: getLocalLicense, }); } diff --git a/src/plugins/telemetry_collection_manager/jest.config.js b/src/plugins/telemetry_collection_manager/jest.config.js new file mode 100644 index 00000000000000..9278ca21d7bc23 --- /dev/null +++ b/src/plugins/telemetry_collection_manager/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/telemetry_collection_manager'], +}; diff --git a/src/plugins/telemetry_collection_manager/server/index.ts b/src/plugins/telemetry_collection_manager/server/index.ts index 36ab64731fe582..de2080059c80b7 100644 --- a/src/plugins/telemetry_collection_manager/server/index.ts +++ b/src/plugins/telemetry_collection_manager/server/index.ts @@ -30,13 +30,11 @@ export function plugin(initializerContext: PluginInitializerContext) { export { TelemetryCollectionManagerPluginSetup, TelemetryCollectionManagerPluginStart, - ESLicense, StatsCollectionConfig, StatsGetter, StatsGetterConfig, StatsCollectionContext, ClusterDetails, ClusterDetailsGetter, - LicenseGetter, UsageStatsPayload, } from './types'; diff --git a/src/plugins/telemetry_collection_manager/server/plugin.ts b/src/plugins/telemetry_collection_manager/server/plugin.ts index bc33e9fbc82c5b..a135f4b115b215 100644 --- a/src/plugins/telemetry_collection_manager/server/plugin.ts +++ b/src/plugins/telemetry_collection_manager/server/plugin.ts @@ -26,14 +26,15 @@ import { Logger, IClusterClient, SavedObjectsServiceStart, -} from '../../../core/server'; + ILegacyClusterClient, +} from 'src/core/server'; import { TelemetryCollectionManagerPluginSetup, TelemetryCollectionManagerPluginStart, BasicStatsPayload, - CollectionConfig, - Collection, + CollectionStrategyConfig, + CollectionStrategy, StatsGetterConfig, StatsCollectionConfig, UsageStatsPayload, @@ -49,9 +50,12 @@ interface TelemetryCollectionPluginsDepsSetup { export class TelemetryCollectionManagerPlugin implements Plugin { private readonly logger: Logger; - private readonly collections: Array> = []; + private collectionStrategy: CollectionStrategy | undefined; private usageGetterMethodPriority = -1; private usageCollection?: UsageCollectionSetup; + private legacyElasticsearchClient?: ILegacyClusterClient; + private elasticsearchClient?: IClusterClient; + private savedObjectsService?: SavedObjectsServiceStart; private readonly isDistributable: boolean; private readonly version: string; @@ -65,7 +69,7 @@ export class TelemetryCollectionManagerPlugin this.usageCollection = usageCollection; return { - setCollection: this.setCollection.bind(this), + setCollectionStrategy: this.setCollectionStrategy.bind(this), getOptInStats: this.getOptInStats.bind(this), getStats: this.getStats.bind(this), areAllCollectorsReady: this.areAllCollectorsReady.bind(this), @@ -73,8 +77,11 @@ export class TelemetryCollectionManagerPlugin } public start(core: CoreStart) { + this.legacyElasticsearchClient = core.elasticsearch.legacy.client; // TODO: Remove when all the collectors have migrated + this.elasticsearchClient = core.elasticsearch.client; + this.savedObjectsService = core.savedObjects; + return { - setCollection: this.setCollection.bind(this), getOptInStats: this.getOptInStats.bind(this), getStats: this.getStats.bind(this), areAllCollectorsReady: this.areAllCollectorsReady.bind(this), @@ -83,19 +90,10 @@ export class TelemetryCollectionManagerPlugin public stop() {} - private setCollection, T extends BasicStatsPayload>( - collectionConfig: CollectionConfig + private setCollectionStrategy( + collectionConfig: CollectionStrategyConfig ) { - const { - title, - priority, - esCluster, - esClientGetter, - soServiceGetter, - statsGetter, - clusterDetailsGetter, - licenseGetter, - } = collectionConfig; + const { title, priority, statsGetter, clusterDetailsGetter } = collectionConfig; if (typeof priority !== 'number') { throw new Error('priority must be set.'); @@ -108,78 +106,58 @@ export class TelemetryCollectionManagerPlugin if (!statsGetter) { throw Error('Stats getter method not set.'); } - if (!esCluster) { - throw Error('esCluster name must be set for the getCluster method.'); - } - if (!esClientGetter) { - throw Error('esClientGetter method not set.'); - } - if (!soServiceGetter) { - throw Error('soServiceGetter method not set.'); - } if (!clusterDetailsGetter) { throw Error('Cluster UUIds method is not set.'); } - if (!licenseGetter) { - throw Error('License getter method not set.'); - } - this.collections.unshift({ - licenseGetter, - statsGetter, - clusterDetailsGetter, - esCluster, - title, - esClientGetter, - soServiceGetter, - }); + this.logger.debug(`Setting ${title} as the telemetry collection strategy`); + + // Overwrite the collection strategy + this.collectionStrategy = collectionConfig; this.usageGetterMethodPriority = priority; } } + /** + * Returns the context to provide to the Collection Strategies. + * It may return undefined if the ES and SO clients are not initialised yet. + * @param config {@link StatsGetterConfig} + * @param usageCollection {@link UsageCollectionSetup} + * @private + */ private getStatsCollectionConfig( config: StatsGetterConfig, - collection: Collection, - collectionEsClient: IClusterClient, - collectionSoService: SavedObjectsServiceStart, usageCollection: UsageCollectionSetup - ): StatsCollectionConfig { - const { request } = config; - + ): StatsCollectionConfig | undefined { const callCluster = config.unencrypted - ? collection.esCluster.asScoped(request).callAsCurrentUser - : collection.esCluster.callAsInternalUser; + ? this.legacyElasticsearchClient?.asScoped(config.request).callAsCurrentUser + : this.legacyElasticsearchClient?.callAsInternalUser; // Scope the new elasticsearch Client appropriately and pass to the stats collection config const esClient = config.unencrypted - ? collectionEsClient.asScoped(config.request).asCurrentUser - : collectionEsClient.asInternalUser; + ? this.elasticsearchClient?.asScoped(config.request).asCurrentUser + : this.elasticsearchClient?.asInternalUser; // Scope the saved objects client appropriately and pass to the stats collection config const soClient = config.unencrypted - ? collectionSoService.getScopedClient(config.request) - : collectionSoService.createInternalRepository(); + ? this.savedObjectsService?.getScopedClient(config.request) + : this.savedObjectsService?.createInternalRepository(); // Provide the kibanaRequest so opted-in plugins can scope their custom clients only if the request is not encrypted - const kibanaRequest = config.unencrypted ? request : void 0; + const kibanaRequest = config.unencrypted ? config.request : void 0; - return { callCluster, usageCollection, esClient, soClient, kibanaRequest }; + if (callCluster && esClient && soClient) { + return { callCluster, usageCollection, esClient, soClient, kibanaRequest }; + } } private async getOptInStats(optInStatus: boolean, config: StatsGetterConfig) { if (!this.usageCollection) { return []; } - for (const collection of this.collections) { - // first fetch the client and make sure it's not undefined. - const collectionEsClient = collection.esClientGetter(); - const collectionSoService = collection.soServiceGetter(); - if (collectionEsClient !== undefined && collectionSoService !== undefined) { - const statsCollectionConfig = this.getStatsCollectionConfig( - config, - collection, - collectionEsClient, - collectionSoService, - this.usageCollection - ); + const collection = this.collectionStrategy; + if (collection) { + // Build the context (clients and others) to send to the CollectionStrategies + const statsCollectionConfig = this.getStatsCollectionConfig(config, this.usageCollection); + if (statsCollectionConfig) { try { const optInStats = await this.getOptInStatsForCollection( collection, @@ -194,8 +172,9 @@ export class TelemetryCollectionManagerPlugin return encryptTelemetry(optInStats, { useProdKey: this.isDistributable }); } } catch (err) { - this.logger.debug(`Failed to collect any opt in stats with registered collections.`); - // swallow error to try next collection; + this.logger.debug( + `Failed to collect any opt in stats with collection ${collection.title}.` + ); } } } @@ -203,19 +182,18 @@ export class TelemetryCollectionManagerPlugin return []; } - private areAllCollectorsReady = async () => { + private async areAllCollectorsReady() { return await this.usageCollection?.areAllCollectorsReady(); - }; + } private getOptInStatsForCollection = async ( - collection: Collection, + collection: CollectionStrategy, optInStatus: boolean, statsCollectionConfig: StatsCollectionConfig ) => { const context: StatsCollectionContext = { logger: this.logger.get(collection.title), version: this.version, - ...collection.customContext, }; const clustersDetails = await collection.clusterDetailsGetter(statsCollectionConfig, context); @@ -229,17 +207,11 @@ export class TelemetryCollectionManagerPlugin if (!this.usageCollection) { return []; } - for (const collection of this.collections) { - const collectionEsClient = collection.esClientGetter(); - const collectionSavedObjectsService = collection.soServiceGetter(); - if (collectionEsClient !== undefined && collectionSavedObjectsService !== undefined) { - const statsCollectionConfig = this.getStatsCollectionConfig( - config, - collection, - collectionEsClient, - collectionSavedObjectsService, - this.usageCollection - ); + const collection = this.collectionStrategy; + if (collection) { + // Build the context (clients and others) to send to the CollectionStrategies + const statsCollectionConfig = this.getStatsCollectionConfig(config, this.usageCollection); + if (statsCollectionConfig) { try { const usageData = await this.getUsageForCollection(collection, statsCollectionConfig); if (usageData.length) { @@ -256,7 +228,6 @@ export class TelemetryCollectionManagerPlugin this.logger.debug( `Failed to collect any usage with registered collection ${collection.title}.` ); - // swallow error to try next collection; } } } @@ -265,34 +236,24 @@ export class TelemetryCollectionManagerPlugin } private async getUsageForCollection( - collection: Collection, + collection: CollectionStrategy, statsCollectionConfig: StatsCollectionConfig ): Promise { const context: StatsCollectionContext = { logger: this.logger.get(collection.title), version: this.version, - ...collection.customContext, }; const clustersDetails = await collection.clusterDetailsGetter(statsCollectionConfig, context); if (clustersDetails.length === 0) { - // don't bother doing a further lookup, try next collection. + // don't bother doing a further lookup. return []; } - const [stats, licenses] = await Promise.all([ - collection.statsGetter(clustersDetails, statsCollectionConfig, context), - collection.licenseGetter(clustersDetails, statsCollectionConfig, context), - ]); + const stats = await collection.statsGetter(clustersDetails, statsCollectionConfig, context); - return stats.map((stat) => { - const license = licenses[stat.cluster_uuid]; - return { - collectionSource: collection.title, - ...(license ? { license } : {}), - ...stat, - }; - }); + // Add the `collectionSource` to the resulting payload + return stats.map((stat) => ({ collectionSource: collection.title, ...stat })); } } diff --git a/src/plugins/telemetry_collection_manager/server/types.ts b/src/plugins/telemetry_collection_manager/server/types.ts index a6cf1a9e5aaf95..05641d50645931 100644 --- a/src/plugins/telemetry_collection_manager/server/types.ts +++ b/src/plugins/telemetry_collection_manager/server/types.ts @@ -19,21 +19,18 @@ import { LegacyAPICaller, + ElasticsearchClient, Logger, KibanaRequest, - ILegacyClusterClient, - IClusterClient, - SavedObjectsServiceStart, SavedObjectsClientContract, ISavedObjectsRepository, -} from 'kibana/server'; +} from 'src/core/server'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; -import { ElasticsearchClient } from '../../../../src/core/server'; import { TelemetryCollectionManagerPlugin } from './plugin'; export interface TelemetryCollectionManagerPluginSetup { - setCollection: , T extends BasicStatsPayload>( - collectionConfig: CollectionConfig + setCollectionStrategy: ( + collectionConfig: CollectionStrategyConfig ) => void; getOptInStats: TelemetryCollectionManagerPlugin['getOptInStats']; getStats: TelemetryCollectionManagerPlugin['getStats']; @@ -41,9 +38,6 @@ export interface TelemetryCollectionManagerPluginSetup { } export interface TelemetryCollectionManagerPluginStart { - setCollection: , T extends BasicStatsPayload>( - collectionConfig: CollectionConfig - ) => void; getOptInStats: TelemetryCollectionManagerPlugin['getOptInStats']; getStats: TelemetryCollectionManagerPlugin['getStats']; areAllCollectorsReady: TelemetryCollectionManagerPlugin['areAllCollectorsReady']; @@ -91,74 +85,34 @@ export interface BasicStatsPayload { } export interface UsageStatsPayload extends BasicStatsPayload { - license?: ESLicense; collectionSource: string; } -// From https://www.elastic.co/guide/en/elasticsearch/reference/current/get-license.html -export interface ESLicense { - status: string; - uid: string; - type: string; - issue_date: string; - issue_date_in_millis: number; - expiry_date: string; - expirty_date_in_millis: number; - max_nodes: number; - issued_to: string; - issuer: string; - start_date_in_millis: number; -} - export interface StatsCollectionContext { logger: Logger | Console; version: string; } export type StatsGetterConfig = UnencryptedStatsGetterConfig | EncryptedStatsGetterConfig; -export type ClusterDetailsGetter = {}> = ( +export type ClusterDetailsGetter = ( config: StatsCollectionConfig, - context: StatsCollectionContext & CustomContext + context: StatsCollectionContext ) => Promise; -export type StatsGetter< - CustomContext extends Record = {}, - T extends BasicStatsPayload = BasicStatsPayload -> = ( +export type StatsGetter = ( clustersDetails: ClusterDetails[], config: StatsCollectionConfig, - context: StatsCollectionContext & CustomContext + context: StatsCollectionContext ) => Promise; -export type LicenseGetter = {}> = ( - clustersDetails: ClusterDetails[], - config: StatsCollectionConfig, - context: StatsCollectionContext & CustomContext -) => Promise<{ [clusterUuid: string]: ESLicense | undefined }>; -export interface CollectionConfig< - CustomContext extends Record = {}, - T extends BasicStatsPayload = BasicStatsPayload -> { +export interface CollectionStrategyConfig { title: string; priority: number; - esCluster: ILegacyClusterClient; - esClientGetter: () => IClusterClient | undefined; // --> by now we know that the client getter will return the IClusterClient but we assure that through a code check - soServiceGetter: () => SavedObjectsServiceStart | undefined; // --> by now we know that the service getter will return the SavedObjectsServiceStart but we assure that through a code check - statsGetter: StatsGetter; - clusterDetailsGetter: ClusterDetailsGetter; - licenseGetter: LicenseGetter; - customContext?: CustomContext; + statsGetter: StatsGetter; + clusterDetailsGetter: ClusterDetailsGetter; } -export interface Collection< - CustomContext extends Record = {}, - T extends BasicStatsPayload = BasicStatsPayload -> { - customContext?: CustomContext; - statsGetter: StatsGetter; - licenseGetter: LicenseGetter; - clusterDetailsGetter: ClusterDetailsGetter; - esCluster: ILegacyClusterClient; - esClientGetter: () => IClusterClient | undefined; // the collection could still return undefined for the es client getter. - soServiceGetter: () => SavedObjectsServiceStart | undefined; // the collection could still return undefined for the Saved Objects Service getter. +export interface CollectionStrategy { + statsGetter: StatsGetter; + clusterDetailsGetter: ClusterDetailsGetter; title: string; } diff --git a/src/plugins/telemetry_management_section/jest.config.js b/src/plugins/telemetry_management_section/jest.config.js new file mode 100644 index 00000000000000..a38fa84b08afcb --- /dev/null +++ b/src/plugins/telemetry_management_section/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/telemetry_management_section'], +}; diff --git a/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap b/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap index b1921452354d2d..cad06255ffe981 100644 --- a/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap +++ b/src/plugins/telemetry_management_section/public/components/__snapshots__/telemetry_management_section.test.tsx.snap @@ -316,6 +316,7 @@ exports[`TelemetryManagementSectionComponent renders null because allowChangingO "basePath": "", "get": [Function], "prepend": [Function], + "publicBaseUrl": undefined, "remove": [Function], "serverBasePath": "", }, diff --git a/src/plugins/tile_map/jest.config.js b/src/plugins/tile_map/jest.config.js new file mode 100644 index 00000000000000..9a89247b4f782e --- /dev/null +++ b/src/plugins/tile_map/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/tile_map'], +}; diff --git a/src/plugins/ui_actions/jest.config.js b/src/plugins/ui_actions/jest.config.js new file mode 100644 index 00000000000000..3a7de575ea248d --- /dev/null +++ b/src/plugins/ui_actions/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/ui_actions'], +}; diff --git a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts index 3a598b547e3432..3111a0b55084ca 100644 --- a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts +++ b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.test.ts @@ -20,25 +20,31 @@ import { EuiContextMenuPanelDescriptor } from '@elastic/eui'; import { buildContextMenuForActions } from './build_eui_context_menu_panels'; import { Action, createAction } from '../actions'; +import { PresentableGrouping } from '../util'; const createTestAction = ({ type, dispayName, order, + grouping = undefined, }: { type?: string; dispayName: string; order?: number; + grouping?: PresentableGrouping; }) => createAction({ type: type as any, // mapping doesn't matter for this test getDisplayName: () => dispayName, order, execute: async () => {}, + grouping, }); const resultMapper = (panel: EuiContextMenuPanelDescriptor) => ({ - items: panel.items ? panel.items.map((item) => ({ name: item.name })) : [], + items: panel.items + ? panel.items.map((item) => ({ name: item.isSeparator ? 'SEPARATOR' : item.name })) + : [], }); test('sorts items in DESC order by "order" field first, then by display name', async () => { @@ -237,3 +243,197 @@ test('hides items behind in "More" submenu if there are more than 4 actions', as ] `); }); + +test('separates grouped items from main items with a separator', async () => { + const actions = [ + createTestAction({ + dispayName: 'Foo 1', + }), + createTestAction({ + dispayName: 'Foo 2', + }), + createTestAction({ + dispayName: 'Foo 3', + }), + createTestAction({ + dispayName: 'Foo 4', + grouping: [ + { + id: 'testGroup', + getDisplayName: () => 'Test group', + }, + ], + }), + ]; + const menu = await buildContextMenuForActions({ + actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + }); + + expect(menu.map(resultMapper)).toMatchInlineSnapshot(` + Array [ + Object { + "items": Array [ + Object { + "name": "Foo 1", + }, + Object { + "name": "Foo 2", + }, + Object { + "name": "Foo 3", + }, + Object { + "name": "SEPARATOR", + }, + Object { + "name": "Foo 4", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Foo 4", + }, + ], + }, + ] + `); +}); + +test('separates multiple groups each with its own separator', async () => { + const actions = [ + createTestAction({ + dispayName: 'Foo 1', + }), + createTestAction({ + dispayName: 'Foo 2', + }), + createTestAction({ + dispayName: 'Foo 3', + }), + createTestAction({ + dispayName: 'Foo 4', + grouping: [ + { + id: 'testGroup', + getDisplayName: () => 'Test group', + }, + ], + }), + createTestAction({ + dispayName: 'Foo 5', + grouping: [ + { + id: 'testGroup2', + getDisplayName: () => 'Test group 2', + }, + ], + }), + ]; + const menu = await buildContextMenuForActions({ + actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + }); + + expect(menu.map(resultMapper)).toMatchInlineSnapshot(` + Array [ + Object { + "items": Array [ + Object { + "name": "Foo 1", + }, + Object { + "name": "Foo 2", + }, + Object { + "name": "Foo 3", + }, + Object { + "name": "SEPARATOR", + }, + Object { + "name": "Foo 4", + }, + Object { + "name": "SEPARATOR", + }, + Object { + "name": "Foo 5", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Foo 4", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Foo 5", + }, + ], + }, + ] + `); +}); + +test('does not add separator for first grouping if there are no main items', async () => { + const actions = [ + createTestAction({ + dispayName: 'Foo 4', + grouping: [ + { + id: 'testGroup', + getDisplayName: () => 'Test group', + }, + ], + }), + createTestAction({ + dispayName: 'Foo 5', + grouping: [ + { + id: 'testGroup2', + getDisplayName: () => 'Test group 2', + }, + ], + }), + ]; + const menu = await buildContextMenuForActions({ + actions: actions.map((action) => ({ action, context: {}, trigger: 'TEST' as any })), + }); + + expect(menu.map(resultMapper)).toMatchInlineSnapshot(` + Array [ + Object { + "items": Array [ + Object { + "name": "Foo 4", + }, + Object { + "name": "SEPARATOR", + }, + Object { + "name": "Foo 5", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Foo 4", + }, + ], + }, + Object { + "items": Array [ + Object { + "name": "Foo 5", + }, + ], + }, + ] + `); +}); diff --git a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx index c7efb6dad326d9..63586ca3da1f75 100644 --- a/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx +++ b/src/plugins/ui_actions/public/context_menu/build_eui_context_menu_panels.tsx @@ -201,10 +201,12 @@ export async function buildContextMenuForActions({ for (const panel of Object.values(panels)) { if (panel._level === 0) { - panels.mainMenu.items.push({ - isSeparator: true, - key: panel.id + '__separator', - }); + if (panels.mainMenu.items.length > 0) { + panels.mainMenu.items.push({ + isSeparator: true, + key: panel.id + '__separator', + }); + } if (panel.items.length > 3) { panels.mainMenu.items.push({ name: panel.title || panel.id, diff --git a/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx b/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx index 80a8668a8a5b6f..9684c14a9987cd 100644 --- a/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx +++ b/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx @@ -186,7 +186,6 @@ export function openContextMenu( closePopover={onClose} panelPaddingSize="none" anchorPosition="downRight" - ownFocus={true} > (triggerId: T, action: UiActionsActionDefinition | Action) => void; + readonly addTriggerAction: (triggerId: T, action: UiActionsActionDefinition | Action) => void; // (undocumented) readonly attachAction: (triggerId: T, actionId: string) => void; readonly clear: () => void; @@ -248,21 +248,21 @@ export class UiActionsService { readonly executionService: UiActionsExecutionService; readonly fork: () => UiActionsService; // (undocumented) - readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">; + readonly getAction: >(id: string) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">; // Warning: (ae-forgotten-export) The symbol "TriggerContract" needs to be exported by the entry point index.d.ts // // (undocumented) readonly getTrigger: (triggerId: T) => TriggerContract; // (undocumented) - readonly getTriggerActions: (triggerId: T) => Action[]; + readonly getTriggerActions: (triggerId: T) => Action[]; // (undocumented) - readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; + readonly getTriggerCompatibleActions: (triggerId: T, context: TriggerContextMapping[T]) => Promise[]>; // (undocumented) readonly hasAction: (actionId: string) => boolean; // Warning: (ae-forgotten-export) The symbol "ActionContext" needs to be exported by the entry point index.d.ts // // (undocumented) - readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION">; + readonly registerAction: >(definition: A) => Action, "" | "ACTION_VISUALIZE_FIELD" | "ACTION_VISUALIZE_GEO_FIELD" | "ACTION_VISUALIZE_LENS_FIELD" | "ACTION_GLOBAL_APPLY_FILTER" | "ACTION_SELECT_RANGE" | "ACTION_VALUE_CLICK" | "ACTION_CUSTOMIZE_PANEL" | "ACTION_ADD_PANEL" | "openInspector" | "deletePanel" | "editPanel" | "togglePanel" | "replacePanel" | "clonePanel" | "addToFromLibrary" | "unlinkFromLibrary" | "ACTION_LIBRARY_NOTIFICATION" | "ACTION_EXPORT_CSV">; // (undocumented) readonly registerTrigger: (trigger: Trigger) => void; // Warning: (ae-forgotten-export) The symbol "TriggerRegistry" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/url_forwarding/jest.config.js b/src/plugins/url_forwarding/jest.config.js new file mode 100644 index 00000000000000..9dcbfccfcf90ad --- /dev/null +++ b/src/plugins/url_forwarding/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/url_forwarding'], +}; diff --git a/src/plugins/usage_collection/README.md b/src/plugins/usage_collection/README.md index 5e6ed901c76474..85c910cd09bf14 100644 --- a/src/plugins/usage_collection/README.md +++ b/src/plugins/usage_collection/README.md @@ -140,6 +140,98 @@ export function registerMyPluginUsageCollector( } ``` +## Tracking interactions with incrementCounter +There are several ways to collect data that can provide insight into how users +use your plugin or specific features. For tracking user interactions the +`SavedObjectsRepository` provided by Core provides a useful `incrementCounter` +method which can be used to increment one or more counter fields in a +document. Examples of interactions include tracking: + - the number of API calls + - the number of times users installed and uninstalled the sample datasets + +When using `incrementCounter` for collecting usage data, you need to ensure +that usage collection happens on a best-effort basis and doesn't +negatively affect your plugin or users (see the example): + - Swallow any exceptions thrown from the incrementCounter method and log + a message in development. + - Don't block your application on the incrementCounter method (e.g. + don't use `await`) + - Set the `refresh` option to false to prevent unecessary index refreshes + which slows down Elasticsearch performance + + +Note: for brevity the following example does not follow Kibana's conventions +for structuring your plugin code. +```ts +// src/plugins/dashboard/server/plugin.ts + +import { PluginInitializerContext, Plugin, CoreStart, CoreSetup } from '../../src/core/server'; + +export class DashboardPlugin implements Plugin { + private readonly logger: Logger; + private readonly isDevEnvironment: boolean; + + constructor(initializerContext: PluginInitializerContext) { + this.logger = initializerContext.logger.get(); + this.isDevEnvironment = initializerContext.env.cliArgs.dev; + } + public setup(core) { + // Register a saved object type to store our usage counters + core.savedObjects.registerType({ + // Don't expose this saved object type via the saved objects HTTP API + hidden: true, + mappings: { + // Since we're not querying or aggregating over our counter documents + // we don't define any fields. + dynamic: false, + properties: {}, + }, + name: 'dashboard_usage_counters', + namespaceType: 'single', + }); + } + public start(core) { + const repository = core.savedObjects.createInternalRepository(['dashboard_usage_counters']); + // Initialize all the counter fields to 0 when our plugin starts + // NOTE: Usage collection happens on a best-effort basis, so we don't + // `await` the promise returned by `incrementCounter` and we swallow any + // exceptions in production. + repository + .incrementCounter('dashboard_usage_counters', 'dashboard_usage_counters', [ + 'apiCalls', + 'settingToggled', + ], {refresh: false, initialize: true}) + .catch((e) => (this.isDevEnvironment ? this.logger.error(e) : e)); + + const router = core.http.createRouter(); + + router.post( + { + path: `api/v1/dashboard/counters/{counter}`, + validate: { + params: schema.object({ + counter: schema.oneOf([schema.literal('apiCalls'), schema.literal('settingToggled')]), + }), + }, + }, + async (context, request, response) => { + request.params.id + + // NOTE: Usage collection happens on a best-effort basis, so we don't + // `await` the promise returned by `incrementCounter` and we swallow any + // exceptions in production. + repository + .incrementCounter('dashboard_usage_counters', 'dashboard_usage_counters', [ + counter + ], {refresh: false}) + .catch((e) => (this.isDevEnvironement ? this.logger.error(e) : e)); + + return response.ok(); + } + ); + } +} + ## Schema Field The `schema` field is a proscribed data model assists with detecting changes in usage collector payloads. To define the collector schema add a schema field that specifies every possible field reported when registering the collector. Whenever the `schema` field is set or changed please run `node scripts/telemetry_check.js --fix` to update the stored schema json files. @@ -200,7 +292,6 @@ export const myCollector = makeUsageCollector({ }, }); ``` - ## Update the telemetry payload and telemetry cluster field mappings There is a module in the telemetry service that creates the payload of data that gets sent up to the telemetry cluster. @@ -237,27 +328,22 @@ There are a few ways you can test that your usage collector is working properly. # UI Metric app -The UI metrics implementation in its current state is not useful. We are working on improving the implementation to enable teams to use the data to visualize and gather information from what is being reported. Please refer to the telemetry team if you are interested in adding ui_metrics to your plugin. +UI_metric is deprecated in favor of UI Counters. -**Until a better implementation is introduced, please defer from adding any new ui metrics.** +# UI Counters ## Purpose -The purpose of the UI Metric app is to provide a tool for gathering data on how users interact with -various UIs within Kibana. It's useful for gathering _aggregate_ information, e.g. "How many times -has Button X been clicked" or "How many times has Page Y been viewed". +UI Counters provides instrumentation in the UI to count triggered events such as component loaded, button clicked, or counting when an event occurs. It's useful for gathering _aggregate_ information, e.g. "How many times has Button X been clicked" or "How many times has Page Y been viewed". With some finagling, it's even possible to add more meaning to the info you gather, such as "How many visualizations were created in less than 5 minutes". -### What it doesn't do - -The UI Metric app doesn't gather any metadata around a user interaction, e.g. the user's identity, -the name of a dashboard they've viewed, or the timestamp of the interaction. +The events have a per day granularity. ## How to use it -To track a user interaction, use the `reportUiStats` method exposed by the plugin `usageCollection` in the public side: +To track a user interaction, use the `usageCollection.reportUiCounter` method exposed by the plugin `usageCollection` in the public side: 1. Similarly to the server-side usage collection, make sure `usageCollection` is in your optional Plugins: @@ -273,34 +359,49 @@ To track a user interaction, use the `reportUiStats` method exposed by the plugi ```ts // public/plugin.ts + import { METRIC_TYPE } from '@kbn/analytics'; + class Plugin { setup(core, { usageCollection }) { if (usageCollection) { // Call the following method as many times as you want to report an increase in the count for this event - usageCollection.reportUiStats(``, usageCollection.METRIC_TYPE.CLICK, ``); + usageCollection.reportUiCounter(``, METRIC_TYPE.CLICK, ``); } } } ``` -Metric Types: +### Metric Types: -- `METRIC_TYPE.CLICK` for tracking clicks `trackMetric(METRIC_TYPE.CLICK, 'my_button_clicked');` -- `METRIC_TYPE.LOADED` for a component load or page load `trackMetric(METRIC_TYPE.LOADED', 'my_component_loaded');` -- `METRIC_TYPE.COUNT` for a tracking a misc count `trackMetric(METRIC_TYPE.COUNT', 'my_counter', });` +- `METRIC_TYPE.CLICK` for tracking clicks. +- `METRIC_TYPE.LOADED` for a component load, a page load, or a request load. +- `METRIC_TYPE.COUNT` is the generic counter for miscellaneous events. Call this function whenever you would like to track a user interaction within your app. The function -accepts two arguments, `metricType` and `eventNames`. These should be underscore-delimited strings. -For example, to track the `my_event` metric in the app `my_app` call `trackUiMetric(METRIC_TYPE.*, 'my_event)`. +accepts three arguments, `AppName`, `metricType` and `eventNames`. These should be underscore-delimited strings. That's all you need to do! -To track multiple metrics within a single request, provide an array of events, e.g. `trackMetric(METRIC_TYPE.*, ['my_event1', 'my_event2', 'my_event3'])`. +### Reporting multiple events at once + +To track multiple metrics within a single request, provide an array of events + +``` +usageCollection.reportUiCounter(``, METRIC_TYPE.CLICK, [``, ``]); +``` + +### Increamenting counter by more than 1 + +To track an event occurance more than once in the same call, provide a 4th argument to the `reportUiCounter` function: + +``` +usageCollection.reportUiCounter(``, METRIC_TYPE.CLICK, ``, 3); +``` ### Disallowed characters -The colon character (`:`) should not be used in app name or event names. Colons play -a special role in how metrics are stored as saved objects. +The colon character (`:`) should not be used in the app name. Colons play +a special role for `appName` in how metrics are stored as saved objects. ### Tracking timed interactions @@ -311,34 +412,7 @@ measure interactions that take less than 1 minute, 1-5 minutes, 5-20 minutes, an To track these interactions, you'd use the timed length of the interaction to determine whether to use a `eventName` of `create_vis_1m`, `create_vis_5m`, `create_vis_20m`, or `create_vis_infinity`. -## How it works - -Under the hood, your app and metric type will be stored in a saved object of type `user-metric` and the -ID `ui-metric:my_app:my_metric`. This saved object will have a `count` property which will be incremented -every time the above URI is hit. - -These saved objects are automatically consumed by the stats API and surfaced under the -`ui_metric` namespace. - -```json -{ - "ui_metric": { - "my_app": [ - { - "key": "my_metric", - "value": 3 - } - ] - } -} -``` - -By storing these metrics and their counts as key-value pairs, we can add more metrics without having -to worry about exceeding the 1000-field soft limit in Elasticsearch. - -The only caveat is that it makes it harder to consume in Kibana when analysing each entry in the array separately. In the telemetry team we are working to find a solution to this. - # Routes registered by this plugin -- `/api/ui_metric/report`: Used by `ui_metrics` usage collector instances to report their usage data to the server +- `/api/ui_counters/_report`: Used by `ui_metrics` and `ui_counters` usage collector instances to report their usage data to the server - `/api/stats`: Get the metrics and usage ([details](./server/routes/stats/README.md)) diff --git a/src/plugins/usage_collection/jest.config.js b/src/plugins/usage_collection/jest.config.js new file mode 100644 index 00000000000000..89b7fc70fd620e --- /dev/null +++ b/src/plugins/usage_collection/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/usage_collection'], +}; diff --git a/src/plugins/usage_collection/public/mocks.ts b/src/plugins/usage_collection/public/mocks.ts index cc2cfcfd8f6613..a538c5af0fc322 100644 --- a/src/plugins/usage_collection/public/mocks.ts +++ b/src/plugins/usage_collection/public/mocks.ts @@ -24,7 +24,7 @@ export type Setup = jest.Mocked; const createSetupContract = (): Setup => { const setupContract: Setup = { allowTrackUserAgent: jest.fn(), - reportUiStats: jest.fn(), + reportUiCounter: jest.fn(), METRIC_TYPE, __LEGACY: { appChanged: jest.fn(), diff --git a/src/plugins/usage_collection/public/plugin.ts b/src/plugins/usage_collection/public/plugin.ts index 79faa9a102909f..77c85968584c9b 100644 --- a/src/plugins/usage_collection/public/plugin.ts +++ b/src/plugins/usage_collection/public/plugin.ts @@ -31,7 +31,7 @@ import { import { reportApplicationUsage } from './services/application_usage'; export interface PublicConfigType { - uiMetric: { + uiCounters: { enabled: boolean; debug: boolean; }; @@ -39,7 +39,7 @@ export interface PublicConfigType { export interface UsageCollectionSetup { allowTrackUserAgent: (allow: boolean) => void; - reportUiStats: Reporter['reportUiStats']; + reportUiCounter: Reporter['reportUiCounter']; METRIC_TYPE: typeof METRIC_TYPE; __LEGACY: { /** @@ -53,7 +53,7 @@ export interface UsageCollectionSetup { } export interface UsageCollectionStart { - reportUiStats: Reporter['reportUiStats']; + reportUiCounter: Reporter['reportUiCounter']; METRIC_TYPE: typeof METRIC_TYPE; } @@ -73,7 +73,7 @@ export class UsageCollectionPlugin implements Plugin { this.trackUserAgent = allow; }, - reportUiStats: this.reporter.reportUiStats, + reportUiCounter: this.reporter.reportUiCounter, METRIC_TYPE, __LEGACY: { appChanged: (appId) => this.legacyAppId$.next(appId), @@ -98,7 +98,7 @@ export class UsageCollectionPlugin implements Plugin { }); }); - describe('formatForBulkUpload', () => { - it('should use the default formatter', () => { - const fetchOutput = { testPass: 100 }; - const collector = new Collector(logger, { - type: 'my_test_collector', - isReady: () => false, - fetch: () => fetchOutput, - }); - expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ - type: 'my_test_collector', - payload: fetchOutput, - }); - }); - - it('should use a custom formatter', () => { - const fetchOutput = { testPass: 100 }; - const collector = new Collector(logger, { - type: 'my_test_collector', - isReady: () => false, - fetch: () => fetchOutput, - formatForBulkUpload: (a) => ({ type: 'other_value', payload: { nested: a } }), - }); - expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ - type: 'other_value', - payload: { nested: fetchOutput }, - }); - }); - - it("should use UsageCollector's default formatter", () => { - const fetchOutput = { testPass: 100 }; - const collector = new UsageCollector(logger, { - type: 'my_test_collector', - isReady: () => false, - fetch: () => fetchOutput, - schema: { testPass: { type: 'long' } }, - }); - expect(collector.formatForBulkUpload(fetchOutput)).toStrictEqual({ - type: 'kibana_stats', - payload: { usage: { my_test_collector: fetchOutput } }, - }); - }); - }); - describe('schema TS validations', () => { // These tests below are used to ensure types inference is working as expected. // We don't intend to test any logic as such, just the relation between the types in `fetch` and `schema`. diff --git a/src/plugins/usage_collection/server/collector/collector.ts b/src/plugins/usage_collection/server/collector/collector.ts index 797fdaa06a620a..8e86bc3d1cd264 100644 --- a/src/plugins/usage_collection/server/collector/collector.ts +++ b/src/plugins/usage_collection/server/collector/collector.ts @@ -26,8 +26,6 @@ import { KibanaRequest, } from 'src/core/server'; -export type CollectorFormatForBulkUpload = (result: T) => { type: string; payload: U }; - export type AllowedSchemaNumberTypes = 'long' | 'integer' | 'short' | 'byte' | 'double' | 'float'; export type AllowedSchemaTypes = AllowedSchemaNumberTypes | 'keyword' | 'text' | 'boolean' | 'date'; @@ -87,7 +85,7 @@ export type CollectorFetchMethod< TReturn, ExtraOptions extends object = {} > = ( - this: Collector & ExtraOptions, // Specify the context of `this` for this.log and others to become available + this: Collector & ExtraOptions, // Specify the context of `this` for this.log and others to become available context: CollectorFetchContext ) => Promise | TReturn; @@ -108,7 +106,6 @@ export type CollectorOptionsFetchExtendedContext< export type CollectorOptions< TFetchReturn = unknown, - UFormatBulkUploadPayload = TFetchReturn, // TODO: Once we remove bulk_uploader's dependency on usageCollection, we'll be able to remove this type WithKibanaRequest extends boolean = boolean, ExtraOptions extends object = {} > = { @@ -130,13 +127,6 @@ export type CollectorOptions< * @param collectorFetchContext {@link CollectorFetchContext} */ fetch: CollectorFetchMethod; - /** - * A hook for allowing the fetched data payload to be organized into a typed - * data model for internal bulk upload. See defaultFormatterForBulkUpload for - * a generic example. - * @deprecated Used only by the Legacy Monitoring collection (to be removed in 8.0) - */ - formatForBulkUpload?: CollectorFormatForBulkUpload; } & ExtraOptions & (WithKibanaRequest extends true // If enforced to true via Types, the config must be enforced ? { @@ -146,28 +136,16 @@ export type CollectorOptions< extendFetchContext?: CollectorOptionsFetchExtendedContext; }); -export class Collector< - TFetchReturn, - UFormatBulkUploadPayload = TFetchReturn, - ExtraOptions extends object = {} -> { +export class Collector { public readonly extendFetchContext: CollectorOptionsFetchExtendedContext; - public readonly type: CollectorOptions['type']; - public readonly init?: CollectorOptions['init']; + public readonly type: CollectorOptions['type']; + public readonly init?: CollectorOptions['init']; public readonly fetch: CollectorFetchMethod; - public readonly isReady: CollectorOptions['isReady']; - private readonly _formatForBulkUpload?: CollectorFormatForBulkUpload< - TFetchReturn, - UFormatBulkUploadPayload - >; - /* - * @param {Object} logger - logger object - * @param {String} options.type - property name as the key for the data - * @param {Function} options.init (optional) - initialization function - * @param {Function} options.fetch - function to query data - * @param {Function} options.formatForBulkUpload - optional - * @param {Function} options.isReady - method that returns a boolean or Promise of a boolean to indicate the collector is ready to report data - * @param {Function} options.rest - optional other properties + public readonly isReady: CollectorOptions['isReady']; + /** + * @private Constructor of a Collector. It should be called via the CollectorSet factory methods: `makeStatsCollector` and `makeUsageCollector` + * @param log {@link Logger} + * @param collectorDefinition {@link CollectorOptions} */ constructor( public readonly log: Logger, @@ -175,11 +153,10 @@ export class Collector< type, init, fetch, - formatForBulkUpload, isReady, extendFetchContext = {}, ...options - }: CollectorOptions + }: CollectorOptions ) { if (type === undefined) { throw new Error('Collector must be instantiated with a options.type string property'); @@ -200,21 +177,5 @@ export class Collector< this.fetch = fetch; this.isReady = typeof isReady === 'function' ? isReady : () => true; this.extendFetchContext = extendFetchContext; - this._formatForBulkUpload = formatForBulkUpload; - } - - public formatForBulkUpload(result: TFetchReturn) { - if (this._formatForBulkUpload) { - return this._formatForBulkUpload(result); - } else { - return this.defaultFormatterForBulkUpload(result); - } - } - - protected defaultFormatterForBulkUpload(result: TFetchReturn) { - return { - type: this.type, - payload: (result as unknown) as UFormatBulkUploadPayload, - }; } } diff --git a/src/plugins/usage_collection/server/collector/collector_set.test.ts b/src/plugins/usage_collection/server/collector/collector_set.test.ts index fc17ce131430cb..90a69043e06352 100644 --- a/src/plugins/usage_collection/server/collector/collector_set.test.ts +++ b/src/plugins/usage_collection/server/collector/collector_set.test.ts @@ -20,7 +20,7 @@ import { noop } from 'lodash'; import { Collector } from './collector'; import { CollectorSet } from './collector_set'; -import { UsageCollector, UsageCollectorOptions } from './usage_collector'; +import { UsageCollector } from './usage_collector'; import { elasticsearchServiceMock, loggingSystemMock, @@ -163,29 +163,6 @@ describe('CollectorSet', () => { }, ]); }); - - it('should infer the types from the implementations of fetch and formatForBulkUpload', async () => { - const collectors = new CollectorSet({ logger }); - collectors.registerCollector( - new Collector(logger, { - type: 'MY_TEST_COLLECTOR', - fetch: () => ({ test: 1 }), - formatForBulkUpload: (result) => ({ - type: 'MY_TEST_COLLECTOR', - payload: { test: result.test * 2 }, - }), - isReady: () => true, - }) - ); - - const result = await collectors.bulkFetch(mockCallCluster, mockEsClient, mockSoClient, req); - expect(result).toStrictEqual([ - { - type: 'MY_TEST_COLLECTOR', - result: { test: 1 }, // It matches the return of `fetch`. `formatForBulkUpload` is used later on - }, - ]); - }); }); describe('toApiFieldNames', () => { @@ -253,29 +230,6 @@ describe('CollectorSet', () => { }); }); - describe('isUsageCollector', () => { - const collectorOptions: UsageCollectorOptions = { - type: 'MY_TEST_COLLECTOR', - fetch: () => ({ test: 1 }), - isReady: () => true, - schema: { test: { type: 'long' } }, - }; - - it('returns true only for UsageCollector instances', () => { - const collectors = new CollectorSet({ logger }); - const usageCollector = new UsageCollector(logger, collectorOptions); - const collector = new Collector(logger, collectorOptions); - const randomClass = new (class Random {})(); - expect(collectors.isUsageCollector(usageCollector)).toEqual(true); - expect(collectors.isUsageCollector(collector)).toEqual(false); - expect(collectors.isUsageCollector(randomClass)).toEqual(false); - expect(collectors.isUsageCollector({})).toEqual(false); - expect(collectors.isUsageCollector(null)).toEqual(false); - expect(collectors.isUsageCollector('')).toEqual(false); - expect(collectors.isUsageCollector(void 0)).toEqual(false); - }); - }); - describe('makeStatsCollector', () => { const collectorSet = new CollectorSet({ logger }); test('TS should hide kibanaRequest when not opted-in', () => { @@ -402,7 +356,7 @@ describe('CollectorSet', () => { return { test: kibanaRequest ? 1 : 0 }; }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, false>({ + collectorSet.makeUsageCollector<{ test: number }, false>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -415,7 +369,7 @@ describe('CollectorSet', () => { kibanaRequest: false, }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, false>({ + collectorSet.makeUsageCollector<{ test: number }, false>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -442,7 +396,7 @@ describe('CollectorSet', () => { kibanaRequest: true, }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, false>({ + collectorSet.makeUsageCollector<{ test: number }, false>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -460,7 +414,7 @@ describe('CollectorSet', () => { test('TS should allow `true` when types explicitly declare `true` and do not allow `false` or undefined', () => { // false is the default when at least 1 type is specified - collectorSet.makeUsageCollector<{ test: number }, unknown, true>({ + collectorSet.makeUsageCollector<{ test: number }, true>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -472,7 +426,7 @@ describe('CollectorSet', () => { kibanaRequest: true, }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, true>({ + collectorSet.makeUsageCollector<{ test: number }, true>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -485,7 +439,7 @@ describe('CollectorSet', () => { kibanaRequest: false, }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, true>({ + collectorSet.makeUsageCollector<{ test: number }, true>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -498,7 +452,7 @@ describe('CollectorSet', () => { kibanaRequest: undefined, }, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, true>({ + collectorSet.makeUsageCollector<{ test: number }, true>({ type: 'MY_TEST_COLLECTOR', isReady: () => true, schema: { test: { type: 'long' } }, @@ -509,7 +463,7 @@ describe('CollectorSet', () => { // @ts-expect-error extendFetchContext: {}, }); - collectorSet.makeUsageCollector<{ test: number }, unknown, true>( + collectorSet.makeUsageCollector<{ test: number }, true>( // @ts-expect-error { type: 'MY_TEST_COLLECTOR', diff --git a/src/plugins/usage_collection/server/collector/collector_set.ts b/src/plugins/usage_collection/server/collector/collector_set.ts index fe4f3536ffed61..3555b05518fdb1 100644 --- a/src/plugins/usage_collection/server/collector/collector_set.ts +++ b/src/plugins/usage_collection/server/collector/collector_set.ts @@ -30,7 +30,6 @@ import { Collector, CollectorOptions } from './collector'; import { UsageCollector, UsageCollectorOptions } from './usage_collector'; type AnyCollector = Collector; -type AnyUsageCollector = UsageCollector; interface CollectorSetConfig { logger: Logger; @@ -38,6 +37,22 @@ interface CollectorSetConfig { collectors?: AnyCollector[]; } +/** + * Public interface of the CollectorSet (makes it easier to mock only the public methods) + */ +export type CollectorSetPublic = Pick< + CollectorSet, + | 'makeStatsCollector' + | 'makeUsageCollector' + | 'registerCollector' + | 'getCollectorByType' + | 'areAllCollectorsReady' + | 'bulkFetch' + | 'bulkFetchUsage' + | 'toObject' + | 'toApiFieldNames' +>; + export class CollectorSet { private _waitingForAllCollectorsTimestamp?: number; private readonly logger: Logger; @@ -55,13 +70,12 @@ export class CollectorSet { */ public makeStatsCollector = < TFetchReturn, - TFormatForBulkUpload, WithKibanaRequest extends boolean, ExtraOptions extends object = {} >( - options: CollectorOptions + options: CollectorOptions ) => { - return new Collector(this.logger, options); + return new Collector(this.logger, options); }; /** @@ -70,32 +84,23 @@ export class CollectorSet { */ public makeUsageCollector = < TFetchReturn, - TFormatForBulkUpload = { usage: { [key: string]: TFetchReturn } }, // TODO: Right now, users will need to explicitly claim `true` for TS to allow `kibanaRequest` usage. // If we improve `telemetry-check-tools` so plugins do not need to specify TFetchReturn, // we'll be able to remove the type defaults and TS will successfully infer the config value as provided in JS. WithKibanaRequest extends boolean = false, ExtraOptions extends object = {} >( - options: UsageCollectorOptions< - TFetchReturn, - TFormatForBulkUpload, - WithKibanaRequest, - ExtraOptions - > + options: UsageCollectorOptions ) => { - return new UsageCollector( - this.logger, - options - ); + return new UsageCollector(this.logger, options); }; /** * Registers a collector to be used when collecting all the usage and stats data * @param collector Collector to be added to the set (previously created via `makeUsageCollector` or `makeStatsCollector`) */ - public registerCollector = ( - collector: Collector + public registerCollector = ( + collector: Collector ) => { // check instanceof if (!(collector instanceof Collector)) { @@ -118,10 +123,6 @@ export class CollectorSet { return [...this.collectors.values()].find((c) => c.type === type); }; - public isUsageCollector = (x: AnyUsageCollector | any): x is AnyUsageCollector => { - return x instanceof UsageCollector; - }; - public areAllCollectorsReady = async (collectorSet: CollectorSet = this) => { if (!(collectorSet instanceof CollectorSet)) { throw new Error( @@ -205,7 +206,7 @@ export class CollectorSet { /* * @return {new CollectorSet} */ - public getFilteredCollectorSet = (filter: (col: AnyCollector) => boolean) => { + private getFilteredCollectorSet = (filter: (col: AnyCollector) => boolean) => { const filtered = [...this.collectors.values()].filter(filter); return this.makeCollectorSetFromArray(filtered); }; @@ -267,16 +268,6 @@ export class CollectorSet { }, {}); }; - // TODO: remove - public map = (mapFn: any) => { - return [...this.collectors.values()].map(mapFn); - }; - - // TODO: remove - public some = (someFn: any) => { - return [...this.collectors.values()].some(someFn); - }; - private makeCollectorSetFromArray = (collectors: AnyCollector[]) => { return new CollectorSet({ logger: this.logger, diff --git a/src/plugins/usage_collection/server/collector/index.ts b/src/plugins/usage_collection/server/collector/index.ts index 2f8be884a8a7b0..1bbb9951546903 100644 --- a/src/plugins/usage_collection/server/collector/index.ts +++ b/src/plugins/usage_collection/server/collector/index.ts @@ -17,7 +17,7 @@ * under the License. */ -export { CollectorSet } from './collector_set'; +export { CollectorSet, CollectorSetPublic } from './collector_set'; export { Collector, AllowedSchemaTypes, diff --git a/src/plugins/usage_collection/server/collector/usage_collector.ts b/src/plugins/usage_collection/server/collector/usage_collector.ts index a042ea113d5cc8..57f6d109d6d202 100644 --- a/src/plugins/usage_collection/server/collector/usage_collector.ts +++ b/src/plugins/usage_collection/server/collector/usage_collector.ts @@ -18,43 +18,24 @@ */ import { Logger } from 'src/core/server'; -import { KIBANA_STATS_TYPE } from '../../common/constants'; import { Collector, CollectorOptions } from './collector'; // Enforce the `schema` property for UsageCollectors export type UsageCollectorOptions< TFetchReturn = unknown, - UFormatBulkUploadPayload = { usage: { [key: string]: TFetchReturn } }, WithKibanaRequest extends boolean = false, ExtraOptions extends object = {} -> = CollectorOptions & - Required, 'schema'>>; +> = CollectorOptions & + Required, 'schema'>>; -export class UsageCollector< +export class UsageCollector extends Collector< TFetchReturn, - UFormatBulkUploadPayload = { usage: { [key: string]: TFetchReturn } }, - ExtraOptions extends object = {} -> extends Collector { + ExtraOptions +> { constructor( - public readonly log: Logger, - collectorOptions: UsageCollectorOptions< - TFetchReturn, - UFormatBulkUploadPayload, - any, - ExtraOptions - > + log: Logger, + collectorOptions: UsageCollectorOptions ) { super(log, collectorOptions); } - - protected defaultFormatterForBulkUpload(result: TFetchReturn) { - return { - type: KIBANA_STATS_TYPE, - payload: ({ - usage: { - [this.type]: result, - }, - } as unknown) as UFormatBulkUploadPayload, - }; - } } diff --git a/src/plugins/usage_collection/server/config.ts b/src/plugins/usage_collection/server/config.ts index 09b0e05025e639..d701aeb9f1166d 100644 --- a/src/plugins/usage_collection/server/config.ts +++ b/src/plugins/usage_collection/server/config.ts @@ -22,7 +22,7 @@ import { PluginConfigDescriptor } from 'src/core/server'; import { DEFAULT_MAXIMUM_WAIT_TIME_FOR_ALL_COLLECTORS_IN_S } from '../common/constants'; export const configSchema = schema.object({ - uiMetric: schema.object({ + uiCounters: schema.object({ enabled: schema.boolean({ defaultValue: true }), debug: schema.boolean({ defaultValue: schema.contextRef('dev') }), }), @@ -36,10 +36,12 @@ export type ConfigType = TypeOf; export const config: PluginConfigDescriptor = { schema: configSchema, deprecations: ({ renameFromRoot }) => [ - renameFromRoot('ui_metric.enabled', 'usageCollection.uiMetric.enabled'), - renameFromRoot('ui_metric.debug', 'usageCollection.uiMetric.debug'), + renameFromRoot('ui_metric.enabled', 'usageCollection.uiCounters.enabled'), + renameFromRoot('ui_metric.debug', 'usageCollection.uiCounters.debug'), + renameFromRoot('usageCollection.uiMetric.enabled', 'usageCollection.uiCounters.enabled'), + renameFromRoot('usageCollection.uiMetric.debug', 'usageCollection.uiCounters.debug'), ], exposeToBrowser: { - uiMetric: true, + uiCounters: true, }, }; diff --git a/src/plugins/usage_collection/server/plugin.ts b/src/plugins/usage_collection/server/plugin.ts index 9a8876446d01eb..31e4f0ea253ea8 100644 --- a/src/plugins/usage_collection/server/plugin.ts +++ b/src/plugins/usage_collection/server/plugin.ts @@ -27,10 +27,10 @@ import { Plugin, } from 'src/core/server'; import { ConfigType } from './config'; -import { CollectorSet } from './collector'; +import { CollectorSet, CollectorSetPublic } from './collector'; import { setupRoutes } from './routes'; -export type UsageCollectionSetup = CollectorSet; +export type UsageCollectionSetup = CollectorSetPublic; export class UsageCollectionPlugin implements Plugin { private readonly logger: Logger; private savedObjects?: ISavedObjectsRepository; diff --git a/src/plugins/usage_collection/server/report/schema.ts b/src/plugins/usage_collection/server/report/schema.ts index a8081e3e320e92..965d2dc96ff00b 100644 --- a/src/plugins/usage_collection/server/report/schema.ts +++ b/src/plugins/usage_collection/server/report/schema.ts @@ -21,7 +21,7 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { METRIC_TYPE } from '@kbn/analytics'; export const reportSchema = schema.object({ - reportVersion: schema.maybe(schema.literal(1)), + reportVersion: schema.maybe(schema.oneOf([schema.literal(1), schema.literal(2)])), userAgent: schema.maybe( schema.recordOf( schema.string(), @@ -33,7 +33,7 @@ export const reportSchema = schema.object({ }) ) ), - uiStatsMetrics: schema.maybe( + uiCounter: schema.maybe( schema.recordOf( schema.string(), schema.object({ @@ -45,12 +45,7 @@ export const reportSchema = schema.object({ ]), appName: schema.string(), eventName: schema.string(), - stats: schema.object({ - min: schema.number(), - sum: schema.number(), - max: schema.number(), - avg: schema.number(), - }), + total: schema.number(), }) ) ), diff --git a/src/plugins/usage_collection/server/report/store_report.test.ts b/src/plugins/usage_collection/server/report/store_report.test.ts index d8327eb834e12c..6095b419cee843 100644 --- a/src/plugins/usage_collection/server/report/store_report.test.ts +++ b/src/plugins/usage_collection/server/report/store_report.test.ts @@ -21,12 +21,16 @@ import { savedObjectsRepositoryMock } from '../../../../core/server/mocks'; import { storeReport } from './store_report'; import { ReportSchemaType } from './schema'; import { METRIC_TYPE } from '@kbn/analytics'; +import moment from 'moment'; describe('store_report', () => { + const momentTimestamp = moment(); + const date = momentTimestamp.format('DDMMYYYY'); + test('stores report for all types of data', async () => { const savedObjectClient = savedObjectsRepositoryMock.create(); const report: ReportSchemaType = { - reportVersion: 1, + reportVersion: 2, userAgent: { 'key-user-agent': { key: 'test-key', @@ -35,18 +39,20 @@ describe('store_report', () => { userAgent: 'test-user-agent', }, }, - uiStatsMetrics: { - any: { + uiCounter: { + eventOneId: { + key: 'test-key', + type: METRIC_TYPE.LOADED, + appName: 'test-app-name', + eventName: 'test-event-name', + total: 1, + }, + eventTwoId: { key: 'test-key', type: METRIC_TYPE.CLICK, appName: 'test-app-name', eventName: 'test-event-name', - stats: { - min: 1, - max: 2, - avg: 1.5, - sum: 3, - }, + total: 2, }, }, application_usage: { @@ -66,12 +72,25 @@ describe('store_report', () => { overwrite: true, } ); - expect(savedObjectClient.incrementCounter).toHaveBeenCalledWith( + expect(savedObjectClient.incrementCounter).toHaveBeenNthCalledWith( + 1, 'ui-metric', 'test-app-name:test-event-name', - 'count' + [{ fieldName: 'count', incrementBy: 3 }] + ); + expect(savedObjectClient.incrementCounter).toHaveBeenNthCalledWith( + 2, + 'ui-counter', + `test-app-name:${date}:${METRIC_TYPE.LOADED}:test-event-name`, + [{ fieldName: 'count', incrementBy: 1 }] + ); + expect(savedObjectClient.incrementCounter).toHaveBeenNthCalledWith( + 3, + 'ui-counter', + `test-app-name:${date}:${METRIC_TYPE.CLICK}:test-event-name`, + [{ fieldName: 'count', incrementBy: 2 }] ); - expect(savedObjectClient.bulkCreate).toHaveBeenCalledWith([ + expect(savedObjectClient.bulkCreate).toHaveBeenNthCalledWith(1, [ { type: 'application_usage_transactional', attributes: { @@ -89,7 +108,7 @@ describe('store_report', () => { const report: ReportSchemaType = { reportVersion: 1, userAgent: void 0, - uiStatsMetrics: void 0, + uiCounter: void 0, application_usage: void 0, }; await storeReport(savedObjectClient, report); diff --git a/src/plugins/usage_collection/server/report/store_report.ts b/src/plugins/usage_collection/server/report/store_report.ts index d9aac23fd1ff09..fbba937cf9c6c1 100644 --- a/src/plugins/usage_collection/server/report/store_report.ts +++ b/src/plugins/usage_collection/server/report/store_report.ts @@ -17,50 +17,76 @@ * under the License. */ -import { ISavedObjectsRepository, SavedObject } from 'src/core/server'; +import { ISavedObjectsRepository } from 'src/core/server'; +import moment from 'moment'; +import { chain, sumBy } from 'lodash'; import { ReportSchemaType } from './schema'; export async function storeReport( internalRepository: ISavedObjectsRepository, report: ReportSchemaType ) { - const uiStatsMetrics = report.uiStatsMetrics ? Object.entries(report.uiStatsMetrics) : []; + const uiCounters = report.uiCounter ? Object.entries(report.uiCounter) : []; const userAgents = report.userAgent ? Object.entries(report.userAgent) : []; const appUsage = report.application_usage ? Object.entries(report.application_usage) : []; - const timestamp = new Date(); - return Promise.all<{ saved_objects: Array> }>([ + + const momentTimestamp = moment(); + const timestamp = momentTimestamp.toDate(); + const date = momentTimestamp.format('DDMMYYYY'); + + return Promise.allSettled([ + // User Agent ...userAgents.map(async ([key, metric]) => { const { userAgent } = metric; const savedObjectId = `${key}:${userAgent}`; - return { - saved_objects: [ - await internalRepository.create( - 'ui-metric', - { count: 1 }, - { - id: savedObjectId, - overwrite: true, - } - ), - ], - }; + return await internalRepository.create( + 'ui-metric', + { count: 1 }, + { + id: savedObjectId, + overwrite: true, + } + ); }), - ...uiStatsMetrics.map(async ([key, metric]) => { - const { appName, eventName } = metric; - const savedObjectId = `${appName}:${eventName}`; - return { - saved_objects: [ - await internalRepository.incrementCounter('ui-metric', savedObjectId, 'count'), - ], - }; + // Deprecated UI metrics, Use data from UI Counters. + ...chain(report.uiCounter) + .groupBy((e) => `${e.appName}:${e.eventName}`) + .entries() + .map(([savedObjectId, metric]) => { + return { + savedObjectId, + incrementBy: sumBy(metric, 'total'), + }; + }) + .map(async ({ savedObjectId, incrementBy }) => { + return await internalRepository.incrementCounter('ui-metric', savedObjectId, [ + { fieldName: 'count', incrementBy }, + ]); + }) + .value(), + // UI Counters + ...uiCounters.map(async ([key, metric]) => { + const { appName, eventName, total, type } = metric; + const savedObjectId = `${appName}:${date}:${type}:${eventName}`; + return [ + await internalRepository.incrementCounter('ui-counter', savedObjectId, [ + { fieldName: 'count', incrementBy: total }, + ]), + ]; }), - appUsage.length - ? internalRepository.bulkCreate( + // Application Usage + ...[ + (async () => { + if (!appUsage.length) return []; + const { saved_objects: savedObjects } = await internalRepository.bulkCreate( appUsage.map(([appId, metric]) => ({ type: 'application_usage_transactional', attributes: { ...metric, appId, timestamp }, })) - ) - : { saved_objects: [] }, + ); + + return savedObjects; + })(), + ], ]); } diff --git a/src/plugins/usage_collection/server/routes/index.ts b/src/plugins/usage_collection/server/routes/index.ts index 15d408ff3723b7..f0947f495c4b94 100644 --- a/src/plugins/usage_collection/server/routes/index.ts +++ b/src/plugins/usage_collection/server/routes/index.ts @@ -25,7 +25,7 @@ import { } from 'src/core/server'; import { Observable } from 'rxjs'; import { CollectorSet } from '../collector'; -import { registerUiMetricRoute } from './report_metrics'; +import { registerUiCountersRoute } from './ui_counters'; import { registerStatsRoute } from './stats'; export function setupRoutes({ @@ -50,6 +50,6 @@ export function setupRoutes({ metrics: MetricsServiceSetup; overallStatus$: Observable; }) { - registerUiMetricRoute(router, getSavedObjects); + registerUiCountersRoute(router, getSavedObjects); registerStatsRoute({ router, ...rest }); } diff --git a/src/plugins/usage_collection/server/routes/report_metrics.ts b/src/plugins/usage_collection/server/routes/report_metrics.ts deleted file mode 100644 index 590c3340697b80..00000000000000 --- a/src/plugins/usage_collection/server/routes/report_metrics.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { schema } from '@kbn/config-schema'; -import { IRouter, ISavedObjectsRepository } from 'src/core/server'; -import { storeReport, reportSchema } from '../report'; - -export function registerUiMetricRoute( - router: IRouter, - getSavedObjects: () => ISavedObjectsRepository | undefined -) { - router.post( - { - path: '/api/ui_metric/report', - validate: { - body: schema.object({ - report: reportSchema, - }), - }, - }, - async (context, req, res) => { - const { report } = req.body; - try { - const internalRepository = getSavedObjects(); - if (!internalRepository) { - throw Error(`The saved objects client hasn't been initialised yet`); - } - await storeReport(internalRepository, report); - return res.ok({ body: { status: 'ok' } }); - } catch (error) { - return res.ok({ body: { status: 'fail' } }); - } - } - ); -} diff --git a/src/plugins/usage_collection/server/routes/ui_counters.ts b/src/plugins/usage_collection/server/routes/ui_counters.ts new file mode 100644 index 00000000000000..5428c9cbbf3f78 --- /dev/null +++ b/src/plugins/usage_collection/server/routes/ui_counters.ts @@ -0,0 +1,51 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { schema } from '@kbn/config-schema'; +import { IRouter, ISavedObjectsRepository } from 'src/core/server'; +import { storeReport, reportSchema } from '../report'; + +export function registerUiCountersRoute( + router: IRouter, + getSavedObjects: () => ISavedObjectsRepository | undefined +) { + router.post( + { + path: '/api/ui_counters/_report', + validate: { + body: schema.object({ + report: reportSchema, + }), + }, + }, + async (context, req, res) => { + const { report } = req.body; + try { + const internalRepository = getSavedObjects(); + if (!internalRepository) { + throw Error(`The saved objects client hasn't been initialised yet`); + } + await storeReport(internalRepository, report); + return res.ok({ body: { status: 'ok' } }); + } catch (error) { + return res.ok({ body: { status: 'fail' } }); + } + } + ); +} diff --git a/src/plugins/usage_collection/server/usage_collection.mock.ts b/src/plugins/usage_collection/server/usage_collection.mock.ts index 05dae8fa851646..fb0a2e56ff3c9f 100644 --- a/src/plugins/usage_collection/server/usage_collection.mock.ts +++ b/src/plugins/usage_collection/server/usage_collection.mock.ts @@ -37,13 +37,6 @@ export const createUsageCollectionSetupMock = () => { bulkFetch: jest.fn(), bulkFetchUsage: jest.fn(), getCollectorByType: jest.fn(), - getFilteredCollectorSet: jest.fn(), - // @ts-ignore jest.fn doesn't play nice with type guards - isUsageCollector: jest.fn(), - makeCollectorSetFromArray: jest.fn(), - map: jest.fn(), - maximumWaitTimeForAllCollectorsInS: 0, - some: jest.fn(), toApiFieldNames: jest.fn(), toObject: jest.fn(), makeStatsCollector: jest.fn().mockImplementation((cfg) => new Collector(logger, cfg)), diff --git a/src/plugins/vis_default_editor/jest.config.js b/src/plugins/vis_default_editor/jest.config.js new file mode 100644 index 00000000000000..618f9734fb54c5 --- /dev/null +++ b/src/plugins/vis_default_editor/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_default_editor'], +}; diff --git a/src/plugins/vis_default_editor/public/components/agg_select.tsx b/src/plugins/vis_default_editor/public/components/agg_select.tsx index 9d45b72d35cc04..689cc52691bb6b 100644 --- a/src/plugins/vis_default_editor/public/components/agg_select.tsx +++ b/src/plugins/vis_default_editor/public/components/agg_select.tsx @@ -77,15 +77,15 @@ function DefaultEditorAggSelect({ } const helpLink = value && aggHelpLink && ( - - + + - - + + ); const errors = aggError ? [aggError] : []; diff --git a/src/plugins/vis_type_markdown/jest.config.js b/src/plugins/vis_type_markdown/jest.config.js new file mode 100644 index 00000000000000..bff1b12641c92e --- /dev/null +++ b/src/plugins/vis_type_markdown/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_markdown'], +}; diff --git a/src/plugins/vis_type_metric/jest.config.js b/src/plugins/vis_type_metric/jest.config.js new file mode 100644 index 00000000000000..5c50fc5f4368ec --- /dev/null +++ b/src/plugins/vis_type_metric/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_metric'], +}; diff --git a/src/plugins/vis_type_metric/public/metric_vis_type.ts b/src/plugins/vis_type_metric/public/metric_vis_type.ts index 1c5afd396c2c31..f7c74e324053e6 100644 --- a/src/plugins/vis_type_metric/public/metric_vis_type.ts +++ b/src/plugins/vis_type_metric/public/metric_vis_type.ts @@ -30,7 +30,7 @@ export const createMetricVisTypeDefinition = (): BaseVisTypeOptions => ({ title: i18n.translate('visTypeMetric.metricTitle', { defaultMessage: 'Metric' }), icon: 'visMetric', description: i18n.translate('visTypeMetric.metricDescription', { - defaultMessage: 'Display a calculation as a single number', + defaultMessage: 'Show a calculation as a single number.', }), toExpressionAst, visConfig: { diff --git a/src/plugins/vis_type_table/jest.config.js b/src/plugins/vis_type_table/jest.config.js new file mode 100644 index 00000000000000..3aa02089df0122 --- /dev/null +++ b/src/plugins/vis_type_table/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_table'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/vis_type_table/public/table_vis_type.ts b/src/plugins/vis_type_table/public/table_vis_type.ts index bfc7abac02895a..8546886e8350ea 100644 --- a/src/plugins/vis_type_table/public/table_vis_type.ts +++ b/src/plugins/vis_type_table/public/table_vis_type.ts @@ -29,11 +29,11 @@ import { TableVisParams } from './types'; export const tableVisTypeDefinition: BaseVisTypeOptions = { name: 'table', title: i18n.translate('visTypeTable.tableVisTitle', { - defaultMessage: 'Data Table', + defaultMessage: 'Data table', }), icon: 'visTable', description: i18n.translate('visTypeTable.tableVisDescription', { - defaultMessage: 'Display values in a table', + defaultMessage: 'Display data in rows and columns.', }), getSupportedTriggers: () => { return [VIS_EVENT_TO_TRIGGER.filter]; diff --git a/src/plugins/vis_type_tagcloud/jest.config.js b/src/plugins/vis_type_tagcloud/jest.config.js new file mode 100644 index 00000000000000..5419ca05cca846 --- /dev/null +++ b/src/plugins/vis_type_tagcloud/jest.config.js @@ -0,0 +1,25 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_tagcloud'], + testRunner: 'jasmine2', +}; diff --git a/src/plugins/vis_type_tagcloud/public/tag_cloud_type.ts b/src/plugins/vis_type_tagcloud/public/tag_cloud_type.ts index d4c37649f949d5..71d4408ddc7676 100644 --- a/src/plugins/vis_type_tagcloud/public/tag_cloud_type.ts +++ b/src/plugins/vis_type_tagcloud/public/tag_cloud_type.ts @@ -27,13 +27,13 @@ import { toExpressionAst } from './to_ast'; export const tagCloudVisTypeDefinition = { name: 'tagcloud', - title: i18n.translate('visTypeTagCloud.vis.tagCloudTitle', { defaultMessage: 'Tag Cloud' }), + title: i18n.translate('visTypeTagCloud.vis.tagCloudTitle', { defaultMessage: 'Tag cloud' }), icon: 'visTagCloud', getSupportedTriggers: () => { return [VIS_EVENT_TO_TRIGGER.filter]; }, description: i18n.translate('visTypeTagCloud.vis.tagCloudDescription', { - defaultMessage: 'A group of words, sized according to their importance', + defaultMessage: 'Display word frequency with font size.', }), visConfig: { defaults: { diff --git a/src/plugins/vis_type_tagcloud/public/to_ast.ts b/src/plugins/vis_type_tagcloud/public/to_ast.ts index 876784cc101405..69b55b58982578 100644 --- a/src/plugins/vis_type_tagcloud/public/to_ast.ts +++ b/src/plugins/vis_type_tagcloud/public/to_ast.ts @@ -44,9 +44,14 @@ export const toExpressionAst = (vis: Vis, params: BuildPipeli }); const schemas = getVisSchemas(vis, params); + const { scale, orientation, minFontSize, maxFontSize, showLabel } = vis.params; const tagcloud = buildExpressionFunction('tagcloud', { - ...vis.params, + scale, + orientation, + minFontSize, + maxFontSize, + showLabel, metric: prepareDimension(schemas.metric[0]), }); diff --git a/src/plugins/vis_type_timelion/jest.config.js b/src/plugins/vis_type_timelion/jest.config.js new file mode 100644 index 00000000000000..eae12936427f4a --- /dev/null +++ b/src/plugins/vis_type_timelion/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_timelion'], +}; diff --git a/src/plugins/vis_type_timelion/public/__snapshots__/to_ast.test.ts.snap b/src/plugins/vis_type_timelion/public/__snapshots__/to_ast.test.ts.snap index 9e32a6c4ae17cb..7635e5214795ad 100644 --- a/src/plugins/vis_type_timelion/public/__snapshots__/to_ast.test.ts.snap +++ b/src/plugins/vis_type_timelion/public/__snapshots__/to_ast.test.ts.snap @@ -19,3 +19,23 @@ Object { "type": "expression", } `; + +exports[`timelion vis toExpressionAst function should not escape single quotes 1`] = ` +Object { + "chain": Array [ + Object { + "arguments": Object { + "expression": Array [ + ".es(index=my*,timefield=\\"date\\",split='test field:3',metric='avg:value')", + ], + "interval": Array [ + "auto", + ], + }, + "function": "timelion_vis", + "type": "function", + }, + ], + "type": "expression", +} +`; diff --git a/src/plugins/vis_type_timelion/public/timelion_vis_type.tsx b/src/plugins/vis_type_timelion/public/timelion_vis_type.tsx index a5425478e46acf..5512fdccd5e7e3 100644 --- a/src/plugins/vis_type_timelion/public/timelion_vis_type.tsx +++ b/src/plugins/vis_type_timelion/public/timelion_vis_type.tsx @@ -42,7 +42,7 @@ export function getTimelionVisDefinition(dependencies: TimelionVisDependencies) title: 'Timelion', icon: 'visTimelion', description: i18n.translate('timelion.timelionDescription', { - defaultMessage: 'Build time-series using functional expressions', + defaultMessage: 'Show time series data on a graph.', }), visConfig: { defaults: { diff --git a/src/plugins/vis_type_timelion/public/to_ast.test.ts b/src/plugins/vis_type_timelion/public/to_ast.test.ts index 8a9d4b83f94d20..f2030e4b83c197 100644 --- a/src/plugins/vis_type_timelion/public/to_ast.test.ts +++ b/src/plugins/vis_type_timelion/public/to_ast.test.ts @@ -37,4 +37,10 @@ describe('timelion vis toExpressionAst function', () => { const actual = toExpressionAst(vis); expect(actual).toMatchSnapshot(); }); + + it('should not escape single quotes', () => { + vis.params.expression = `.es(index=my*,timefield="date",split='test field:3',metric='avg:value')`; + const actual = toExpressionAst(vis); + expect(actual).toMatchSnapshot(); + }); }); diff --git a/src/plugins/vis_type_timelion/public/to_ast.ts b/src/plugins/vis_type_timelion/public/to_ast.ts index 7044bbf4e58318..535e8e8fe0f77e 100644 --- a/src/plugins/vis_type_timelion/public/to_ast.ts +++ b/src/plugins/vis_type_timelion/public/to_ast.ts @@ -21,14 +21,12 @@ import { buildExpression, buildExpressionFunction } from '../../expressions/publ import { Vis } from '../../visualizations/public'; import { TimelionExpressionFunctionDefinition, TimelionVisParams } from './timelion_vis_fn'; -const escapeString = (data: string): string => { - return data.replace(/\\/g, `\\\\`).replace(/'/g, `\\'`); -}; - export const toExpressionAst = (vis: Vis) => { + const { expression, interval } = vis.params; + const timelion = buildExpressionFunction('timelion_vis', { - expression: escapeString(vis.params.expression), - interval: escapeString(vis.params.interval), + expression, + interval, }); const ast = buildExpression([timelion]); diff --git a/src/plugins/vis_type_timeseries/common/constants.ts b/src/plugins/vis_type_timeseries/common/constants.ts index 92dfc6d5229571..019afcba600005 100644 --- a/src/plugins/vis_type_timeseries/common/constants.ts +++ b/src/plugins/vis_type_timeseries/common/constants.ts @@ -19,3 +19,8 @@ export const MAX_BUCKETS_SETTING = 'metrics:max_buckets'; export const INDEXES_SEPARATOR = ','; +export const AUTO_INTERVAL = 'auto'; +export const ROUTES = { + VIS_DATA: '/api/metrics/vis/data', + FIELDS: '/api/metrics/fields', +}; diff --git a/src/plugins/vis_type_timeseries/common/panel_types.ts b/src/plugins/vis_type_timeseries/common/panel_types.ts index 6a9420ab6e4c16..6aed5528c23a58 100644 --- a/src/plugins/vis_type_timeseries/common/panel_types.ts +++ b/src/plugins/vis_type_timeseries/common/panel_types.ts @@ -17,11 +17,11 @@ * under the License. */ -export const PANEL_TYPES = { - TABLE: 'table', - GAUGE: 'gauge', - MARKDOWN: 'markdown', - TOP_N: 'top_n', - TIMESERIES: 'timeseries', - METRIC: 'metric', -}; +export enum PANEL_TYPES { + TABLE = 'table', + GAUGE = 'gauge', + MARKDOWN = 'markdown', + TOP_N = 'top_n', + TIMESERIES = 'timeseries', + METRIC = 'metric', +} diff --git a/src/plugins/vis_type_timeseries/common/types.ts b/src/plugins/vis_type_timeseries/common/types.ts index 8973060848b411..f8e1b740fc646e 100644 --- a/src/plugins/vis_type_timeseries/common/types.ts +++ b/src/plugins/vis_type_timeseries/common/types.ts @@ -19,8 +19,37 @@ import { TypeOf } from '@kbn/config-schema'; import { metricsItems, panel, seriesItems, visPayloadSchema } from './vis_schema'; +import { PANEL_TYPES } from './panel_types'; +import { TimeseriesUIRestrictions } from './ui_restrictions'; export type SeriesItemsSchema = TypeOf; export type MetricsItemsSchema = TypeOf; export type PanelSchema = TypeOf; export type VisPayload = TypeOf; + +interface PanelData { + id: string; + label: string; + data: Array<[number, number]>; +} + +// series data is not fully typed yet +interface SeriesData { + [key: string]: { + annotations: { + [key: string]: unknown[]; + }; + id: string; + series: PanelData[]; + error?: unknown; + }; +} + +export type TimeseriesVisData = SeriesData & { + type: PANEL_TYPES; + uiRestrictions: TimeseriesUIRestrictions; + /** + * series array is responsible only for "table" vis type + */ + series?: unknown[]; +}; diff --git a/src/plugins/vis_type_timeseries/common/ui_restrictions.ts b/src/plugins/vis_type_timeseries/common/ui_restrictions.ts index e2911eb2d70e3b..1be428f1b93544 100644 --- a/src/plugins/vis_type_timeseries/common/ui_restrictions.ts +++ b/src/plugins/vis_type_timeseries/common/ui_restrictions.ts @@ -63,7 +63,7 @@ export const DEFAULT_UI_RESTRICTION: UIRestrictions = { * @constant * @public */ -export const limitOfSeries = { +export const limitOfSeries: Partial> = { [PANEL_TYPES.GAUGE]: 1, [PANEL_TYPES.METRIC]: 2, }; diff --git a/src/plugins/vis_type_timeseries/common/vis_schema.ts b/src/plugins/vis_type_timeseries/common/vis_schema.ts index 9ec5ae1424ae3c..a90fa752ad7dc7 100644 --- a/src/plugins/vis_type_timeseries/common/vis_schema.ts +++ b/src/plugins/vis_type_timeseries/common/vis_schema.ts @@ -175,6 +175,7 @@ export const seriesItems = schema.object({ separate_axis: numberIntegerOptional, seperate_axis: numberIntegerOptional, series_index_pattern: stringOptionalNullable, + series_max_bars: numberIntegerOptional, series_time_field: stringOptionalNullable, series_interval: stringOptionalNullable, series_drop_last_bucket: numberIntegerOptional, @@ -229,6 +230,7 @@ export const panel = schema.object({ ignore_global_filters: numberOptional, ignore_global_filter: numberOptional, index_pattern: stringRequired, + max_bars: numberIntegerOptional, interval: stringRequired, isModelInvalid: schema.maybe(schema.boolean()), legend_position: stringOptionalNullable, @@ -251,7 +253,14 @@ export const panel = schema.object({ ), time_field: stringOptionalNullable, time_range_mode: stringOptionalNullable, - type: stringRequired, + type: schema.oneOf([ + schema.literal('table'), + schema.literal('gauge'), + schema.literal('markdown'), + schema.literal('top_n'), + schema.literal('timeseries'), + schema.literal('metric'), + ]), }); export const visPayloadSchema = schema.object({ @@ -267,7 +276,6 @@ export const visPayloadSchema = schema.object({ }) ), }), - savedObjectId: schema.maybe(schema.string()), timerange: schema.object({ timezone: stringRequired, min: stringRequired, diff --git a/src/plugins/vis_type_timeseries/jest.config.js b/src/plugins/vis_type_timeseries/jest.config.js new file mode 100644 index 00000000000000..16c001e5981889 --- /dev/null +++ b/src/plugins/vis_type_timeseries/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_timeseries'], +}; diff --git a/src/plugins/vis_type_timeseries/public/application/components/aggs/field_select.js b/src/plugins/vis_type_timeseries/public/application/components/aggs/field_select.js index a4168fd1398f13..b1ff749494b10f 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/aggs/field_select.js +++ b/src/plugins/vis_type_timeseries/public/application/components/aggs/field_select.js @@ -91,7 +91,7 @@ function FieldSelectUi({ } FieldSelectUi.defaultProps = { - indexPattern: '*', + indexPattern: '', disabled: false, restrict: [], placeholder: i18n.translate('visTypeTimeseries.fieldSelect.selectFieldPlaceholder', { diff --git a/src/plugins/vis_type_timeseries/public/application/components/annotations_editor.js b/src/plugins/vis_type_timeseries/public/application/components/annotations_editor.js index 34132e5f727167..3d38aa72fc271b 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/annotations_editor.js +++ b/src/plugins/vis_type_timeseries/public/application/components/annotations_editor.js @@ -43,13 +43,14 @@ import { EuiCode, EuiText, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; function newAnnotation() { return { id: uuid.v1(), color: '#F00', - index_pattern: '*', + index_pattern: '', time_field: '@timestamp', icon: 'fa-tag', ignore_global_filters: 1, @@ -84,7 +85,7 @@ export class AnnotationsEditor extends Component { const defaults = { fields: '', template: '', - index_pattern: '*', + index_pattern: '', query_string: { query: '', language: getDefaultQueryLanguage() }, }; const model = { ...defaults, ...row }; @@ -100,6 +101,8 @@ export class AnnotationsEditor extends Component { const htmlId = htmlIdGenerator(model.id); const handleAdd = collectionActions.handleAdd.bind(null, this.props, newAnnotation); const handleDelete = collectionActions.handleDelete.bind(null, this.props, model); + const defaultIndexPattern = this.props.model.default_index_pattern; + return (
@@ -120,14 +123,22 @@ export class AnnotationsEditor extends Component { label={ } + helpText={ + defaultIndexPattern && + !model.index_pattern && + i18n.translate('visTypeTimeseries.annotationsEditor.searchByDefaultIndex', { + defaultMessage: 'Default index pattern is used. To query all indexes use *', + }) + } fullWidth > diff --git a/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js b/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js index 85f31285df69bb..e976519dfe635e 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js +++ b/src/plugins/vis_type_timeseries/public/application/components/index_pattern.js @@ -19,7 +19,7 @@ import { get } from 'lodash'; import PropTypes from 'prop-types'; -import React, { useContext } from 'react'; +import React, { useContext, useCallback } from 'react'; import { htmlIdGenerator, EuiFieldText, @@ -27,7 +27,10 @@ import { EuiFlexItem, EuiFormRow, EuiComboBox, + EuiRange, + EuiIconTip, EuiText, + EuiFormLabel, } from '@elastic/eui'; import { FieldSelect } from './aggs/field_select'; import { createSelectHandler } from './lib/create_select_handler'; @@ -35,19 +38,20 @@ import { createTextHandler } from './lib/create_text_handler'; import { YesNo } from './yes_no'; import { KBN_FIELD_TYPES } from '../../../../../plugins/data/public'; import { FormValidationContext } from '../contexts/form_validation_context'; -import { - isGteInterval, - validateReInterval, - isAutoInterval, - AUTO_INTERVAL, -} from './lib/get_interval'; +import { isGteInterval, validateReInterval, isAutoInterval } from './lib/get_interval'; import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; import { TIME_RANGE_DATA_MODES, TIME_RANGE_MODE_KEY } from '../../../common/timerange_data_modes'; import { PANEL_TYPES } from '../../../common/panel_types'; import { isTimerangeModeEnabled } from '../lib/check_ui_restrictions'; import { VisDataContext } from '../contexts/vis_data_context'; +import { getUISettings } from '../../services'; +import { AUTO_INTERVAL } from '../../../common/constants'; +import { UI_SETTINGS } from '../../../../data/common'; const RESTRICT_FIELDS = [KBN_FIELD_TYPES.DATE]; +const LEVEL_OF_DETAIL_STEPS = 10; +const LEVEL_OF_DETAIL_MIN_BUCKETS = 1; const validateIntervalValue = (intervalValue) => { const isAutoOrGteInterval = isGteInterval(intervalValue) || isAutoInterval(intervalValue); @@ -65,15 +69,36 @@ const htmlId = htmlIdGenerator(); const isEntireTimeRangeActive = (model, isTimeSeries) => !isTimeSeries && model[TIME_RANGE_MODE_KEY] === TIME_RANGE_DATA_MODES.ENTIRE_TIME_RANGE; -export const IndexPattern = ({ fields, prefix, onChange, disabled, model: _model }) => { +export const IndexPattern = ({ + fields, + prefix, + onChange, + disabled, + model: _model, + allowLevelofDetail, +}) => { + const config = getUISettings(); + const handleSelectChange = createSelectHandler(onChange); const handleTextChange = createTextHandler(onChange); + const timeFieldName = `${prefix}time_field`; const indexPatternName = `${prefix}index_pattern`; const intervalName = `${prefix}interval`; + const maxBarsName = `${prefix}max_bars`; const dropBucketName = `${prefix}drop_last_bucket`; const updateControlValidity = useContext(FormValidationContext); const uiRestrictions = get(useContext(VisDataContext), 'uiRestrictions'); + const maxBarsUiSettings = config.get(UI_SETTINGS.HISTOGRAM_MAX_BARS); + + const handleMaxBarsChange = useCallback( + ({ target }) => { + onChange({ + [maxBarsName]: Math.max(LEVEL_OF_DETAIL_MIN_BUCKETS, target.value), + }); + }, + [onChange, maxBarsName] + ); const timeRangeOptions = [ { @@ -97,10 +122,12 @@ export const IndexPattern = ({ fields, prefix, onChange, disabled, model: _model [indexPatternName]: '*', [intervalName]: AUTO_INTERVAL, [dropBucketName]: 1, + [maxBarsName]: config.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), [TIME_RANGE_MODE_KEY]: timeRangeOptions[0].value, }; const model = { ...defaults, ..._model }; + const isDefaultIndexPatternUsed = model.default_index_pattern && !model[indexPatternName]; const intervalValidation = validateIntervalValue(model[intervalName]); const selectedTimeRangeOption = timeRangeOptions.find( @@ -229,6 +256,77 @@ export const IndexPattern = ({ fields, prefix, onChange, disabled, model: _model + {allowLevelofDetail && ( + + + + {' '} + + } + type="questionInCircle" + /> + + } + > + + + + + + + + + + + + + + + + + + + )}
); }; @@ -245,4 +343,5 @@ IndexPattern.propTypes = { prefix: PropTypes.string, disabled: PropTypes.bool, className: PropTypes.string, + allowLevelofDetail: PropTypes.bool, }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/create_xaxis_formatter.js b/src/plugins/vis_type_timeseries/public/application/components/lib/create_xaxis_formatter.js index fdfb465ae3ffab..75246431daee09 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/create_xaxis_formatter.js +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/create_xaxis_formatter.js @@ -18,18 +18,18 @@ */ import moment from 'moment'; -export function getFormat(interval, rules, dateFormat) { + +function getFormat(interval, rules = []) { for (let i = rules.length - 1; i >= 0; i--) { const rule = rules[i]; if (!rule[0] || interval >= moment.duration(rule[0])) { return rule[1]; } } - return dateFormat; } export function createXaxisFormatter(interval, rules, dateFormat) { return (val) => { - return moment(val).format(getFormat(interval, rules, dateFormat)); + return moment(val).format(getFormat(interval, rules) ?? dateFormat); }; } diff --git a/src/plugins/vis_type_timeseries/public/application/components/lib/get_interval.js b/src/plugins/vis_type_timeseries/public/application/components/lib/get_interval.js index c1d484765f4cbf..f54d52620e67a1 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/lib/get_interval.js +++ b/src/plugins/vis_type_timeseries/public/application/components/lib/get_interval.js @@ -22,8 +22,7 @@ import { get } from 'lodash'; import { search } from '../../../../../../plugins/data/public'; const { parseEsInterval } = search.aggs; import { GTE_INTERVAL_RE } from '../../../../common/interval_regexp'; - -export const AUTO_INTERVAL = 'auto'; +import { AUTO_INTERVAL } from '../../../../common/constants'; export const unitLookup = { s: i18n.translate('visTypeTimeseries.getInterval.secondsLabel', { defaultMessage: 'seconds' }), diff --git a/src/plugins/vis_type_timeseries/public/application/components/markdown_editor.js b/src/plugins/vis_type_timeseries/public/application/components/markdown_editor.js index 904a27dcb23c2a..4b5038b82f4800 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/markdown_editor.js +++ b/src/plugins/vis_type_timeseries/public/application/components/markdown_editor.js @@ -49,12 +49,12 @@ export class MarkdownEditor extends Component { } render() { - const { visData, model, dateFormat } = this.props; + const { visData, model, getConfig } = this.props; if (!visData) { return null; } - + const dateFormat = getConfig('dateFormat'); const series = _.get(visData, `${model.id}.series`, []); const variables = convertSeriesToVars(series, model, dateFormat, this.props.getConfig); const rows = []; @@ -214,6 +214,6 @@ export class MarkdownEditor extends Component { MarkdownEditor.propTypes = { onChange: PropTypes.func, model: PropTypes.object, - dateFormat: PropTypes.string, + getConfig: PropTypes.func, visData: PropTypes.object, }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/no_data.js b/src/plugins/vis_type_timeseries/public/application/components/no_data.js deleted file mode 100644 index 1968f1858a46c0..00000000000000 --- a/src/plugins/vis_type_timeseries/public/application/components/no_data.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import React from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiIcon, EuiSpacer, EuiText } from '@elastic/eui'; - -export function NoDataComponent() { - return ( -
- - -
- ); -} diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config.js b/src/plugins/vis_type_timeseries/public/application/components/panel_config.js index 3b081d8eb7db9e..999127a9eb5562 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/panel_config.js +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config.js @@ -90,6 +90,6 @@ PanelConfig.propTypes = { fields: PropTypes.object, model: PropTypes.object, onChange: PropTypes.func, - dateFormat: PropTypes.string, visData$: PropTypes.object, + getConfig: PropTypes.func, }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config/markdown.js b/src/plugins/vis_type_timeseries/public/application/components/panel_config/markdown.js index 36d0e3a80e227d..ef7aec61a2f0d3 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/panel_config/markdown.js +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config/markdown.js @@ -334,7 +334,6 @@ MarkdownPanelConfigUi.propTypes = { fields: PropTypes.object, model: PropTypes.object, onChange: PropTypes.func, - dateFormat: PropTypes.string, }; export const MarkdownPanelConfig = injectI18n(MarkdownPanelConfigUi); diff --git a/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.js b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.js index 03da52b10f08b5..180411dd13a3d0 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.js +++ b/src/plugins/vis_type_timeseries/public/application/components/panel_config/timeseries.js @@ -193,6 +193,7 @@ class TimeseriesPanelConfigUi extends Component { fields={this.props.fields} model={this.props.model} onChange={this.props.onChange} + allowLevelofDetail={true} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx b/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx new file mode 100644 index 00000000000000..454f6ff855b383 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/timeseries_visualization.tsx @@ -0,0 +1,114 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useCallback, useEffect } from 'react'; + +import { IUiSettingsClient } from 'src/core/public'; +import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; +import { PersistedState } from 'src/plugins/visualizations/public'; + +// @ts-expect-error +import { ErrorComponent } from './error'; +import { TimeseriesVisTypes } from './vis_types'; +import { TimeseriesVisParams } from '../../metrics_fn'; +import { TimeseriesVisData } from '../../../common/types'; + +interface TimeseriesVisualizationProps { + className?: string; + getConfig: IUiSettingsClient['get']; + handlers: IInterpreterRenderHandlers; + model: TimeseriesVisParams; + visData: TimeseriesVisData; + uiState: PersistedState; +} + +function TimeseriesVisualization({ + className = 'tvbVis', + visData, + model, + handlers, + uiState, + getConfig, +}: TimeseriesVisualizationProps) { + const onBrush = useCallback( + (gte: string, lte: string) => { + handlers.event({ + name: 'applyFilter', + data: { + timeFieldName: '*', + filters: [ + { + range: { + '*': { + gte, + lte, + }, + }, + }, + ], + }, + }); + }, + [handlers] + ); + + const handleUiState = useCallback( + (field: string, value: { column: string; order: string }) => { + uiState.set(field, value); + // reload visualization because data might need to be re-fetched + uiState.emit('reload'); + }, + [uiState] + ); + + useEffect(() => { + handlers.done(); + }); + + // Show the error panel + const error = visData[model.id]?.error; + if (error) { + return ( +
+ +
+ ); + } + + const VisComponent = TimeseriesVisTypes[model.type]; + + if (VisComponent) { + return ( + + ); + } + + return
; +} + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { TimeseriesVisualization as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js index 57adecd9d598b2..520ad281576cd3 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js @@ -23,10 +23,8 @@ import * as Rx from 'rxjs'; import { share } from 'rxjs/operators'; import { isEqual, isEmpty, debounce } from 'lodash'; import { VisEditorVisualization } from './vis_editor_visualization'; -import { Visualization } from './visualization'; import { VisPicker } from './vis_picker'; import { PanelConfig } from './panel_config'; -import { createBrushHandler } from '../lib/create_brush_handler'; import { fetchFields } from '../lib/fetch_fields'; import { extractIndexPatterns } from '../../../common/extract_index_patterns'; import { getSavedObjectsClient, getUISettings, getDataStart, getCoreStart } from '../../services'; @@ -49,7 +47,6 @@ export class VisEditor extends Component { visFields: props.visFields, extractedIndexPatterns: [''], }; - this.onBrush = createBrushHandler((data) => props.vis.API.events.applyFilter(data)); this.visDataSubject = new Rx.BehaviorSubject(this.props.visData); this.visData$ = this.visDataSubject.asObservable().pipe(share()); @@ -71,12 +68,6 @@ export class VisEditor extends Component { return this.props.config.get(...args); }; - handleUiState = (field, value) => { - this.props.vis.uiState.set(field, value); - // reload visualization because data might need to be re-fetched - this.props.vis.uiState.emit('reload'); - }; - updateVisState = debounce(() => { this.props.vis.params = this.state.model; this.props.embeddableHandler.reload(); @@ -85,6 +76,19 @@ export class VisEditor extends Component { }); }, VIS_STATE_DEBOUNCE_DELAY); + debouncedFetchFields = debounce( + (extractedIndexPatterns) => { + if (this.abortControllerFetchFields) { + this.abortControllerFetchFields.abort(); + } + this.abortControllerFetchFields = new AbortController(); + + return fetchFields(extractedIndexPatterns, this.abortControllerFetchFields.signal); + }, + VIS_STATE_DEBOUNCE_DELAY, + { leading: true } + ); + handleChange = (partialModel) => { if (isEmpty(partialModel)) { return; @@ -101,16 +105,14 @@ export class VisEditor extends Component { dirty = false; } - if (this.props.isEditorMode) { - const extractedIndexPatterns = extractIndexPatterns(nextModel); - if (!isEqual(this.state.extractedIndexPatterns, extractedIndexPatterns)) { - fetchFields(extractedIndexPatterns).then((visFields) => - this.setState({ - visFields, - extractedIndexPatterns, - }) - ); - } + const extractedIndexPatterns = extractIndexPatterns(nextModel); + if (!isEqual(this.state.extractedIndexPatterns, extractedIndexPatterns)) { + this.debouncedFetchFields(extractedIndexPatterns).then((visFields) => + this.setState({ + visFields, + extractedIndexPatterns, + }) + ); } this.setState({ @@ -141,23 +143,6 @@ export class VisEditor extends Component { }; render() { - if (!this.props.isEditorMode) { - if (!this.props.visParams || !this.props.visData) { - return null; - } - return ( - - ); - } - const { model } = this.state; if (model) { @@ -196,7 +181,6 @@ export class VisEditor extends Component { fields={this.state.visFields} model={model} visData$={this.visData$} - dateFormat={this.props.config.get('dateFormat')} onChange={this.handleChange} getConfig={this.getConfig} /> @@ -211,23 +195,12 @@ export class VisEditor extends Component { } componentDidMount() { - this.props.renderComplete(); - - if (this.props.isEditorMode && this.props.eventEmitter) { - this.props.eventEmitter.on('updateEditor', this.updateModel); - } - } - - componentDidUpdate() { - this.props.renderComplete(); + this.props.eventEmitter.on('updateEditor', this.updateModel); } componentWillUnmount() { this.updateVisState.cancel(); - - if (this.props.isEditorMode && this.props.eventEmitter) { - this.props.eventEmitter.off('updateEditor', this.updateModel); - } + this.props.eventEmitter.off('updateEditor', this.updateModel); } } @@ -241,7 +214,6 @@ VisEditor.propTypes = { visFields: PropTypes.object, renderComplete: PropTypes.func, config: PropTypes.object, - isEditorMode: PropTypes.bool, savedObj: PropTypes.object, timeRange: PropTypes.object, appState: PropTypes.object, diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_editor_visualization.js b/src/plugins/vis_type_timeseries/public/application/components/vis_editor_visualization.js index 9742d817f7c0d2..7893d5ba6d15e5 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_editor_visualization.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_editor_visualization.js @@ -26,8 +26,8 @@ import { convertIntervalIntoUnit, isAutoInterval, isGteInterval, - AUTO_INTERVAL, } from './lib/get_interval'; +import { AUTO_INTERVAL } from '../../../common/constants'; import { PANEL_TYPES } from '../../../common/panel_types'; const MIN_CHART_HEIGHT = 300; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js index 325e9c83727368..5a6d5f39d0c974 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/gauge/vis.js @@ -101,4 +101,8 @@ GaugeVisualization.propTypes = { getConfig: PropTypes.func, }; -export const gauge = visWithSplits(GaugeVisualization); +const gauge = visWithSplits(GaugeVisualization); + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { gauge as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts b/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts new file mode 100644 index 00000000000000..e6104ad08fe9ee --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/index.ts @@ -0,0 +1,68 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { lazy } from 'react'; + +import { IUiSettingsClient } from 'src/core/public'; +import { PersistedState } from 'src/plugins/visualizations/public'; + +import { TimeseriesVisParams } from '../../../metrics_fn'; +import { TimeseriesVisData } from '../../../../common/types'; + +/** + * Lazy load each visualization type, since the only one is presented on the screen at the same time. + * Disable typescript errors since the components are not typed yet. + */ + +// @ts-expect-error +const timeseries = lazy(() => import('./timeseries/vis')); +// @ts-expect-error +const metric = lazy(() => import('./metric/vis')); +// @ts-expect-error +const topN = lazy(() => import('./top_n/vis')); +// @ts-expect-error +const table = lazy(() => import('./table/vis')); +// @ts-expect-error +const gauge = lazy(() => import('./gauge/vis')); +// @ts-expect-error +const markdown = lazy(() => import('./markdown/vis')); + +export const TimeseriesVisTypes: Record> = { + timeseries, + metric, + top_n: topN, + table, + gauge, + markdown, +}; + +export interface TimeseriesVisProps { + model: TimeseriesVisParams; + onBrush: (gte: string, lte: string) => void; + onUiState: ( + field: string, + value: { + column: string; + order: string; + } + ) => void; + uiState: PersistedState; + visData: TimeseriesVisData; + getConfig: IUiSettingsClient['get']; +} diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js index a4e7738e923185..ffc6bf0dda2d4c 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/markdown/vis.js @@ -30,10 +30,10 @@ import { isBackgroundInverted } from '../../../lib/set_is_reversed'; const getMarkdownId = (id) => `markdown-${id}`; -export function MarkdownVisualization(props) { - const { backgroundColor, model, visData, dateFormat } = props; +function MarkdownVisualization(props) { + const { backgroundColor, model, visData, getConfig } = props; const series = get(visData, `${model.id}.series`, []); - const variables = convertSeriesToVars(series, model, dateFormat, props.getConfig); + const variables = convertSeriesToVars(series, model, getConfig('dateFormat'), props.getConfig); const markdownElementId = getMarkdownId(uuid.v1()); const panelBackgroundColor = model.background_color || backgroundColor; @@ -103,6 +103,9 @@ MarkdownVisualization.propTypes = { onBrush: PropTypes.func, onChange: PropTypes.func, visData: PropTypes.object, - dateFormat: PropTypes.string, getConfig: PropTypes.func, }; + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { MarkdownVisualization as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js index 5fe7afe47df9b6..7069a32fa2b50a 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/metric/vis.js @@ -95,4 +95,8 @@ MetricVisualization.propTypes = { getConfig: PropTypes.func, }; -export const metric = visWithSplits(MetricVisualization); +const metric = visWithSplits(MetricVisualization); + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { metric as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/table/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/table/vis.js index 92109e1a374268..a31be694cd172a 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/table/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/table/vis.js @@ -46,7 +46,7 @@ function getColor(rules, colorKey, value) { return color; } -export class TableVis extends Component { +class TableVis extends Component { constructor(props) { super(props); @@ -260,3 +260,7 @@ TableVis.propTypes = { pageNumber: PropTypes.number, getConfig: PropTypes.func, }; + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { TableVis as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/config.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/config.js index 59277257c0c942..25561cfe1dc040 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/config.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/config.js @@ -554,7 +554,7 @@ export const TimeseriesConfig = injectI18n(function (props) { {...props} prefix="series_" disabled={!model.override_index_pattern} - with-interval={true} + allowLevelofDetail={true} /> diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js index f936710bf2b813..b7740b65ef870d 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.js @@ -34,24 +34,19 @@ import { createXaxisFormatter } from '../../lib/create_xaxis_formatter'; import { STACKED_OPTIONS } from '../../../visualizations/constants'; import { getCoreStart } from '../../../../services'; -export class TimeseriesVisualization extends Component { +class TimeseriesVisualization extends Component { static propTypes = { model: PropTypes.object, onBrush: PropTypes.func, visData: PropTypes.object, - dateFormat: PropTypes.string, getConfig: PropTypes.func, }; - xAxisFormatter = (interval) => (val) => { - const { scaledDataFormat, dateFormat } = this.props.visData; - - if (!scaledDataFormat || !dateFormat) { - return val; - } - - const formatter = createXaxisFormatter(interval, scaledDataFormat, dateFormat); + scaledDataFormat = this.props.getConfig('dateFormat:scaled'); + dateFormat = this.props.getConfig('dateFormat'); + xAxisFormatter = (interval) => (val) => { + const formatter = createXaxisFormatter(interval, this.scaledDataFormat, this.dateFormat); return formatter(val); }; @@ -245,3 +240,7 @@ export class TimeseriesVisualization extends Component { ); } } + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { TimeseriesVisualization as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.test.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.test.js new file mode 100644 index 00000000000000..d1c90aaa06fd26 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/timeseries/vis.test.js @@ -0,0 +1,121 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { TimeSeries } from '../../../visualizations/views/timeseries'; +import TimeseriesVisualization from './vis'; +import { setFieldFormats } from '../../../../services'; +import { UI_SETTINGS } from '../../../../../../data/public'; +import { getFieldFormatsRegistry } from '../../../../../../data/public/test_utils'; + +describe('TimeseriesVisualization', () => { + describe('TimeSeries Y-Axis formatted value', () => { + const config = { + [UI_SETTINGS.FORMAT_PERCENT_DEFAULT_PATTERN]: '0.[00]%', + [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0.0b', + }; + const id = 'default'; + const value = 500; + + setFieldFormats( + getFieldFormatsRegistry({ + uiSettings: { get: jest.fn() }, + }) + ); + + const setupTimeSeriesPropsWithFormatters = (...formatters) => { + const series = formatters.map((formatter) => ({ + id, + formatter, + data: [], + })); + + const timeSeriesVisualization = shallow( + config[key]} + model={{ + id, + series, + }} + visData={{ + [id]: { + id, + series, + }, + }} + /> + ); + + return timeSeriesVisualization.find(TimeSeries).props(); + }; + + test('should be byte for single byte series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('byte'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value); + + expect(yAxisFormattedValue).toBe('500B'); + }); + + test('should have custom format for single series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('0.00bitd'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value); + + expect(yAxisFormattedValue).toBe('500.00bit'); + }); + + test('should be the same number for byte and percent series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('byte', 'percent'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value); + + expect(yAxisFormattedValue).toBe(value); + }); + + test('should be the same stringified number for byte and percent series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('byte', 'percent'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value.toString()); + + expect(yAxisFormattedValue).toBe('500'); + }); + + test('should be byte for two byte formatted series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('byte', 'byte'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value); + const firstSeriesFormattedValue = timeSeriesProps.series[0].tickFormat(value); + + expect(firstSeriesFormattedValue).toBe('500B'); + expect(yAxisFormattedValue).toBe(firstSeriesFormattedValue); + }); + + test('should be percent for three percent formatted series', () => { + const timeSeriesProps = setupTimeSeriesPropsWithFormatters('percent', 'percent', 'percent'); + + const yAxisFormattedValue = timeSeriesProps.yAxis[0].tickFormatter(value); + const firstSeriesFormattedValue = timeSeriesProps.series[0].tickFormat(value); + + expect(firstSeriesFormattedValue).toBe('50000%'); + expect(yAxisFormattedValue).toBe(firstSeriesFormattedValue); + }); + }); +}); diff --git a/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js b/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js index 1c2ebb8264ef37..92311b3f33afb8 100644 --- a/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js +++ b/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js @@ -48,7 +48,7 @@ function sortSeries(visData, model) { }, []); } -export function TopNVisualization(props) { +function TopNVisualization(props) { const { backgroundColor, model, visData } = props; const series = sortSeries(visData, model).map((item) => { @@ -111,3 +111,7 @@ TopNVisualization.propTypes = { visData: PropTypes.object, getConfig: PropTypes.func, }; + +// default export required for React.Lazy +// eslint-disable-next-line import/no-default-export +export { TopNVisualization as default }; diff --git a/src/plugins/vis_type_timeseries/public/application/components/visualization.js b/src/plugins/vis_type_timeseries/public/application/components/visualization.js deleted file mode 100644 index 8b8218653f97cc..00000000000000 --- a/src/plugins/vis_type_timeseries/public/application/components/visualization.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import PropTypes from 'prop-types'; -import React from 'react'; -import _ from 'lodash'; - -import { TimeseriesVisualization } from './vis_types/timeseries/vis'; -import { metric } from './vis_types/metric/vis'; -import { TopNVisualization as topN } from './vis_types/top_n/vis'; -import { TableVis as table } from './vis_types/table/vis'; -import { gauge } from './vis_types/gauge/vis'; -import { MarkdownVisualization as markdown } from './vis_types/markdown/vis'; -import { ErrorComponent } from './error'; -import { NoDataComponent } from './no_data'; - -const types = { - timeseries: TimeseriesVisualization, - metric, - top_n: topN, - table, - gauge, - markdown, -}; - -export function Visualization(props) { - const { visData, model } = props; - // Show the error panel - const error = _.get(visData, `${model.id}.error`); - if (error) { - return ( -
- -
- ); - } - - const path = visData.type === 'table' ? 'series' : `${model.id}.series`; - const noData = _.get(visData, path, []).length === 0; - if (noData) { - return ( -
- -
- ); - } - - const component = types[model.type]; - if (component) { - return React.createElement(component, { - dateFormat: props.dateFormat, - backgroundColor: props.backgroundColor, - model: props.model, - onBrush: props.onBrush, - onChange: props.onChange, - onUiState: props.onUiState, - uiState: props.uiState, - visData: visData.type === model.type ? visData : {}, - getConfig: props.getConfig, - }); - } - return
; -} - -Visualization.propTypes = { - backgroundColor: PropTypes.string, - className: PropTypes.string, - model: PropTypes.object, - onBrush: PropTypes.func, - onChange: PropTypes.func, - onUiState: PropTypes.func, - uiState: PropTypes.object, - visData: PropTypes.object, - dateFormat: PropTypes.string, - getConfig: PropTypes.func, -}; - -Visualization.defaultProps = { - className: 'tvbVis', -}; diff --git a/src/plugins/vis_type_timeseries/public/application/editor_controller.js b/src/plugins/vis_type_timeseries/public/application/editor_controller.js index f21b5f947bca79..548bf2623fc1af 100644 --- a/src/plugins/vis_type_timeseries/public/application/editor_controller.js +++ b/src/plugins/vis_type_timeseries/public/application/editor_controller.js @@ -70,7 +70,6 @@ export class EditorController { visParams={this.state.vis.params} timeRange={params.timeRange} renderComplete={() => {}} - isEditorMode={true} appState={params.appState} embeddableHandler={this.embeddableHandler} eventEmitter={this.eventEmitter} diff --git a/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.test.ts b/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.test.ts deleted file mode 100644 index a9568b5be9d3fa..00000000000000 --- a/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.test.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { createBrushHandler } from './create_brush_handler'; -import { ExprVisAPIEvents } from '../../../../visualizations/public'; - -describe('brushHandler', () => { - let onBrush: ReturnType; - let applyFilter: ExprVisAPIEvents['applyFilter']; - - beforeEach(() => { - applyFilter = jest.fn(); - - onBrush = createBrushHandler(applyFilter); - }); - - test('returns brushHandler() should updates timefilter through vis.API.events.applyFilter', () => { - const gte = '2017-01-01T00:00:00Z'; - const lte = '2017-01-01T00:10:00Z'; - - onBrush(gte, lte); - - expect(applyFilter).toHaveBeenCalledWith({ - timeFieldName: '*', - filters: [ - { - range: { '*': { gte: '2017-01-01T00:00:00Z', lte: '2017-01-01T00:10:00Z' } }, - }, - ], - }); - }); -}); diff --git a/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.ts b/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.ts deleted file mode 100644 index 38002c75529523..00000000000000 --- a/src/plugins/vis_type_timeseries/public/application/lib/create_brush_handler.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { ExprVisAPIEvents } from '../../../../visualizations/public'; - -export const createBrushHandler = (applyFilter: ExprVisAPIEvents['applyFilter']) => ( - gte: string, - lte: string -) => { - return applyFilter({ - timeFieldName: '*', - filters: [ - { - range: { - '*': { - gte, - lte, - }, - }, - }, - ], - }); -}; diff --git a/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.js b/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.js index 6dd56a58418c59..a32ab71f363577 100644 --- a/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.js +++ b/src/plugins/vis_type_timeseries/public/application/lib/fetch_fields.js @@ -19,34 +19,40 @@ import { i18n } from '@kbn/i18n'; import { extractIndexPatterns } from '../../../common/extract_index_patterns'; import { getCoreStart } from '../../services'; +import { ROUTES } from '../../../common/constants'; -export async function fetchFields(indexPatterns = ['*']) { +export async function fetchFields(indexPatterns = [], signal) { const patterns = Array.isArray(indexPatterns) ? indexPatterns : [indexPatterns]; try { const indexFields = await Promise.all( - patterns.map((pattern) => { - return getCoreStart().http.get('/api/metrics/fields', { + patterns.map((pattern) => + getCoreStart().http.get(ROUTES.FIELDS, { query: { index: pattern, }, - }); - }) + signal, + }) + ) ); - const fields = patterns.reduce((cumulatedFields, currentPattern, index) => { - return { + + return patterns.reduce( + (cumulatedFields, currentPattern, index) => ({ ...cumulatedFields, [currentPattern]: indexFields[index], - }; - }, {}); - return fields; - } catch (error) { - getCoreStart().notifications.toasts.addDanger({ - title: i18n.translate('visTypeTimeseries.fetchFields.loadIndexPatternFieldsErrorMessage', { - defaultMessage: 'Unable to load index_pattern fields', }), - text: error.message, - }); + {} + ); + } catch (error) { + if (error.name !== 'AbortError') { + getCoreStart().notifications.toasts.addDanger({ + title: i18n.translate('visTypeTimeseries.fetchFields.loadIndexPatternFieldsErrorMessage', { + defaultMessage: 'Unable to load index_pattern fields', + }), + text: error.message, + }); + } } + return []; } export async function fetchIndexPatternFields({ params, fields = {} }) { diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.js b/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.js deleted file mode 100644 index 427ced4dc3f2a9..00000000000000 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -// TODO: Remove bus when action/triggers are available with LegacyPluginApi or metric is converted to Embeddable -import $ from 'jquery'; - -export const ACTIVE_CURSOR = 'ACTIVE_CURSOR'; - -export const eventBus = $({}); diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.ts b/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.ts new file mode 100644 index 00000000000000..59a846aa66a079 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/lib/active_cursor.ts @@ -0,0 +1,23 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Subject } from 'rxjs'; +import { PointerEvent } from '@elastic/charts'; + +export const activeCursor$ = new Subject(); diff --git a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js index 36624cfeea0c25..b13d82387a7078 100644 --- a/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js +++ b/src/plugins/vis_type_timeseries/public/application/visualizations/views/timeseries/index.js @@ -34,7 +34,7 @@ import { } from '@elastic/charts'; import { EuiIcon } from '@elastic/eui'; import { getTimezone } from '../../../lib/get_timezone'; -import { eventBus, ACTIVE_CURSOR } from '../../lib/active_cursor'; +import { activeCursor$ } from '../../lib/active_cursor'; import { getUISettings, getChartsSetup } from '../../../../services'; import { GRID_LINE_CONFIG, ICON_TYPES_MAP, STACKED_OPTIONS } from '../../constants'; import { AreaSeriesDecorator } from './decorators/area_decorator'; @@ -54,7 +54,7 @@ const generateAnnotationData = (values, formatter) => const decorateFormatter = (formatter) => ({ value }) => formatter(value); const handleCursorUpdate = (cursor) => { - eventBus.trigger(ACTIVE_CURSOR, cursor); + activeCursor$.next(cursor); }; export const TimeSeries = ({ @@ -73,16 +73,16 @@ export const TimeSeries = ({ const chartRef = useRef(); useEffect(() => { - const updateCursor = (_, cursor) => { + const updateCursor = (cursor) => { if (chartRef.current) { chartRef.current.dispatchExternalPointerEvent(cursor); } }; - eventBus.on(ACTIVE_CURSOR, updateCursor); + const subscription = activeCursor$.subscribe(updateCursor); return () => { - eventBus.off(ACTIVE_CURSOR, undefined, updateCursor); + subscription.unsubscribe(); }; }, []); diff --git a/src/plugins/vis_type_timeseries/public/metrics_fn.ts b/src/plugins/vis_type_timeseries/public/metrics_fn.ts index 8652d703f963e3..60acd35b224024 100644 --- a/src/plugins/vis_type_timeseries/public/metrics_fn.ts +++ b/src/plugins/vis_type_timeseries/public/metrics_fn.ts @@ -17,38 +17,36 @@ * under the License. */ -import { get } from 'lodash'; import { i18n } from '@kbn/i18n'; import { KibanaContext } from '../../data/public'; import { ExpressionFunctionDefinition, Render } from '../../expressions/public'; -// @ts-ignore +import { PanelSchema, TimeseriesVisData } from '../common/types'; import { metricsRequestHandler } from './request_handler'; type Input = KibanaContext | null; -type Output = Promise>; +type Output = Promise>; interface Arguments { params: string; uiState: string; - savedObjectId: string | null; } -type VisParams = Required; +export type TimeseriesVisParams = PanelSchema; -interface RenderValue { - visType: 'metrics'; - visData: Input; - visConfig: VisParams; - uiState: any; +export interface TimeseriesRenderValue { + visData: TimeseriesVisData | {}; + visParams: TimeseriesVisParams; } -export const createMetricsFn = (): ExpressionFunctionDefinition< +export type TimeseriesExpressionFunctionDefinition = ExpressionFunctionDefinition< 'tsvb', Input, Arguments, Output -> => ({ +>; + +export const createMetricsFn = (): TimeseriesExpressionFunctionDefinition => ({ name: 'tsvb', type: 'render', inputTypes: ['kibana_context', 'null'], @@ -66,37 +64,22 @@ export const createMetricsFn = (): ExpressionFunctionDefinition< default: '"{}"', help: '', }, - savedObjectId: { - types: ['null', 'string'], - default: null, - help: '', - }, }, async fn(input, args) { - const params = JSON.parse(args.params); - const uiStateParams = JSON.parse(args.uiState); - const savedObjectId = args.savedObjectId; - const { PersistedState } = await import('../../visualizations/public'); - const uiState = new PersistedState(uiStateParams); + const visParams: TimeseriesVisParams = JSON.parse(args.params); + const uiState = JSON.parse(args.uiState); const response = await metricsRequestHandler({ - timeRange: get(input, 'timeRange', null), - query: get(input, 'query', null), - filters: get(input, 'filters', null), - visParams: params, + input, + visParams, uiState, - savedObjectId, }); - response.visType = 'metrics'; - return { type: 'render', - as: 'visualization', + as: 'timeseries_vis', value: { - uiState, - visType: 'metrics', - visConfig: params, + visParams, visData: response, }, }; diff --git a/src/plugins/vis_type_timeseries/public/metrics_type.ts b/src/plugins/vis_type_timeseries/public/metrics_type.ts index 01b6ea07683385..41dc26c8c130d6 100644 --- a/src/plugins/vis_type_timeseries/public/metrics_type.ts +++ b/src/plugins/vis_type_timeseries/public/metrics_type.ts @@ -19,15 +19,11 @@ import { i18n } from '@kbn/i18n'; -// @ts-ignore -import { metricsRequestHandler } from './request_handler'; import { EditorController } from './application'; -// @ts-ignore import { PANEL_TYPES } from '../common/panel_types'; -import { VisEditor } from './application/components/vis_editor_lazy'; +import { toExpressionAst } from './to_ast'; import { VIS_EVENT_TO_TRIGGER, VisGroups, VisParams } from '../../visualizations/public'; import { getDataStart } from './services'; -import { INDEXES_SEPARATOR } from '../common/constants'; export const metricsVisDefinition = { name: 'metrics', @@ -73,7 +69,6 @@ export const metricsVisDefinition = { show_grid: 1, tooltip_mode: 'show_all', }, - component: VisEditor, }, editor: EditorController, options: { @@ -81,26 +76,14 @@ export const metricsVisDefinition = { showFilterBar: false, showIndexSelection: false, }, - requestHandler: metricsRequestHandler, + toExpressionAst, getSupportedTriggers: () => { return [VIS_EVENT_TO_TRIGGER.applyFilter]; }, inspectorAdapters: {}, getUsedIndexPattern: async (params: VisParams) => { const { indexPatterns } = getDataStart(); - const indexes: string = params.index_pattern; - if (indexes) { - const cachedIndexes = await indexPatterns.getIdsWithTitle(); - const ids = indexes - .split(INDEXES_SEPARATOR) - .map((title) => cachedIndexes.find((i) => i.title === title)?.id) - .filter((id) => id); - - return Promise.all(ids.map((id) => indexPatterns.get(id!))); - } - - return []; + return params.index_pattern ? await indexPatterns.find(params.index_pattern) : []; }, - responseHandler: 'none', }; diff --git a/src/plugins/vis_type_timeseries/public/plugin.ts b/src/plugins/vis_type_timeseries/public/plugin.ts index d98e55bdb340cf..d36b3611680af7 100644 --- a/src/plugins/vis_type_timeseries/public/plugin.ts +++ b/src/plugins/vis_type_timeseries/public/plugin.ts @@ -36,6 +36,7 @@ import { } from './services'; import { DataPublicPluginStart } from '../../data/public'; import { ChartsPluginSetup } from '../../charts/public'; +import { getTimeseriesVisRenderer } from './timeseries_vis_renderer'; /** @internal */ export interface MetricsPluginSetupDependencies { @@ -62,9 +63,14 @@ export class MetricsPlugin implements Plugin, void> { { expressions, visualizations, charts }: MetricsPluginSetupDependencies ) { expressions.registerFunction(createMetricsFn); + expressions.registerRenderer( + getTimeseriesVisRenderer({ + uiSettings: core.uiSettings, + }) + ); setUISettings(core.uiSettings); setChartsSetup(charts); - visualizations.createReactVisualization(metricsVisDefinition); + visualizations.createBaseVisualization(metricsVisDefinition); } public start(core: CoreStart, { data }: MetricsPluginStartDependencies) { diff --git a/src/plugins/vis_type_timeseries/public/request_handler.js b/src/plugins/vis_type_timeseries/public/request_handler.js deleted file mode 100644 index 12b7f3d417ef6a..00000000000000 --- a/src/plugins/vis_type_timeseries/public/request_handler.js +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { getTimezone, validateInterval } from './application'; -import { getUISettings, getDataStart, getCoreStart } from './services'; -import { MAX_BUCKETS_SETTING } from '../common/constants'; - -export const metricsRequestHandler = async ({ - uiState, - timeRange, - filters, - query, - visParams, - savedObjectId, -}) => { - const config = getUISettings(); - const timezone = getTimezone(config); - const uiStateObj = uiState.get(visParams.type, {}); - const dataSearch = getDataStart(); - const parsedTimeRange = dataSearch.query.timefilter.timefilter.calculateBounds(timeRange); - const scaledDataFormat = config.get('dateFormat:scaled'); - const dateFormat = config.get('dateFormat'); - - if (visParams && visParams.id && !visParams.isModelInvalid) { - try { - const maxBuckets = config.get(MAX_BUCKETS_SETTING); - - validateInterval(parsedTimeRange, visParams, maxBuckets); - - const resp = await getCoreStart().http.post('/api/metrics/vis/data', { - body: JSON.stringify({ - timerange: { - timezone, - ...parsedTimeRange, - }, - query, - filters, - panels: [visParams], - state: uiStateObj, - savedObjectId: savedObjectId || 'unsaved', - sessionId: dataSearch.search.session.getSessionId(), - }), - }); - - return { - dateFormat, - scaledDataFormat, - timezone, - ...resp, - }; - } catch (error) { - return Promise.reject(error); - } - } - - return Promise.resolve({}); -}; diff --git a/src/plugins/vis_type_timeseries/public/request_handler.ts b/src/plugins/vis_type_timeseries/public/request_handler.ts new file mode 100644 index 00000000000000..aa45453515277e --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/request_handler.ts @@ -0,0 +1,68 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { KibanaContext } from '../../data/public'; + +import { getTimezone, validateInterval } from './application'; +import { getUISettings, getDataStart, getCoreStart } from './services'; +import { MAX_BUCKETS_SETTING, ROUTES } from '../common/constants'; +import { TimeseriesVisParams } from './metrics_fn'; +import { TimeseriesVisData } from '../common/types'; + +interface MetricsRequestHandlerParams { + input: KibanaContext | null; + uiState: Record; + visParams: TimeseriesVisParams; +} + +export const metricsRequestHandler = async ({ + input, + uiState, + visParams, +}: MetricsRequestHandlerParams): Promise => { + const config = getUISettings(); + const timezone = getTimezone(config); + const uiStateObj = uiState[visParams.type] ?? {}; + const dataSearch = getDataStart(); + const parsedTimeRange = dataSearch.query.timefilter.timefilter.calculateBounds(input?.timeRange!); + + if (visParams && visParams.id && !visParams.isModelInvalid) { + const maxBuckets = config.get(MAX_BUCKETS_SETTING); + + validateInterval(parsedTimeRange, visParams, maxBuckets); + + const resp = await getCoreStart().http.post(ROUTES.VIS_DATA, { + body: JSON.stringify({ + timerange: { + timezone, + ...parsedTimeRange, + }, + query: input?.query, + filters: input?.filters, + panels: [visParams], + state: uiStateObj, + sessionId: dataSearch.search.session.getSessionId(), + }), + }); + + return resp; + } + + return {}; +}; diff --git a/src/plugins/vis_type_timeseries/public/timeseries_vis_renderer.tsx b/src/plugins/vis_type_timeseries/public/timeseries_vis_renderer.tsx new file mode 100644 index 00000000000000..67ed487d293783 --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/timeseries_vis_renderer.tsx @@ -0,0 +1,72 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { lazy } from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; + +import { IUiSettingsClient } from 'kibana/public'; +import { VisualizationContainer } from '../../visualizations/public'; +import { ExpressionRenderDefinition } from '../../expressions/common/expression_renderers'; +import { TimeseriesRenderValue, TimeseriesVisParams } from './metrics_fn'; +import { TimeseriesVisData } from '../common/types'; + +const TimeseriesVisualization = lazy( + () => import('./application/components/timeseries_visualization') +); + +const checkIfDataExists = (visData: TimeseriesVisData | {}, model: TimeseriesVisParams) => { + if ('type' in visData) { + const data = visData.type === 'table' ? visData.series : visData?.[model.id]?.series; + return Boolean(data?.length); + } + + return false; +}; + +export const getTimeseriesVisRenderer: (deps: { + uiSettings: IUiSettingsClient; +}) => ExpressionRenderDefinition = ({ uiSettings }) => ({ + name: 'timeseries_vis', + reuseDomNode: true, + render: async (domNode, config, handlers) => { + handlers.onDestroy(() => { + unmountComponentAtNode(domNode); + }); + + const showNoResult = !checkIfDataExists(config.visData, config.visParams); + + render( + + + , + domNode + ); + }, +}); diff --git a/src/plugins/vis_type_timeseries/public/to_ast.ts b/src/plugins/vis_type_timeseries/public/to_ast.ts new file mode 100644 index 00000000000000..58de0269fd27fa --- /dev/null +++ b/src/plugins/vis_type_timeseries/public/to_ast.ts @@ -0,0 +1,33 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { buildExpression, buildExpressionFunction } from '../../expressions/public'; +import { Vis } from '../../visualizations/public'; +import { TimeseriesExpressionFunctionDefinition, TimeseriesVisParams } from './metrics_fn'; + +export const toExpressionAst = (vis: Vis) => { + const timeseries = buildExpressionFunction('tsvb', { + params: JSON.stringify(vis.params), + uiState: JSON.stringify(vis.uiState), + }); + + const ast = buildExpression([timeseries]); + + return ast.toAst(); +}; diff --git a/src/plugins/vis_type_timeseries/server/lib/get_vis_data.ts b/src/plugins/vis_type_timeseries/server/lib/get_vis_data.ts index fcb66d2e12fd1c..aefbe0ea78d4b4 100644 --- a/src/plugins/vis_type_timeseries/server/lib/get_vis_data.ts +++ b/src/plugins/vis_type_timeseries/server/lib/get_vis_data.ts @@ -20,46 +20,37 @@ import { FakeRequest, RequestHandlerContext } from 'kibana/server'; import _ from 'lodash'; import { first, map } from 'rxjs/operators'; + +import { Filter, Query } from 'src/plugins/data/common'; import { getPanelData } from './vis_data/get_panel_data'; import { Framework } from '../plugin'; import { ReqFacade } from './search_strategies/strategies/abstract_search_strategy'; - -interface GetVisDataResponse { - [key: string]: GetVisDataPanel; -} - -interface GetVisDataPanel { - id: string; - series: GetVisDataSeries[]; -} - -interface GetVisDataSeries { - id: string; - label: string; - data: GetVisDataDataPoint[]; -} - -type GetVisDataDataPoint = [number, number]; +import { TimeseriesVisData } from '../../common/types'; export interface GetVisDataOptions { - timerange?: any; - panels?: any; - filters?: any; - state?: any; - query?: any; + timerange: { + min: number | string; + max: number | string; + timezone?: string; + }; + panels: unknown[]; + filters?: Filter[]; + state?: Record; + query?: Query | Query[]; + sessionId?: string; } export type GetVisData = ( requestContext: RequestHandlerContext, options: GetVisDataOptions, framework: Framework -) => Promise; +) => Promise; export function getVisData( requestContext: RequestHandlerContext, request: FakeRequest & { body: GetVisDataOptions }, framework: Framework -): Promise { +): Promise { // NOTE / TODO: This facade has been put in place to make migrating to the New Platform easier. It // removes the need to refactor many layers of dependencies on "req", and instead just augments the top // level object passed from here. The layers should be refactored fully at some point, but for now @@ -81,10 +72,10 @@ export function getVisData( .toPromise(); }, }; - const promises = (reqFacade.payload as GetVisDataOptions).panels.map(getPanelData(reqFacade)); + const promises = reqFacade.payload.panels.map(getPanelData(reqFacade)); return Promise.all(promises).then((res) => { return res.reduce((acc, data) => { return _.assign(acc as any, data); }, {}); - }) as Promise; + }) as Promise; } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/annotations/get_request_params.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/annotations/get_request_params.js index d11e9316c959b9..1b2334c7dea942 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/annotations/get_request_params.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/annotations/get_request_params.js @@ -19,6 +19,7 @@ import { buildAnnotationRequest } from './build_request_body'; import { getEsShardTimeout } from '../helpers/get_es_shard_timeout'; import { getIndexPatternObject } from '../helpers/get_index_pattern'; +import { UI_SETTINGS } from '../../../../../data/common'; export async function getAnnotationRequestParams( req, @@ -27,6 +28,7 @@ export async function getAnnotationRequestParams( esQueryConfig, capabilities ) { + const uiSettings = req.getUiSettingsService(); const esShardTimeout = await getEsShardTimeout(req); const indexPattern = annotation.index_pattern; const { indexPatternObject, indexPatternString } = await getIndexPatternObject(req, indexPattern); @@ -36,7 +38,11 @@ export async function getAnnotationRequestParams( annotation, esQueryConfig, indexPatternObject, - capabilities + capabilities, + { + maxBarsUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), + barTargetUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), + } ); return { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_interval_and_timefield.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_interval_and_timefield.js index 82a2ef66cb1c0d..9714b551ea82f6 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_interval_and_timefield.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_interval_and_timefield.js @@ -17,6 +17,8 @@ * under the License. */ +import { AUTO_INTERVAL } from '../../../common/constants'; + const DEFAULT_TIME_FIELD = '@timestamp'; export function getIntervalAndTimefield(panel, series = {}, indexPatternObject) { @@ -26,10 +28,18 @@ export function getIntervalAndTimefield(panel, series = {}, indexPatternObject) (series.override_index_pattern && series.series_time_field) || panel.time_field || getDefaultTimeField(); - const interval = (series.override_index_pattern && series.series_interval) || panel.interval; + + let interval = panel.interval; + let maxBars = panel.max_bars; + + if (series.override_index_pattern) { + interval = series.series_interval; + maxBars = series.series_max_bars; + } return { timeField, - interval, + interval: interval || AUTO_INTERVAL, + maxBars, }; } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.js index 3791eb229db5bd..eaaa5a9605b4bc 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/get_table_data.js @@ -22,6 +22,7 @@ import { get } from 'lodash'; import { processBucket } from './table/process_bucket'; import { getEsQueryConfig } from './helpers/get_es_query_uisettings'; import { getIndexPatternObject } from './helpers/get_index_pattern'; +import { UI_SETTINGS } from '../../../../data/common'; export async function getTableData(req, panel) { const panelIndexPattern = panel.index_pattern; @@ -39,7 +40,12 @@ export async function getTableData(req, panel) { }; try { - const body = buildRequestBody(req, panel, esQueryConfig, indexPatternObject, capabilities); + const uiSettings = req.getUiSettingsService(); + const body = buildRequestBody(req, panel, esQueryConfig, indexPatternObject, capabilities, { + maxBarsUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), + barTargetUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), + }); + const [resp] = await searchStrategy.search(req, [ { body, diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/calculate_auto.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/calculate_auto.js deleted file mode 100644 index 0c3555adff1a6c..00000000000000 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/calculate_auto.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import moment from 'moment'; -const d = moment.duration; - -const roundingRules = [ - [d(500, 'ms'), d(100, 'ms')], - [d(5, 'second'), d(1, 'second')], - [d(7.5, 'second'), d(5, 'second')], - [d(15, 'second'), d(10, 'second')], - [d(45, 'second'), d(30, 'second')], - [d(3, 'minute'), d(1, 'minute')], - [d(9, 'minute'), d(5, 'minute')], - [d(20, 'minute'), d(10, 'minute')], - [d(45, 'minute'), d(30, 'minute')], - [d(2, 'hour'), d(1, 'hour')], - [d(6, 'hour'), d(3, 'hour')], - [d(24, 'hour'), d(12, 'hour')], - [d(1, 'week'), d(1, 'd')], - [d(3, 'week'), d(1, 'week')], - [d(1, 'year'), d(1, 'month')], - [Infinity, d(1, 'year')], -]; - -const revRoundingRules = roundingRules.slice(0).reverse(); - -function find(rules, check, last) { - function pick(buckets, duration) { - const target = duration / buckets; - let lastResp = null; - - for (let i = 0; i < rules.length; i++) { - const rule = rules[i]; - const resp = check(rule[0], rule[1], target); - - if (resp == null) { - if (!last) continue; - if (lastResp) return lastResp; - break; - } - - if (!last) return resp; - lastResp = resp; - } - - // fallback to just a number of milliseconds, ensure ms is >= 1 - const ms = Math.max(Math.floor(target), 1); - return moment.duration(ms, 'ms'); - } - - return (buckets, duration) => { - const interval = pick(buckets, duration); - if (interval) return moment.duration(interval._data); - }; -} - -export const calculateAuto = { - near: find( - revRoundingRules, - function near(bound, interval, target) { - if (bound > target) return interval; - }, - true - ), - - lessThan: find(revRoundingRules, function lessThan(_bound, interval, target) { - if (interval < target) return interval; - }), - - atLeast: find(revRoundingRules, function atLeast(_bound, interval, target) { - if (interval <= target) return interval; - }), -}; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_active_series.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_active_series.ts index 235235cf6a3be2..b7644f65827614 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_active_series.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_active_series.ts @@ -29,7 +29,8 @@ export const getActiveSeries = (panel: PanelSchema) => { } // Toogle visibility functionality for 'gauge', 'markdown' is not accessible - const shouldNotApplyFilter = [PANEL_TYPES.GAUGE, PANEL_TYPES.MARKDOWN].includes(panel.type); + const shouldNotApplyFilter = + PANEL_TYPES.GAUGE === panel.type || PANEL_TYPES.MARKDOWN === panel.type; return visibleSeries.filter((series) => !series.hidden || shouldNotApplyFilter); }; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.js index c021ba3cebc668..4384da58fb5692 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.js @@ -17,15 +17,15 @@ * under the License. */ -import { calculateAuto } from './calculate_auto'; import { getUnitValue, parseInterval, convertIntervalToUnit, ASCENDING_UNIT_ORDER, } from './unit_to_seconds'; -import { getTimerangeDuration } from './get_timerange'; +import { getTimerange } from './get_timerange'; import { INTERVAL_STRING_RE, GTE_INTERVAL_RE } from '../../../../common/interval_regexp'; +import { search } from '../../../../../data/server'; const calculateBucketData = (timeInterval, capabilities) => { let intervalString = capabilities @@ -65,14 +65,15 @@ const calculateBucketData = (timeInterval, capabilities) => { }; }; -const calculateBucketSizeForAutoInterval = (req) => { - const duration = getTimerangeDuration(req); +const calculateBucketSizeForAutoInterval = (req, maxBars) => { + const { from, to } = getTimerange(req); + const timerange = to.valueOf() - from.valueOf(); - return calculateAuto.near(100, duration).asSeconds(); + return search.aggs.calcAutoIntervalLessThan(maxBars, timerange).asSeconds(); }; -export const getBucketSize = (req, interval, capabilities) => { - const bucketSize = calculateBucketSizeForAutoInterval(req); +export const getBucketSize = (req, interval, capabilities, maxBars) => { + const bucketSize = calculateBucketSizeForAutoInterval(req, maxBars); let intervalString = `${bucketSize}s`; const gteAutoMatch = Boolean(interval) && interval.match(GTE_INTERVAL_RE); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.test.js index 99bef2de6b72d3..8810ccd406be40 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_bucket_size.test.js @@ -30,37 +30,43 @@ describe('getBucketSize', () => { }; test('returns auto calculated buckets', () => { - const result = getBucketSize(req, 'auto'); + const result = getBucketSize(req, 'auto', undefined, 100); + expect(result).toHaveProperty('bucketSize', 30); expect(result).toHaveProperty('intervalString', '30s'); }); test('returns overridden buckets (1s)', () => { - const result = getBucketSize(req, '1s'); + const result = getBucketSize(req, '1s', undefined, 100); + expect(result).toHaveProperty('bucketSize', 1); expect(result).toHaveProperty('intervalString', '1s'); }); test('returns overridden buckets (10m)', () => { - const result = getBucketSize(req, '10m'); + const result = getBucketSize(req, '10m', undefined, 100); + expect(result).toHaveProperty('bucketSize', 600); expect(result).toHaveProperty('intervalString', '10m'); }); test('returns overridden buckets (1d)', () => { - const result = getBucketSize(req, '1d'); + const result = getBucketSize(req, '1d', undefined, 100); + expect(result).toHaveProperty('bucketSize', 86400); expect(result).toHaveProperty('intervalString', '1d'); }); test('returns overridden buckets (>=2d)', () => { - const result = getBucketSize(req, '>=2d'); + const result = getBucketSize(req, '>=2d', undefined, 100); + expect(result).toHaveProperty('bucketSize', 86400 * 2); expect(result).toHaveProperty('intervalString', '2d'); }); test('returns overridden buckets (>=10s)', () => { - const result = getBucketSize(req, '>=10s'); + const result = getBucketSize(req, '>=10s', undefined, 100); + expect(result).toHaveProperty('bucketSize', 30); expect(result).toHaveProperty('intervalString', '30s'); }); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.js deleted file mode 100644 index 682befe9ab050e..00000000000000 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import moment from 'moment'; - -export const getTimerange = (req) => { - const { min, max } = req.payload.timerange; - - return { - from: moment.utc(min), - to: moment.utc(max), - }; -}; - -export const getTimerangeDuration = (req) => { - const { from, to } = getTimerange(req); - - return moment.duration(to.valueOf() - from.valueOf(), 'ms'); -}; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.js deleted file mode 100644 index 1a1b12c651992f..00000000000000 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import { getTimerange } from './get_timerange'; -import moment from 'moment'; - -describe('getTimerange(req)', () => { - test('should return a moment object for to and from', () => { - const req = { - payload: { - timerange: { - min: '2017-01-01T00:00:00Z', - max: '2017-01-01T01:00:00Z', - }, - }, - }; - const { from, to } = getTimerange(req); - expect(moment.isMoment(from)).toEqual(true); - expect(moment.isMoment(to)).toEqual(true); - expect(moment.utc('2017-01-01T00:00:00Z').isSame(from)).toEqual(true); - expect(moment.utc('2017-01-01T01:00:00Z').isSame(to)).toEqual(true); - }); -}); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.ts new file mode 100644 index 00000000000000..183ce50dd4a093 --- /dev/null +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.test.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import moment from 'moment'; +import { getTimerange } from './get_timerange'; +import { ReqFacade, VisPayload } from '../../..'; + +describe('getTimerange(req)', () => { + test('should return a moment object for to and from', () => { + const req = ({ + payload: { + timerange: { + min: '2017-01-01T00:00:00Z', + max: '2017-01-01T01:00:00Z', + }, + }, + } as unknown) as ReqFacade; + const { from, to } = getTimerange(req); + + expect(moment.isMoment(from)).toEqual(true); + expect(moment.isMoment(to)).toEqual(true); + expect(moment.utc('2017-01-01T00:00:00Z').isSame(from)).toEqual(true); + expect(moment.utc('2017-01-01T01:00:00Z').isSame(to)).toEqual(true); + }); +}); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.ts new file mode 100644 index 00000000000000..54f3110b45808f --- /dev/null +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_timerange.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { utc } from 'moment'; +import { ReqFacade, VisPayload } from '../../..'; + +export const getTimerange = (req: ReqFacade) => { + const { min, max } = req.payload.timerange; + + return { + from: utc(min), + to: utc(max), + }; +}; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/date_histogram.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/date_histogram.js index 4b611e46f15884..617a75f6bd59f8 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/date_histogram.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/date_histogram.js @@ -29,11 +29,17 @@ export function dateHistogram( annotation, esQueryConfig, indexPatternObject, - capabilities + capabilities, + { barTargetUiSettings } ) { return (next) => (doc) => { const timeField = annotation.time_field; - const { bucketSize, intervalString } = getBucketSize(req, 'auto', capabilities); + const { bucketSize, intervalString } = getBucketSize( + req, + 'auto', + capabilities, + barTargetUiSettings + ); const { from, to } = getTimerange(req); const timezone = capabilities.searchTimezone; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/query.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/query.js index 127687bf11fe9f..cf02f601ea5ffb 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/query.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/annotations/query.js @@ -21,10 +21,18 @@ import { getBucketSize } from '../../helpers/get_bucket_size'; import { getTimerange } from '../../helpers/get_timerange'; import { esQuery } from '../../../../../../data/server'; -export function query(req, panel, annotation, esQueryConfig, indexPattern, capabilities) { +export function query( + req, + panel, + annotation, + esQueryConfig, + indexPattern, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const timeField = annotation.time_field; - const { bucketSize } = getBucketSize(req, 'auto', capabilities); + const { bucketSize } = getBucketSize(req, 'auto', capabilities, barTargetUiSettings); const { from, to } = getTimerange(req); doc.size = 0; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js index f1e58b8e4af2ab..98c683bda1fdbf 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.js @@ -25,10 +25,27 @@ import { isLastValueTimerangeMode } from '../../helpers/get_timerange_mode'; import { search } from '../../../../../../../plugins/data/server'; const { dateHistogramInterval } = search.aggs; -export function dateHistogram(req, panel, series, esQueryConfig, indexPatternObject, capabilities) { +export function dateHistogram( + req, + panel, + series, + esQueryConfig, + indexPatternObject, + capabilities, + { maxBarsUiSettings, barTargetUiSettings } +) { return (next) => (doc) => { - const { timeField, interval } = getIntervalAndTimefield(panel, series, indexPatternObject); - const { bucketSize, intervalString } = getBucketSize(req, interval, capabilities); + const { timeField, interval, maxBars } = getIntervalAndTimefield( + panel, + series, + indexPatternObject + ); + const { bucketSize, intervalString } = getBucketSize( + req, + interval, + capabilities, + maxBars ? Math.min(maxBarsUiSettings, maxBars) : barTargetUiSettings + ); const getDateHistogramForLastBucketMode = () => { const { from, to } = offsetTime(req, series.offset_time); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js index 45cad1195fc78d..aa95a79a627965 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/date_histogram.test.js @@ -27,6 +27,7 @@ describe('dateHistogram(req, panel, series)', () => { let capabilities; let config; let indexPatternObject; + let uiSettings; beforeEach(() => { req = { @@ -50,19 +51,29 @@ describe('dateHistogram(req, panel, series)', () => { }; indexPatternObject = {}; capabilities = new DefaultSearchCapabilities(req); + uiSettings = { maxBarsUiSettings: 100, barTargetUiSettings: 50 }; }); test('calls next when finished', () => { const next = jest.fn(); - dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)({}); + dateHistogram(req, panel, series, config, indexPatternObject, capabilities, uiSettings)(next)( + {} + ); expect(next.mock.calls.length).toEqual(1); }); test('returns valid date histogram', () => { const next = (doc) => doc; - const doc = dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)( - {} - ); + const doc = dateHistogram( + req, + panel, + series, + config, + indexPatternObject, + capabilities, + uiSettings + )(next)({}); + expect(doc).toEqual({ aggs: { test: { @@ -94,9 +105,16 @@ describe('dateHistogram(req, panel, series)', () => { test('returns valid date histogram (offset by 1h)', () => { series.offset_time = '1h'; const next = (doc) => doc; - const doc = dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)( - {} - ); + const doc = dateHistogram( + req, + panel, + series, + config, + indexPatternObject, + capabilities, + uiSettings + )(next)({}); + expect(doc).toEqual({ aggs: { test: { @@ -131,9 +149,16 @@ describe('dateHistogram(req, panel, series)', () => { series.series_time_field = 'timestamp'; series.series_interval = '20s'; const next = (doc) => doc; - const doc = dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)( - {} - ); + const doc = dateHistogram( + req, + panel, + series, + config, + indexPatternObject, + capabilities, + uiSettings + )(next)({}); + expect(doc).toEqual({ aggs: { test: { @@ -168,9 +193,15 @@ describe('dateHistogram(req, panel, series)', () => { panel.type = 'timeseries'; const next = (doc) => doc; - const doc = dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)( - {} - ); + const doc = dateHistogram( + req, + panel, + series, + config, + indexPatternObject, + capabilities, + uiSettings + )(next)({}); expect(doc.aggs.test.aggs.timeseries.auto_date_histogram).toBeUndefined(); expect(doc.aggs.test.aggs.timeseries.date_histogram).toBeDefined(); @@ -180,9 +211,16 @@ describe('dateHistogram(req, panel, series)', () => { panel.time_range_mode = 'entire_time_range'; const next = (doc) => doc; - const doc = dateHistogram(req, panel, series, config, indexPatternObject, capabilities)(next)( - {} - ); + const doc = dateHistogram( + req, + panel, + series, + config, + indexPatternObject, + capabilities, + uiSettings + )(next)({}); + expect(doc).toEqual({ aggs: { test: { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.js index 800145dac54680..023ee054a5e133 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.js @@ -21,10 +21,19 @@ import { getBucketSize } from '../../helpers/get_bucket_size'; import { bucketTransform } from '../../helpers/bucket_transform'; import { getIntervalAndTimefield } from '../../get_interval_and_timefield'; -export function metricBuckets(req, panel, series, esQueryConfig, indexPatternObject, capabilities) { +export function metricBuckets( + req, + panel, + series, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, series, indexPatternObject); - const { intervalString } = getBucketSize(req, interval, capabilities); + const { intervalString } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + series.metrics .filter((row) => !/_bucket$/.test(row.type) && !/^series/.test(row.type)) .forEach((metric) => { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.test.js index 1ac4329b60f82d..2154d2257815b2 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/metric_buckets.test.js @@ -20,56 +20,64 @@ import { metricBuckets } from './metric_buckets'; describe('metricBuckets(req, panel, series)', () => { - let panel; - let series; - let req; + let metricBucketsProcessor; + beforeEach(() => { - panel = { - time_field: 'timestamp', - }; - series = { - id: 'test', - split_mode: 'terms', - terms_size: 10, - terms_field: 'host', - metrics: [ - { - id: 'metric-1', - type: 'max', - field: 'io', - }, - { - id: 'metric-2', - type: 'derivative', - field: 'metric-1', - unit: '1s', - }, - { - id: 'metric-3', - type: 'avg_bucket', - field: 'metric-2', - }, - ], - }; - req = { - payload: { - timerange: { - min: '2017-01-01T00:00:00Z', - max: '2017-01-01T01:00:00Z', + metricBucketsProcessor = metricBuckets( + { + payload: { + timerange: { + min: '2017-01-01T00:00:00Z', + max: '2017-01-01T01:00:00Z', + }, }, }, - }; + { + time_field: 'timestamp', + }, + { + id: 'test', + split_mode: 'terms', + terms_size: 10, + terms_field: 'host', + metrics: [ + { + id: 'metric-1', + type: 'max', + field: 'io', + }, + { + id: 'metric-2', + type: 'derivative', + field: 'metric-1', + unit: '1s', + }, + { + id: 'metric-3', + type: 'avg_bucket', + field: 'metric-2', + }, + ], + }, + {}, + {}, + undefined, + { + barTargetUiSettings: 50, + } + ); }); test('calls next when finished', () => { const next = jest.fn(); - metricBuckets(req, panel, series)(next)({}); + metricBucketsProcessor(next)({}); expect(next.mock.calls.length).toEqual(1); }); test('returns metric aggs', () => { const next = (doc) => doc; - const doc = metricBuckets(req, panel, series)(next)({}); + const doc = metricBucketsProcessor(next)({}); + expect(doc).toEqual({ aggs: { test: { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.js index 4a79ec22958779..c16e0fd3aaf158 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.js @@ -57,10 +57,19 @@ export const createPositiveRate = (doc, intervalString, aggRoot) => (metric) => overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}`, positiveOnlyBucket); }; -export function positiveRate(req, panel, series, esQueryConfig, indexPatternObject, capabilities) { +export function positiveRate( + req, + panel, + series, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, series, indexPatternObject); - const { intervalString } = getBucketSize(req, interval, capabilities); + const { intervalString } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + if (series.metrics.some(filter)) { series.metrics .filter(filter) diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.test.js index 7c0f43adf02f55..d891fc01bb266d 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/positive_rate.test.js @@ -22,6 +22,8 @@ describe('positiveRate(req, panel, series)', () => { let panel; let series; let req; + let uiSettings; + beforeEach(() => { panel = { time_field: 'timestamp', @@ -48,17 +50,20 @@ describe('positiveRate(req, panel, series)', () => { }, }, }; + uiSettings = { + barTargetUiSettings: 50, + }; }); test('calls next when finished', () => { const next = jest.fn(); - positiveRate(req, panel, series)(next)({}); + positiveRate(req, panel, series, {}, {}, undefined, uiSettings)(next)({}); expect(next.mock.calls.length).toEqual(1); }); test('returns positive rate aggs', () => { const next = (doc) => doc; - const doc = positiveRate(req, panel, series)(next)({}); + const doc = positiveRate(req, panel, series, {}, {}, undefined, uiSettings)(next)({}); expect(doc).toEqual({ aggs: { test: { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.js index f2b58822e68b68..f69473b613d1b3 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.js @@ -28,11 +28,13 @@ export function siblingBuckets( series, esQueryConfig, indexPatternObject, - capabilities + capabilities, + { barTargetUiSettings } ) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, series, indexPatternObject); - const { bucketSize } = getBucketSize(req, interval, capabilities); + const { bucketSize } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + series.metrics .filter((row) => /_bucket$/.test(row.type)) .forEach((metric) => { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.test.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.test.js index 8f84023ce0c75b..48714e83341ea0 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.test.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/series/sibling_buckets.test.js @@ -23,6 +23,8 @@ describe('siblingBuckets(req, panel, series)', () => { let panel; let series; let req; + let uiSettings; + beforeEach(() => { panel = { time_field: 'timestamp', @@ -53,17 +55,21 @@ describe('siblingBuckets(req, panel, series)', () => { }, }, }; + uiSettings = { + barTargetUiSettings: 50, + }; }); test('calls next when finished', () => { const next = jest.fn(); - siblingBuckets(req, panel, series)(next)({}); + siblingBuckets(req, panel, series, {}, {}, undefined, uiSettings)(next)({}); expect(next.mock.calls.length).toEqual(1); }); test('returns sibling aggs', () => { const next = (doc) => doc; - const doc = siblingBuckets(req, panel, series)(next)({}); + const doc = siblingBuckets(req, panel, series, {}, {}, undefined, uiSettings)(next)({}); + expect(doc).toEqual({ aggs: { test: { diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js index 947e48ed2cab22..ba65e583cc0940 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/date_histogram.js @@ -26,7 +26,14 @@ import { calculateAggRoot } from './calculate_agg_root'; import { search } from '../../../../../../../plugins/data/server'; const { dateHistogramInterval } = search.aggs; -export function dateHistogram(req, panel, esQueryConfig, indexPatternObject, capabilities) { +export function dateHistogram( + req, + panel, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { timeField, interval } = getIntervalAndTimefield(panel, {}, indexPatternObject); const meta = { @@ -34,7 +41,12 @@ export function dateHistogram(req, panel, esQueryConfig, indexPatternObject, cap }; const getDateHistogramForLastBucketMode = () => { - const { bucketSize, intervalString } = getBucketSize(req, interval, capabilities); + const { bucketSize, intervalString } = getBucketSize( + req, + interval, + capabilities, + barTargetUiSettings + ); const { from, to } = getTimerange(req); const timezone = capabilities.searchTimezone; diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/metric_buckets.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/metric_buckets.js index ba2c09e93e7e6b..fe6a8b537d64b4 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/metric_buckets.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/metric_buckets.js @@ -23,10 +23,18 @@ import { bucketTransform } from '../../helpers/bucket_transform'; import { getIntervalAndTimefield } from '../../get_interval_and_timefield'; import { calculateAggRoot } from './calculate_agg_root'; -export function metricBuckets(req, panel, esQueryConfig, indexPatternObject) { +export function metricBuckets( + req, + panel, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, {}, indexPatternObject); - const { intervalString } = getBucketSize(req, interval); + const { intervalString } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + panel.series.forEach((column) => { const aggRoot = calculateAggRoot(doc, column); column.metrics diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/positive_rate.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/positive_rate.js index b219f84deef803..6cf165d124e264 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/positive_rate.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/positive_rate.js @@ -22,10 +22,18 @@ import { getIntervalAndTimefield } from '../../get_interval_and_timefield'; import { calculateAggRoot } from './calculate_agg_root'; import { createPositiveRate, filter } from '../series/positive_rate'; -export function positiveRate(req, panel, esQueryConfig, indexPatternObject) { +export function positiveRate( + req, + panel, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, {}, indexPatternObject); - const { intervalString } = getBucketSize(req, interval); + const { intervalString } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + panel.series.forEach((column) => { const aggRoot = calculateAggRoot(doc, column); column.metrics.filter(filter).forEach(createPositiveRate(doc, intervalString, aggRoot)); diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/sibling_buckets.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/sibling_buckets.js index 1b14ffe34a9472..ba08b18256dec5 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/sibling_buckets.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/request_processors/table/sibling_buckets.js @@ -23,10 +23,18 @@ import { bucketTransform } from '../../helpers/bucket_transform'; import { getIntervalAndTimefield } from '../../get_interval_and_timefield'; import { calculateAggRoot } from './calculate_agg_root'; -export function siblingBuckets(req, panel, esQueryConfig, indexPatternObject) { +export function siblingBuckets( + req, + panel, + esQueryConfig, + indexPatternObject, + capabilities, + { barTargetUiSettings } +) { return (next) => (doc) => { const { interval } = getIntervalAndTimefield(panel, {}, indexPatternObject); - const { bucketSize } = getBucketSize(req, interval); + const { bucketSize } = getBucketSize(req, interval, capabilities, barTargetUiSettings); + panel.series.forEach((column) => { const aggRoot = calculateAggRoot(doc, column); column.metrics diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/time_shift.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/time_shift.js index 14de6aa18f8728..c00b0894073d29 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/time_shift.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/time_shift.js @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { startsWith } from 'lodash'; import moment from 'moment'; export function timeShift(resp, panel, series) { @@ -26,13 +26,15 @@ export function timeShift(resp, panel, series) { const matches = series.offset_time.match(/^([+-]?[\d]+)([shmdwMy]|ms)$/); if (matches) { - const offsetValue = Number(matches[1]); + const offsetValue = matches[1]; const offsetUnit = matches[2]; - const offset = moment.duration(offsetValue, offsetUnit).valueOf(); results.forEach((item) => { - if (_.startsWith(item.id, series.id)) { - item.data = item.data.map(([time, value]) => [time + offset, value]); + if (startsWith(item.id, series.id)) { + item.data = item.data.map((row) => [ + moment.utc(row[0]).add(offsetValue, offsetUnit).valueOf(), + row[1], + ]); } }); } diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts index 0c75e6ef1c5bd5..6b2ef320d54b7b 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/build_request_body.test.ts @@ -97,7 +97,8 @@ describe('buildRequestBody(req)', () => { series, config, indexPatternObject, - capabilities + capabilities, + { barTargetUiSettings: 50 } ); expect(doc).toEqual({ diff --git a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/get_request_params.js b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/get_request_params.js index 4c653ea49e7c6d..3804b1407b0865 100644 --- a/src/plugins/vis_type_timeseries/server/lib/vis_data/series/get_request_params.js +++ b/src/plugins/vis_type_timeseries/server/lib/vis_data/series/get_request_params.js @@ -19,18 +19,25 @@ import { buildRequestBody } from './build_request_body'; import { getEsShardTimeout } from '../helpers/get_es_shard_timeout'; import { getIndexPatternObject } from '../helpers/get_index_pattern'; +import { UI_SETTINGS } from '../../../../../data/common'; export async function getSeriesRequestParams(req, panel, series, esQueryConfig, capabilities) { + const uiSettings = req.getUiSettingsService(); const indexPattern = (series.override_index_pattern && series.series_index_pattern) || panel.index_pattern; const { indexPatternObject, indexPatternString } = await getIndexPatternObject(req, indexPattern); + const request = buildRequestBody( req, panel, series, esQueryConfig, indexPatternObject, - capabilities + capabilities, + { + maxBarsUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), + barTargetUiSettings: await uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), + } ); const esShardTimeout = await getEsShardTimeout(req); diff --git a/src/plugins/vis_type_timeseries/server/routes/fields.ts b/src/plugins/vis_type_timeseries/server/routes/fields.ts index f9a600fa4b1f32..a9a890845d154f 100644 --- a/src/plugins/vis_type_timeseries/server/routes/fields.ts +++ b/src/plugins/vis_type_timeseries/server/routes/fields.ts @@ -21,11 +21,12 @@ import { isBoom } from '@hapi/boom'; import { schema } from '@kbn/config-schema'; import { getFields } from '../lib/get_fields'; import { Framework } from '../plugin'; +import { ROUTES } from '../../common/constants'; export const fieldsRoutes = (framework: Framework) => { framework.router.get( { - path: '/api/metrics/fields', + path: ROUTES.FIELDS, validate: { query: schema.object({ index: schema.string() }), }, diff --git a/src/plugins/vis_type_timeseries/server/routes/vis.ts b/src/plugins/vis_type_timeseries/server/routes/vis.ts index 1ca8b57ab230f4..bba086720da0a1 100644 --- a/src/plugins/vis_type_timeseries/server/routes/vis.ts +++ b/src/plugins/vis_type_timeseries/server/routes/vis.ts @@ -21,6 +21,7 @@ import { IRouter, KibanaRequest } from 'kibana/server'; import { schema } from '@kbn/config-schema'; import { getVisData, GetVisDataOptions } from '../lib/get_vis_data'; import { visPayloadSchema } from '../../common/vis_schema'; +import { ROUTES } from '../../common/constants'; import { ValidationTelemetryServiceSetup } from '../index'; import { Framework } from '../plugin'; @@ -33,7 +34,7 @@ export const visDataRoutes = ( ) => { router.post( { - path: '/api/metrics/vis/data', + path: ROUTES.VIS_DATA, validate: { body: escapeHatch, }, @@ -43,11 +44,9 @@ export const visDataRoutes = ( visPayloadSchema.validate(request.body); } catch (error) { logFailedValidation(); - const savedObjectId = - (typeof request.body === 'object' && (request.body as any).savedObjectId) || - 'unavailable'; + framework.logger.warn( - `Request validation error: ${error.message} (saved object id: ${savedObjectId}). This most likely means your TSVB visualization contains outdated configuration. You can report this problem under https://github.com/elastic/kibana/issues/new?template=Bug_report.md` + `Request validation error: ${error.message}. This most likely means your TSVB visualization contains outdated configuration. You can report this problem under https://github.com/elastic/kibana/issues/new?template=Bug_report.md` ); } diff --git a/src/plugins/vis_type_timeseries/server/validation_telemetry/validation_telemetry_service.ts b/src/plugins/vis_type_timeseries/server/validation_telemetry/validation_telemetry_service.ts index 0969174c7143c0..46f46eaa3026f3 100644 --- a/src/plugins/vis_type_timeseries/server/validation_telemetry/validation_telemetry_service.ts +++ b/src/plugins/vis_type_timeseries/server/validation_telemetry/validation_telemetry_service.ts @@ -83,7 +83,7 @@ export class ValidationTelemetryService implements Plugin/src/plugins/vis_type_vega'], +}; diff --git a/src/plugins/vis_type_vega/public/data_model/es_query_parser.ts b/src/plugins/vis_type_vega/public/data_model/es_query_parser.ts index 1aac8e25d5c738..79eb049fb6dcce 100644 --- a/src/plugins/vis_type_vega/public/data_model/es_query_parser.ts +++ b/src/plugins/vis_type_vega/public/data_model/es_query_parser.ts @@ -226,6 +226,7 @@ export class EsQueryParser { const requestObject = requests.find((item) => getRequestName(item, index) === data.name); if (requestObject) { + requestObject.dataObject.url = requestObject.url; requestObject.dataObject.values = data.rawResponse; } }); diff --git a/src/plugins/vis_type_vega/public/data_model/types.ts b/src/plugins/vis_type_vega/public/data_model/types.ts index acd35e17476242..3bfe218099577d 100644 --- a/src/plugins/vis_type_vega/public/data_model/types.ts +++ b/src/plugins/vis_type_vega/public/data_model/types.ts @@ -82,8 +82,9 @@ interface Projection { name: string; } -interface RequestDataObject { +interface RequestDataObject { name?: string; + url?: TUrlData; values: SearchResponse; } @@ -186,7 +187,7 @@ export interface CacheBounds { max: number; } -interface Requests { +interface Requests> { url: TUrlData; name: string; dataObject: TRequestDataObject; diff --git a/src/plugins/vis_type_vega/public/data_model/vega_parser.test.js b/src/plugins/vis_type_vega/public/data_model/vega_parser.test.js index 9fb80c6a1b19dc..eb666d65b86706 100644 --- a/src/plugins/vis_type_vega/public/data_model/vega_parser.test.js +++ b/src/plugins/vis_type_vega/public/data_model/vega_parser.test.js @@ -185,21 +185,21 @@ describe('VegaParser._resolveEsQueries', () => { 'es', check( { data: { name: 'requestId', url: { index: 'a' }, x: 1 } }, - { data: { name: 'requestId', values: [42], x: 1 } } + { data: { name: 'requestId', url: { index: 'a', body: {} }, values: [42], x: 1 } } ) ); test( 'es 2', check( { data: { name: 'requestId', url: { '%type%': 'elasticsearch', index: 'a' } } }, - { data: { name: 'requestId', values: [42] } } + { data: { name: 'requestId', url: { index: 'a', body: {} }, values: [42] } } ) ); test( 'es arr', check( { arr: [{ data: { name: 'requestId', url: { index: 'a' }, x: 1 } }] }, - { arr: [{ data: { name: 'requestId', values: [42], x: 1 } }] } + { arr: [{ data: { name: 'requestId', url: { index: 'a', body: {} }, values: [42], x: 1 } }] } ) ); test( diff --git a/src/plugins/vis_type_vega/public/lib/extract_index_pattern.test.ts b/src/plugins/vis_type_vega/public/lib/extract_index_pattern.test.ts new file mode 100644 index 00000000000000..a13428d539ad98 --- /dev/null +++ b/src/plugins/vis_type_vega/public/lib/extract_index_pattern.test.ts @@ -0,0 +1,125 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { dataPluginMock } from '../../../data/public/mocks'; +import { extractIndexPatternsFromSpec } from './extract_index_pattern'; +import { setData } from '../services'; + +import type { VegaSpec } from '../data_model/types'; + +const getMockedSpec = (mockedObj: any) => (mockedObj as unknown) as VegaSpec; + +describe('extractIndexPatternsFromSpec', () => { + const dataStart = dataPluginMock.createStartContract(); + + beforeAll(() => { + setData(dataStart); + }); + + test('should not throw errors if no index is specified', async () => { + const spec = getMockedSpec({ + data: {}, + }); + + const indexes = await extractIndexPatternsFromSpec(spec); + + expect(indexes).toMatchInlineSnapshot(`Array []`); + }); + + test('should extract single index pattern', async () => { + const spec = getMockedSpec({ + data: { + url: { + index: 'test', + }, + }, + }); + + const indexes = await extractIndexPatternsFromSpec(spec); + + expect(indexes).toMatchInlineSnapshot(` + Array [ + Object { + "id": "test", + "title": "test", + }, + ] + `); + }); + + test('should extract multiple index patterns', async () => { + const spec = getMockedSpec({ + data: [ + { + url: { + index: 'test1', + }, + }, + { + url: { + index: 'test2', + }, + }, + ], + }); + + const indexes = await extractIndexPatternsFromSpec(spec); + + expect(indexes).toMatchInlineSnapshot(` + Array [ + Object { + "id": "test1", + "title": "test1", + }, + Object { + "id": "test2", + "title": "test2", + }, + ] + `); + }); + + test('should filter empty values', async () => { + const spec = getMockedSpec({ + data: [ + { + url: { + wrong: 'wrong', + }, + }, + { + url: { + index: 'ok', + }, + }, + ], + }); + + const indexes = await extractIndexPatternsFromSpec(spec); + + expect(indexes).toMatchInlineSnapshot(` + Array [ + Object { + "id": "ok", + "title": "ok", + }, + ] + `); + }); +}); diff --git a/src/plugins/vis_type_vega/public/lib/extract_index_pattern.ts b/src/plugins/vis_type_vega/public/lib/extract_index_pattern.ts new file mode 100644 index 00000000000000..12cbd6f7ebbfaa --- /dev/null +++ b/src/plugins/vis_type_vega/public/lib/extract_index_pattern.ts @@ -0,0 +1,47 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { flatten } from 'lodash'; +import { getData } from '../services'; + +import type { Data, VegaSpec } from '../data_model/types'; +import type { IndexPattern } from '../../../data/public'; + +export const extractIndexPatternsFromSpec = async (spec: VegaSpec) => { + const { indexPatterns } = getData(); + let data: Data[] = []; + + if (Array.isArray(spec.data)) { + data = spec.data; + } else if (spec.data) { + data = [spec.data]; + } + + return flatten( + await Promise.all( + data.reduce>>((accumulator, currentValue) => { + if (currentValue.url?.index) { + accumulator.push(indexPatterns.find(currentValue.url.index)); + } + + return accumulator; + }, []) + ) + ); +}; diff --git a/src/plugins/vis_type_vega/public/plugin.ts b/src/plugins/vis_type_vega/public/plugin.ts index 04481685c841ba..55a69ab11966c6 100644 --- a/src/plugins/vis_type_vega/public/plugin.ts +++ b/src/plugins/vis_type_vega/public/plugin.ts @@ -25,7 +25,6 @@ import { Setup as InspectorSetup } from '../../inspector/public'; import { setNotifications, setData, - setSavedObjects, setInjectedVars, setUISettings, setMapsLegacyConfig, @@ -100,7 +99,6 @@ export class VegaPlugin implements Plugin, void> { public start(core: CoreStart, { data }: VegaPluginStartDependencies) { setNotifications(core.notifications); - setSavedObjects(core.savedObjects); setData(data); setInjectedMetadata(core.injectedMetadata); } diff --git a/src/plugins/vis_type_vega/public/services.ts b/src/plugins/vis_type_vega/public/services.ts index 455fe67dbc4233..43856c83248477 100644 --- a/src/plugins/vis_type_vega/public/services.ts +++ b/src/plugins/vis_type_vega/public/services.ts @@ -17,12 +17,7 @@ * under the License. */ -import { - CoreStart, - SavedObjectsStart, - NotificationsStart, - IUiSettingsClient, -} from 'src/core/public'; +import { CoreStart, NotificationsStart, IUiSettingsClient } from 'src/core/public'; import { DataPublicPluginStart } from '../../data/public'; import { createGetterSetter } from '../../kibana_utils/public'; @@ -40,10 +35,6 @@ export const [getInjectedMetadata, setInjectedMetadata] = createGetterSetter< CoreStart['injectedMetadata'] >('InjectedMetadata'); -export const [getSavedObjects, setSavedObjects] = createGetterSetter( - 'SavedObjects' -); - export const [getInjectedVars, setInjectedVars] = createGetterSetter<{ enableExternalUrls: boolean; emsTileLayerId: unknown; diff --git a/src/plugins/vis_type_vega/public/vega_type.ts b/src/plugins/vis_type_vega/public/vega_type.ts index 2211abb54aa93f..d81bfe02389e2f 100644 --- a/src/plugins/vis_type_vega/public/vega_type.ts +++ b/src/plugins/vis_type_vega/public/vega_type.ts @@ -18,19 +18,24 @@ */ import { i18n } from '@kbn/i18n'; -import { BaseVisTypeOptions } from 'src/plugins/visualizations/public'; +import { parse } from 'hjson'; +import type { BaseVisTypeOptions } from 'src/plugins/visualizations/public'; + import { DefaultEditorSize } from '../../vis_default_editor/public'; -import { VegaVisualizationDependencies } from './plugin'; +import type { VegaVisualizationDependencies } from './plugin'; import { createVegaRequestHandler } from './vega_request_handler'; import { getDefaultSpec } from './default_spec'; +import { extractIndexPatternsFromSpec } from './lib/extract_index_pattern'; import { createInspectorAdapters } from './vega_inspector'; import { VIS_EVENT_TO_TRIGGER, VisGroups } from '../../visualizations/public'; import { toExpressionAst } from './to_ast'; -import { VisParams } from './vega_fn'; import { getInfoMessage } from './components/experimental_map_vis_info'; import { VegaVisEditorComponent } from './components/vega_vis_editor_lazy'; +import type { VegaSpec } from './data_model/types'; +import type { VisParams } from './vega_fn'; + export const createVegaTypeDefinition = ( dependencies: VegaVisualizationDependencies ): BaseVisTypeOptions => { @@ -68,6 +73,16 @@ export const createVegaTypeDefinition = ( getSupportedTriggers: () => { return [VIS_EVENT_TO_TRIGGER.applyFilter]; }, + getUsedIndexPattern: async (visParams) => { + try { + const spec = parse(visParams.spec, { legacyRoot: false, keepWsc: true }); + + return extractIndexPatternsFromSpec(spec as VegaSpec); + } catch (e) { + // spec is invalid + } + return []; + }, inspectorAdapters: createInspectorAdapters, }; }; diff --git a/src/plugins/vis_type_vega/public/vega_view/vega_base_view.js b/src/plugins/vis_type_vega/public/vega_view/vega_base_view.js index 25ea77ddbccb42..10f08edef1aa61 100644 --- a/src/plugins/vis_type_vega/public/vega_view/vega_base_view.js +++ b/src/plugins/vis_type_vega/public/vega_view/vega_base_view.js @@ -27,7 +27,8 @@ import { i18n } from '@kbn/i18n'; import { TooltipHandler } from './vega_tooltip'; import { esFilters } from '../../../data/public'; -import { getEnableExternalUrls } from '../services'; +import { getEnableExternalUrls, getData } from '../services'; +import { extractIndexPatternsFromSpec } from '../lib/extract_index_pattern'; vega.scheme('elastic', euiPaletteColorBlind()); @@ -65,7 +66,6 @@ export class VegaBaseView { this._filterManager = opts.filterManager; this._fireEvent = opts.fireEvent; this._timefilter = opts.timefilter; - this._findIndex = opts.findIndex; this._view = null; this._vegaViewConfig = null; this._$messages = null; @@ -127,6 +127,48 @@ export class VegaBaseView { } } + /** + * Find index pattern by its title, if not given, gets it from spec or a defaults one + * @param {string} [index] + * @returns {Promise} index id + */ + async findIndex(index) { + const { indexPatterns } = getData(); + let idxObj; + + if (index) { + [idxObj] = await indexPatterns.find(index); + if (!idxObj) { + throw new Error( + i18n.translate('visTypeVega.vegaParser.baseView.indexNotFoundErrorMessage', { + defaultMessage: 'Index {index} not found', + values: { index: `"${index}"` }, + }) + ); + } + } else { + [idxObj] = await extractIndexPatternsFromSpec( + this._parser.isVegaLite ? this._parser.vlspec : this._parser.spec + ); + + if (!idxObj) { + const defaultIdx = await indexPatterns.getDefault(); + + if (defaultIdx) { + idxObj = defaultIdx; + } else { + throw new Error( + i18n.translate('visTypeVega.vegaParser.baseView.unableToFindDefaultIndexErrorMessage', { + defaultMessage: 'Unable to find default index', + }) + ); + } + } + } + + return idxObj.id; + } + createViewConfig() { const config = { // eslint-disable-next-line import/namespace @@ -261,7 +303,7 @@ export class VegaBaseView { * @param {string} [index] as defined in Kibana, or default if missing */ async addFilterHandler(query, index) { - const indexId = await this._findIndex(index); + const indexId = await this.findIndex(index); const filter = esFilters.buildQueryFilter(query, indexId); this._fireEvent({ name: 'applyFilter', data: { filters: [filter] } }); @@ -272,7 +314,7 @@ export class VegaBaseView { * @param {string} [index] as defined in Kibana, or default if missing */ async removeFilterHandler(query, index) { - const indexId = await this._findIndex(index); + const indexId = await this.findIndex(index); const filterToRemove = esFilters.buildQueryFilter(query, indexId); const currentFilters = this._filterManager.getFilters(); diff --git a/src/plugins/vis_type_vega/public/vega_visualization.test.js b/src/plugins/vis_type_vega/public/vega_visualization.test.js index a2214e139a296a..8a073ca32b94a2 100644 --- a/src/plugins/vis_type_vega/public/vega_visualization.test.js +++ b/src/plugins/vis_type_vega/public/vega_visualization.test.js @@ -30,7 +30,7 @@ import vegaMapGraph from './test_utils/vega_map_test.json'; import { VegaParser } from './data_model/vega_parser'; import { SearchAPI } from './data_model/search_api'; -import { setInjectedVars, setData, setSavedObjects, setNotifications } from './services'; +import { setInjectedVars, setData, setNotifications } from './services'; import { coreMock } from '../../../core/public/mocks'; import { dataPluginMock } from '../../data/public/mocks'; @@ -76,7 +76,6 @@ describe('VegaVisualizations', () => { enableExternalUrls: true, }); setData(dataPluginStart); - setSavedObjects(coreStart.savedObjects); setNotifications(coreStart.notifications); vegaVisualizationDependencies = { diff --git a/src/plugins/vis_type_vega/public/vega_visualization.ts b/src/plugins/vis_type_vega/public/vega_visualization.ts index 58c436bcd4be4c..554ac8962df463 100644 --- a/src/plugins/vis_type_vega/public/vega_visualization.ts +++ b/src/plugins/vis_type_vega/public/vega_visualization.ts @@ -20,13 +20,12 @@ import { i18n } from '@kbn/i18n'; import { IInterpreterRenderHandlers } from 'src/plugins/expressions'; import { VegaParser } from './data_model/vega_parser'; import { VegaVisualizationDependencies } from './plugin'; -import { getNotifications, getData, getSavedObjects } from './services'; +import { getNotifications, getData } from './services'; import type { VegaView } from './vega_view/vega_view'; export const createVegaVisualization = ({ getServiceSettings }: VegaVisualizationDependencies) => class VegaVisualization { private readonly dataPlugin = getData(); - private readonly savedObjectsClient = getSavedObjects(); private vegaView: InstanceType | null = null; constructor( @@ -34,39 +33,6 @@ export const createVegaVisualization = ({ getServiceSettings }: VegaVisualizatio private fireEvent: IInterpreterRenderHandlers['event'] ) {} - /** - * Find index pattern by its title, of if not given, gets default - * @param {string} [index] - * @returns {Promise} index id - */ - async findIndex(index: string) { - const { indexPatterns } = this.dataPlugin; - let idxObj; - - if (index) { - // @ts-expect-error - idxObj = indexPatterns.findByTitle(this.savedObjectsClient, index); - if (!idxObj) { - throw new Error( - i18n.translate('visTypeVega.visualization.indexNotFoundErrorMessage', { - defaultMessage: 'Index {index} not found', - values: { index: `"${index}"` }, - }) - ); - } - } else { - idxObj = await indexPatterns.getDefault(); - if (!idxObj) { - throw new Error( - i18n.translate('visTypeVega.visualization.unableToFindDefaultIndexErrorMessage', { - defaultMessage: 'Unable to find default index', - }) - ); - } - } - return idxObj.id; - } - async render(visData: VegaParser) { const { toasts } = getNotifications(); @@ -112,7 +78,6 @@ export const createVegaVisualization = ({ getServiceSettings }: VegaVisualizatio serviceSettings, filterManager, timefilter, - findIndex: this.findIndex.bind(this), }; if (vegaParser.useMap) { diff --git a/src/plugins/vis_type_vislib/jest.config.js b/src/plugins/vis_type_vislib/jest.config.js new file mode 100644 index 00000000000000..1324ec1404b3e2 --- /dev/null +++ b/src/plugins/vis_type_vislib/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/src/plugins/vis_type_vislib'], +}; diff --git a/src/plugins/vis_type_vislib/public/area.ts b/src/plugins/vis_type_vislib/public/area.ts index 531958d6b3db3a..ec7bce254f586b 100644 --- a/src/plugins/vis_type_vislib/public/area.ts +++ b/src/plugins/vis_type_vislib/public/area.ts @@ -47,7 +47,7 @@ export const areaVisTypeDefinition: BaseVisTypeOptions = { title: i18n.translate('visTypeVislib.area.areaTitle', { defaultMessage: 'Area' }), icon: 'visArea', description: i18n.translate('visTypeVislib.area.areaDescription', { - defaultMessage: 'Emphasize the quantity beneath a line chart', + defaultMessage: 'Emphasize the data between an axis and a line.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/gauge.ts b/src/plugins/vis_type_vislib/public/gauge.ts index 2b3c415087ee1e..bd3bdd1a01e9d3 100644 --- a/src/plugins/vis_type_vislib/public/gauge.ts +++ b/src/plugins/vis_type_vislib/public/gauge.ts @@ -61,7 +61,7 @@ export const gaugeVisTypeDefinition: BaseVisTypeOptions = { title: i18n.translate('visTypeVislib.gauge.gaugeTitle', { defaultMessage: 'Gauge' }), icon: 'visGauge', description: i18n.translate('visTypeVislib.gauge.gaugeDescription', { - defaultMessage: 'Gauges indicate the status of a metric.', + defaultMessage: 'Show the status of a metric.', }), toExpressionAst, visConfig: { diff --git a/src/plugins/vis_type_vislib/public/goal.ts b/src/plugins/vis_type_vislib/public/goal.ts index 32574fb5b0a9cb..46878ca82e45a8 100644 --- a/src/plugins/vis_type_vislib/public/goal.ts +++ b/src/plugins/vis_type_vislib/public/goal.ts @@ -33,7 +33,7 @@ export const goalVisTypeDefinition: BaseVisTypeOptions = { title: i18n.translate('visTypeVislib.goal.goalTitle', { defaultMessage: 'Goal' }), icon: 'visGoal', description: i18n.translate('visTypeVislib.goal.goalDescription', { - defaultMessage: 'A goal chart indicates how close you are to your final goal.', + defaultMessage: 'Track how a metric progresses to a goal.', }), toExpressionAst, visConfig: { diff --git a/src/plugins/vis_type_vislib/public/heatmap.ts b/src/plugins/vis_type_vislib/public/heatmap.ts index f970eddd645f5c..c408ac140dd467 100644 --- a/src/plugins/vis_type_vislib/public/heatmap.ts +++ b/src/plugins/vis_type_vislib/public/heatmap.ts @@ -43,10 +43,10 @@ export interface HeatmapVisParams extends CommonVislibParams, ColorSchemaParams export const heatmapVisTypeDefinition: BaseVisTypeOptions = { name: 'heatmap', - title: i18n.translate('visTypeVislib.heatmap.heatmapTitle', { defaultMessage: 'Heat Map' }), + title: i18n.translate('visTypeVislib.heatmap.heatmapTitle', { defaultMessage: 'Heat map' }), icon: 'heatmap', description: i18n.translate('visTypeVislib.heatmap.heatmapDescription', { - defaultMessage: 'Shade cells within a matrix', + defaultMessage: 'Shade data in cells in a matrix.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/histogram.ts b/src/plugins/vis_type_vislib/public/histogram.ts index d5fb92f5c6a0c2..de4855ba9aa2b7 100644 --- a/src/plugins/vis_type_vislib/public/histogram.ts +++ b/src/plugins/vis_type_vislib/public/histogram.ts @@ -44,11 +44,11 @@ import { toExpressionAst } from './to_ast'; export const histogramVisTypeDefinition: BaseVisTypeOptions = { name: 'histogram', title: i18n.translate('visTypeVislib.histogram.histogramTitle', { - defaultMessage: 'Vertical Bar', + defaultMessage: 'Vertical bar', }), icon: 'visBarVertical', description: i18n.translate('visTypeVislib.histogram.histogramDescription', { - defaultMessage: 'Assign a continuous variable to each axis', + defaultMessage: 'Present data in vertical bars on an axis.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/horizontal_bar.ts b/src/plugins/vis_type_vislib/public/horizontal_bar.ts index f1a5365e5ae743..144e63224533bf 100644 --- a/src/plugins/vis_type_vislib/public/horizontal_bar.ts +++ b/src/plugins/vis_type_vislib/public/horizontal_bar.ts @@ -42,11 +42,11 @@ import { toExpressionAst } from './to_ast'; export const horizontalBarVisTypeDefinition: BaseVisTypeOptions = { name: 'horizontal_bar', title: i18n.translate('visTypeVislib.horizontalBar.horizontalBarTitle', { - defaultMessage: 'Horizontal Bar', + defaultMessage: 'Horizontal bar', }), icon: 'visBarHorizontal', description: i18n.translate('visTypeVislib.horizontalBar.horizontalBarDescription', { - defaultMessage: 'Assign a continuous variable to each axis', + defaultMessage: 'Present data in horizontal bars on an axis.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/line.ts b/src/plugins/vis_type_vislib/public/line.ts index a65b0bcf7e2bb7..ffa40c8c299806 100644 --- a/src/plugins/vis_type_vislib/public/line.ts +++ b/src/plugins/vis_type_vislib/public/line.ts @@ -45,7 +45,7 @@ export const lineVisTypeDefinition: BaseVisTypeOptions = { title: i18n.translate('visTypeVislib.line.lineTitle', { defaultMessage: 'Line' }), icon: 'visLine', description: i18n.translate('visTypeVislib.line.lineDescription', { - defaultMessage: 'Emphasize trends', + defaultMessage: 'Display data as a series of points.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter, VIS_EVENT_TO_TRIGGER.brush], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/pie.ts b/src/plugins/vis_type_vislib/public/pie.ts index 58f7dd0df89e86..41b271054d59f0 100644 --- a/src/plugins/vis_type_vislib/public/pie.ts +++ b/src/plugins/vis_type_vislib/public/pie.ts @@ -43,7 +43,7 @@ export const pieVisTypeDefinition: BaseVisTypeOptions = { title: i18n.translate('visTypeVislib.pie.pieTitle', { defaultMessage: 'Pie' }), icon: 'visPie', description: i18n.translate('visTypeVislib.pie.pieDescription', { - defaultMessage: 'Compare parts of a whole', + defaultMessage: 'Compare data in proportion to a whole.', }), getSupportedTriggers: () => [VIS_EVENT_TO_TRIGGER.filter], toExpressionAst, diff --git a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx b/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx index ba09f12cfab2bf..39e6fb2d2aff44 100644 --- a/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx +++ b/src/plugins/vis_type_vislib/public/vislib/components/legend/legend_item.tsx @@ -152,7 +152,6 @@ const VisLegendItemComponent = ({ const renderDetails = () => ( /src/plugins/visualizations'], +}; diff --git a/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap b/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap index 978c67fb71721f..94c5da872b1cb0 100644 --- a/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap +++ b/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap @@ -3,6 +3,7 @@ exports[`VisualizationNoResults should render according to snapshot 1`] = `
+
{showNoResult ? handlers.done()} /> : children} diff --git a/src/plugins/visualizations/public/components/visualization_noresults.tsx b/src/plugins/visualizations/public/components/visualization_noresults.tsx index c77ef4490a4b3a..90d5353185229e 100644 --- a/src/plugins/visualizations/public/components/visualization_noresults.tsx +++ b/src/plugins/visualizations/public/components/visualization_noresults.tsx @@ -30,7 +30,7 @@ export class VisualizationNoResults extends React.Component +
diff --git a/src/plugins/visualizations/public/embeddable/get_index_pattern.ts b/src/plugins/visualizations/public/embeddable/get_index_pattern.ts index c12c95145fe44c..22993eb6a2f6a1 100644 --- a/src/plugins/visualizations/public/embeddable/get_index_pattern.ts +++ b/src/plugins/visualizations/public/embeddable/get_index_pattern.ts @@ -18,37 +18,19 @@ */ import { VisSavedObject } from '../types'; -import { - indexPatterns, - IIndexPattern, - IndexPatternAttributes, -} from '../../../../plugins/data/public'; -import { getUISettings, getSavedObjects } from '../services'; +import type { IndexPattern } from '../../../../plugins/data/public'; +import { getIndexPatterns } from '../services'; export async function getIndexPattern( savedVis: VisSavedObject -): Promise { +): Promise { if (savedVis.visState.type !== 'metrics') { return savedVis.searchSource!.getField('index'); } - const savedObjectsClient = getSavedObjects().client; - const defaultIndex = getUISettings().get('defaultIndex'); + const indexPatternsClient = getIndexPatterns(); - if (savedVis.visState.params.index_pattern) { - const indexPatternObjects = await savedObjectsClient.find({ - type: 'index-pattern', - fields: ['title', 'fields'], - search: `"${savedVis.visState.params.index_pattern}"`, - searchFields: ['title'], - }); - const [indexPattern] = indexPatternObjects.savedObjects.map(indexPatterns.getFromSavedObject); - return indexPattern; - } - - const savedObject = await savedObjectsClient.get( - 'index-pattern', - defaultIndex - ); - return indexPatterns.getFromSavedObject(savedObject); + return savedVis.visState.params.index_pattern + ? (await indexPatternsClient.find(`"${savedVis.visState.params.index_pattern}"`))[0] + : await indexPatternsClient.getDefault(); } diff --git a/src/plugins/visualizations/public/legacy/__snapshots__/build_pipeline.test.ts.snap b/src/plugins/visualizations/public/legacy/__snapshots__/build_pipeline.test.ts.snap index 2c6cfc6fb74621..3ff0c83961e2a5 100644 --- a/src/plugins/visualizations/public/legacy/__snapshots__/build_pipeline.test.ts.snap +++ b/src/plugins/visualizations/public/legacy/__snapshots__/build_pipeline.test.ts.snap @@ -2,10 +2,6 @@ exports[`visualize loader pipeline helpers: build pipeline buildPipeline calls toExpression on vis_type if it exists 1`] = `"kibana | kibana_context | test"`; -exports[`visualize loader pipeline helpers: build pipeline buildPipelineVisFunction handles input_control_vis function 1`] = `"input_control_vis visConfig='{\\"some\\":\\"nested\\",\\"data\\":{\\"here\\":true}}' "`; - -exports[`visualize loader pipeline helpers: build pipeline buildPipelineVisFunction handles metrics/tsvb function 1`] = `"tsvb params='{\\"foo\\":\\"bar\\"}' uiState='{}' "`; - exports[`visualize loader pipeline helpers: build pipeline buildPipelineVisFunction handles region_map function with buckets 1`] = `"regionmap visConfig='{\\"metric\\":{\\"accessor\\":0,\\"label\\":\\"\\",\\"format\\":{},\\"params\\":{},\\"aggType\\":\\"\\"},\\"bucket\\":1}' "`; exports[`visualize loader pipeline helpers: build pipeline buildPipelineVisFunction handles region_map function without buckets 1`] = `"regionmap visConfig='{\\"metric\\":{\\"accessor\\":0,\\"label\\":\\"\\",\\"format\\":{},\\"params\\":{},\\"aggType\\":\\"\\"}}' "`; diff --git a/src/plugins/visualizations/public/legacy/build_pipeline.test.ts b/src/plugins/visualizations/public/legacy/build_pipeline.test.ts index 0c210a04d20075..57c58a99f09ea6 100644 --- a/src/plugins/visualizations/public/legacy/build_pipeline.test.ts +++ b/src/plugins/visualizations/public/legacy/build_pipeline.test.ts @@ -92,21 +92,6 @@ describe('visualize loader pipeline helpers: build pipeline', () => { uiState = {}; }); - it('handles input_control_vis function', () => { - const params = { - some: 'nested', - data: { here: true }, - }; - const actual = buildPipelineVisFunction.input_control_vis(params, schemasDef, uiState); - expect(actual).toMatchSnapshot(); - }); - - it('handles metrics/tsvb function', () => { - const params = { foo: 'bar' }; - const actual = buildPipelineVisFunction.metrics(params, schemasDef, uiState); - expect(actual).toMatchSnapshot(); - }); - describe('handles region_map function', () => { it('without buckets', () => { const params = { metric: {} }; diff --git a/src/plugins/visualizations/public/legacy/build_pipeline.ts b/src/plugins/visualizations/public/legacy/build_pipeline.ts index 3593d62b9d2e67..29f6ec9b069a7e 100644 --- a/src/plugins/visualizations/public/legacy/build_pipeline.ts +++ b/src/plugins/visualizations/public/legacy/build_pipeline.ts @@ -219,16 +219,6 @@ export const prepareDimension = (variable: string, data: any) => { }; export const buildPipelineVisFunction: BuildPipelineVisFunction = { - input_control_vis: (params) => { - return `input_control_vis ${prepareJson('visConfig', params)}`; - }, - metrics: ({ title, ...params }, schemas, uiState = {}) => { - const paramsJson = prepareJson('params', params); - const uiStateJson = prepareJson('uiState', uiState); - - const paramsArray = [paramsJson, uiStateJson].filter((param) => Boolean(param)); - return `tsvb ${paramsArray.join(' ')}`; - }, region_map: (params, schemas) => { const visConfig = { ...params, @@ -308,8 +298,10 @@ export const buildPipeline = async (vis: Vis, params: BuildPipelineParams) => { } else { const visConfig = { ...vis.params }; visConfig.dimensions = schemas; + visConfig.title = title; pipeline += `visualization type='${vis.type.name}' ${prepareJson('visConfig', visConfig)} + ${prepareJson('uiState', uiState)} metricsAtAllLevels=${vis.isHierarchical()} partialRows=${vis.params.showPartialRows || false} `; if (indexPattern) { diff --git a/src/plugins/visualizations/public/wizard/new_vis_modal.tsx b/src/plugins/visualizations/public/wizard/new_vis_modal.tsx index fbd4e6ef80d5a2..cdc39c11fe78ab 100644 --- a/src/plugins/visualizations/public/wizard/new_vis_modal.tsx +++ b/src/plugins/visualizations/public/wizard/new_vis_modal.tsx @@ -22,7 +22,7 @@ import React from 'react'; import { EuiModal, EuiOverlayMask } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { METRIC_TYPE, UiStatsMetricType } from '@kbn/analytics'; +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; import { ApplicationStart, IUiSettingsClient, @@ -72,7 +72,7 @@ class NewVisModal extends React.Component void) + | ((type: UiCounterMetricType, eventNames: string | string[], count?: number) => void) | undefined; constructor(props: TypeSelectionProps) { @@ -84,7 +84,7 @@ class NewVisModal extends React.Component/src/plugins/visualize'], +}; diff --git a/src/plugins/visualize/kibana.json b/src/plugins/visualize/kibana.json index 55e0a414d90597..27229a11cd99f9 100644 --- a/src/plugins/visualize/kibana.json +++ b/src/plugins/visualize/kibana.json @@ -23,6 +23,7 @@ "kibanaReact", "home", "discover", - "visDefaultEditor" + "visDefaultEditor", + "presentationUtil" ] } diff --git a/src/plugins/visualize/public/application/components/visualize_byvalue_editor.tsx b/src/plugins/visualize/public/application/components/visualize_byvalue_editor.tsx index a63f597f10135a..1c1eb9956a3293 100644 --- a/src/plugins/visualize/public/application/components/visualize_byvalue_editor.tsx +++ b/src/plugins/visualize/public/application/components/visualize_byvalue_editor.tsx @@ -33,6 +33,7 @@ import { import { VisualizeServices } from '../types'; import { VisualizeEditorCommon } from './visualize_editor_common'; import { VisualizeAppProps } from '../app'; +import { VisualizeConstants } from '../..'; export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => { const [originatingApp, setOriginatingApp] = useState(); @@ -52,7 +53,8 @@ export const VisualizeByValueEditor = ({ onAppLeave }: VisualizeAppProps) => { setValueInput(valueInputValue); setEmbeddableId(embeddableIdValue); if (!valueInputValue) { - history.back(); + // if there is no value input to load, redirect to the visualize listing page. + services.history.replace(VisualizeConstants.LANDING_PAGE_PATH); } }, [services]); diff --git a/src/plugins/visualize/public/application/components/visualize_listing.scss b/src/plugins/visualize/public/application/components/visualize_listing.scss index a4b4c1b994ef40..e1777112cdb3a0 100644 --- a/src/plugins/visualize/public/application/components/visualize_listing.scss +++ b/src/plugins/visualize/public/application/components/visualize_listing.scss @@ -14,4 +14,18 @@ vertical-align: baseline; padding: 0 $euiSizeS; margin-left: $euiSizeS; -} \ No newline at end of file +} + +.visListingCallout { + max-width: 1000px; + width: 100%; + + margin-left: auto; + margin-right: auto; + + padding: $euiSize $euiSize 0 $euiSize; +} + +.visListingCallout__link { + text-decoration: underline; +} diff --git a/src/plugins/visualize/public/application/components/visualize_listing.tsx b/src/plugins/visualize/public/application/components/visualize_listing.tsx index 718bd2ed343ce9..6e6525c140849c 100644 --- a/src/plugins/visualize/public/application/components/visualize_listing.tsx +++ b/src/plugins/visualize/public/application/components/visualize_listing.tsx @@ -19,8 +19,10 @@ import './visualize_listing.scss'; -import React, { useCallback, useRef, useMemo, useEffect } from 'react'; +import React, { useCallback, useRef, useMemo, useEffect, MouseEvent } from 'react'; +import { EuiCallOut, EuiLink } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; import useUnmount from 'react-use/lib/useUnmount'; import useMount from 'react-use/lib/useMount'; @@ -150,35 +152,65 @@ export const VisualizeListing = () => { : []; }, [savedObjectsTagging]); + const calloutMessage = ( + <> + { + event.preventDefault(); + application.navigateToUrl(application.getUrlForApp('dashboards')); + }} + > + + + ), + }} + /> + + ); + return ( - + <> +
+ +
+ + ); }; diff --git a/src/plugins/visualize/public/application/components/visualize_top_nav.tsx b/src/plugins/visualize/public/application/components/visualize_top_nav.tsx index b207529c456a14..78ee3ed4285038 100644 --- a/src/plugins/visualize/public/application/components/visualize_top_nav.tsx +++ b/src/plugins/visualize/public/application/components/visualize_top_nav.tsx @@ -20,7 +20,6 @@ import React, { memo, useCallback, useMemo, useState, useEffect } from 'react'; import { AppMountParameters, OverlayRef } from 'kibana/public'; -import _ from 'lodash'; import { i18n } from '@kbn/i18n'; import { useKibana } from '../../../../kibana_react/public'; import { @@ -31,6 +30,7 @@ import { } from '../types'; import { APP_NAME } from '../visualize_constants'; import { getTopNavConfig } from '../utils'; +import type { IndexPattern } from '../../../../data/public'; interface VisualizeTopNavProps { currentAppState: VisualizeAppState; @@ -81,6 +81,7 @@ const TopNav = ({ [visInstance.embeddableHandler] ); const stateTransfer = services.embeddable.getStateTransfer(); + const savedObjectsClient = services.savedObjects.client; const config = useMemo(() => { if (isEmbeddableRendered) { @@ -96,6 +97,7 @@ const TopNav = ({ stateContainer, visualizationIdFromUrl, stateTransfer, + savedObjectsClient, embeddableId, onAppLeave, }, @@ -116,9 +118,12 @@ const TopNav = ({ services, embeddableId, stateTransfer, + savedObjectsClient, onAppLeave, ]); - const [indexPattern, setIndexPattern] = useState(vis.data.indexPattern); + const [indexPatterns, setIndexPatterns] = useState( + vis.data.indexPattern ? [vis.data.indexPattern] : [] + ); const showDatePicker = () => { // tsvb loads without an indexPattern initially (TODO investigate). // hide timefilter only if timeFieldName is explicitly undefined. @@ -165,14 +170,27 @@ const TopNav = ({ ]); useEffect(() => { - if (!vis.data.indexPattern) { - services.data.indexPatterns.getDefault().then((index) => { - if (index) { - setIndexPattern(index); + const asyncSetIndexPattern = async () => { + let indexes: IndexPattern[] | undefined; + + if (vis.type.getUsedIndexPattern) { + indexes = await vis.type.getUsedIndexPattern(vis.params); + } + if (!indexes || !indexes.length) { + const defaultIndex = await services.data.indexPatterns.getDefault(); + if (defaultIndex) { + indexes = [defaultIndex]; } - }); + } + if (indexes) { + setIndexPatterns(indexes); + } + }; + + if (!vis.data.indexPattern) { + asyncSetIndexPattern(); } - }, [services.data.indexPatterns, vis.data.indexPattern]); + }, [vis.params, vis.type, services.data.indexPatterns, vis.data.indexPattern]); return isChromeVisible ? ( /** @@ -189,7 +207,7 @@ const TopNav = ({ onQuerySubmit={handleRefresh} savedQueryId={currentAppState.savedQuery} onSavedQueryIdChange={stateContainer.transitions.updateSavedQuery} - indexPatterns={indexPattern ? [indexPattern] : undefined} + indexPatterns={indexPatterns} screenTitle={vis.title} showAutoRefreshOnly={!showDatePicker()} showDatePicker={showDatePicker()} @@ -207,7 +225,7 @@ const TopNav = ({ { + dashboardId, + }: OnSaveProps & { returnToOrigin?: boolean } & { dashboardId?: string | null }) => { if (!savedVis) { return; } + const currentTitle = savedVis.title; savedVis.title = newTitle; embeddableHandler.updateInput({ title: newTitle }); @@ -318,16 +325,48 @@ export const getTopNavConfig = ( onTitleDuplicate, returnToOrigin, }; + + if (dashboardId) { + const appPath = `${VisualizeConstants.LANDING_PAGE_PATH}`; + + // Manually insert a new url so the back button will open the saved visualization. + history.replace(appPath); + setActiveUrl(appPath); + + const state = { + input: { + savedVis: { + ...vis.serialize(), + title: newTitle, + description: newDescription, + }, + } as VisualizeInput, + embeddableId, + type: VISUALIZE_EMBEDDABLE_TYPE, + }; + + const path = dashboardId === 'new' ? '#/create' : `#/view/${dashboardId}`; + + stateTransfer.navigateToWithEmbeddablePackage('dashboards', { + state, + path, + }); + + // TODO: Saved Object Modal requires `id` to be defined so this is a workaround + return { id: true }; + } + const response = await doSave(saveOptions); // If the save wasn't successful, put the original values back. if (!response.id || response.error) { savedVis.title = currentTitle; } + return response; }; let selectedTags: string[] = []; - let options: React.ReactNode | undefined; + let tagOptions: React.ReactNode | undefined; if ( savedVis && @@ -335,7 +374,7 @@ export const getTopNavConfig = ( savedObjectsTagging.ui.hasTagDecoration(savedVis) ) { selectedTags = savedVis.getTags(); - options = ( + tagOptions = ( { @@ -345,17 +384,29 @@ export const getTopNavConfig = ( ); } - const saveModal = ( - {}} - originatingApp={originatingApp} - /> - ); + const saveModal = + !!originatingApp || + !dashboard.dashboardFeatureFlagConfig.allowByValueEmbeddables ? ( + {}} + originatingApp={originatingApp} + /> + ) : ( + {}} + savedObjectsClient={savedObjectsClient} + /> + ); + const isSaveAsButton = anchorElement.classList.contains('saveAsButton'); onAppLeave((actions) => { return actions.default(); diff --git a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts index 39a2db12ffad16..7f971d44af9620 100644 --- a/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts +++ b/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.test.ts @@ -199,7 +199,7 @@ describe('useVisualizeAppState', () => { renderHook(() => useVisualizeAppState(mockServices, eventEmitter, savedVisInstance)); - await new Promise((res) => { + await new Promise((res) => { setTimeout(() => res()); }); diff --git a/src/setup_node_env/jest.config.js b/src/setup_node_env/jest.config.js new file mode 100644 index 00000000000000..61e32399058361 --- /dev/null +++ b/src/setup_node_env/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/setup_node_env'], +}; diff --git a/src/test_utils/__tests__/get_url.js b/src/test_utils/__tests__/get_url.js deleted file mode 100644 index c9dd4d5a6d6168..00000000000000 --- a/src/test_utils/__tests__/get_url.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import expect from '@kbn/expect'; -import getUrl from '../get_url'; - -describe('getUrl', function () { - it('should convert to a url', function () { - const url = getUrl( - { - protocol: 'http', - hostname: 'localhost', - }, - { - pathname: 'foo', - } - ); - - expect(url).to.be('http://localhost/foo'); - }); - - it('should convert to a url with port', function () { - const url = getUrl( - { - protocol: 'http', - hostname: 'localhost', - port: 9220, - }, - { - pathname: 'foo', - } - ); - - expect(url).to.be('http://localhost:9220/foo'); - }); - - it('should convert to a secure hashed url', function () { - expect( - getUrl( - { - protocol: 'https', - hostname: 'localhost', - }, - { - pathname: 'foo', - hash: 'bar', - } - ) - ).to.be('https://localhost/foo#bar'); - }); -}); diff --git a/src/test_utils/get_url.js b/src/test_utils/get_url.js deleted file mode 100644 index 182cb8e6e118db..00000000000000 --- a/src/test_utils/get_url.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import _ from 'lodash'; -import url from 'url'; - -/** - * Converts a config and a pathname to a url - * @param {object} config A url config - * example: - * { - * protocol: 'http', - * hostname: 'localhost', - * port: 9220, - * auth: kibanaTestUser.username + ':' + kibanaTestUser.password - * } - * @param {object} app The params to append - * example: - * { - * pathname: 'app/kibana', - * hash: '/discover' - * } - * @return {string} - */ - -export default function getUrl(config, app) { - return url.format(_.assign({}, config, app)); -} - -getUrl.noAuth = function getUrlNoAuth(config, app) { - config = _.pickBy(config, function (val, param) { - return param !== 'auth'; - }); - return getUrl(config, app); -}; - -getUrl.baseUrl = function getBaseUrl(config) { - return url.format(_.pick(config, 'protocol', 'hostname', 'port')); -}; diff --git a/src/test_utils/jest.config.js b/src/test_utils/jest.config.js new file mode 100644 index 00000000000000..b7e77413598c00 --- /dev/null +++ b/src/test_utils/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/src/test_utils'], +}; diff --git a/src/test_utils/public/key_map.ts b/src/test_utils/public/key_map.ts deleted file mode 100644 index aac3c6b2db3e0e..00000000000000 --- a/src/test_utils/public/key_map.ts +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export const keyMap: { [key: number]: string } = { - 8: 'backspace', - 9: 'tab', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 19: 'pause', - 20: 'capsLock', - 27: 'escape', - 32: 'space', - 33: 'pageUp', - 34: 'pageDown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'insert', - 46: 'delete', - 48: '0', - 49: '1', - 50: '2', - 51: '3', - 52: '4', - 53: '5', - 54: '6', - 55: '7', - 56: '8', - 57: '9', - 65: 'a', - 66: 'b', - 67: 'c', - 68: 'd', - 69: 'e', - 70: 'f', - 71: 'g', - 72: 'h', - 73: 'i', - 74: 'j', - 75: 'k', - 76: 'l', - 77: 'm', - 78: 'n', - 79: 'o', - 80: 'p', - 81: 'q', - 82: 'r', - 83: 's', - 84: 't', - 85: 'u', - 86: 'v', - 87: 'w', - 88: 'x', - 89: 'y', - 90: 'z', - 91: 'leftWindowKey', - 92: 'rightWindowKey', - 93: 'selectKey', - 96: '0', - 97: '1', - 98: '2', - 99: '3', - 100: '4', - 101: '5', - 102: '6', - 103: '7', - 104: '8', - 105: '9', - 106: 'multiply', - 107: 'add', - 109: 'subtract', - 110: 'period', - 111: 'divide', - 112: 'f1', - 113: 'f2', - 114: 'f3', - 115: 'f4', - 116: 'f5', - 117: 'f6', - 118: 'f7', - 119: 'f8', - 120: 'f9', - 121: 'f10', - 122: 'f11', - 123: 'f12', - 144: 'numLock', - 145: 'scrollLock', - 186: 'semiColon', - 187: 'equalSign', - 188: 'comma', - 189: 'dash', - 190: 'period', - 191: 'forwardSlash', - 192: 'graveAccent', - 219: 'openBracket', - 220: 'backSlash', - 221: 'closeBracket', - 222: 'singleQuote', - 224: 'meta', -}; diff --git a/src/test_utils/tsconfig.json b/src/test_utils/tsconfig.json deleted file mode 100644 index 2fa89e29898914..00000000000000 --- a/src/test_utils/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target", - "composite": true, - "emitDeclarationOnly": true, - "declaration": true, - "declarationMap": true - }, - "include": [ - "public/**/*" - ], - "exclude": [ - "target" - ] -} diff --git a/test/api_integration/apis/index.js b/test/api_integration/apis/index.js index d07c099634005d..05e6fccb19ac55 100644 --- a/test/api_integration/apis/index.js +++ b/test/api_integration/apis/index.js @@ -33,6 +33,7 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./status')); loadTestFile(require.resolve('./stats')); loadTestFile(require.resolve('./ui_metric')); + loadTestFile(require.resolve('./ui_counters')); loadTestFile(require.resolve('./telemetry')); }); } diff --git a/test/api_integration/apis/index_patterns/fields_api/index.ts b/test/api_integration/apis/index_patterns/fields_api/index.ts new file mode 100644 index 00000000000000..1e8fab49633787 --- /dev/null +++ b/test/api_integration/apis/index_patterns/fields_api/index.ts @@ -0,0 +1,26 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('fields_api', () => { + loadTestFile(require.resolve('./update_fields')); + }); +} diff --git a/test/api_integration/apis/index_patterns/fields_api/update_fields/errors.ts b/test/api_integration/apis/index_patterns/fields_api/update_fields/errors.ts new file mode 100644 index 00000000000000..3db6820be6414a --- /dev/null +++ b/test/api_integration/apis/index_patterns/fields_api/update_fields/errors.ts @@ -0,0 +1,81 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest.post(`/api/index_patterns/index_pattern/${id}/fields`).send({ + fields: { + foo: {}, + }, + }); + + expect(response.status).to.be(404); + }); + + it('returns error when "fields" payload attribute is invalid', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: 123, + }); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be( + '[request body.fields]: expected value of type [object] but got [number]' + ); + }); + + it('returns error if not changes are specified', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: {}, + bar: {}, + baz: {}, + }, + }); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Change set is empty.'); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/fields_api/update_fields/index.ts b/test/api_integration/apis/index_patterns/fields_api/update_fields/index.ts new file mode 100644 index 00000000000000..a5edb1d02621b6 --- /dev/null +++ b/test/api_integration/apis/index_patterns/fields_api/update_fields/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('update_fields', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/fields_api/update_fields/main.ts b/test/api_integration/apis/index_patterns/fields_api/update_fields/main.ts new file mode 100644 index 00000000000000..861987c30705c0 --- /dev/null +++ b/test/api_integration/apis/index_patterns/fields_api/update_fields/main.ts @@ -0,0 +1,566 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can update multiple fields', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response1.body.index_pattern.fieldAttrs.bar).to.be(undefined); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + count: 123, + customLabel: 'test', + }, + bar: { + count: 456, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.count).to.be(123); + expect(response2.body.index_pattern.fieldAttrs.foo.customLabel).to.be('test'); + expect(response2.body.index_pattern.fieldAttrs.bar.count).to.be(456); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.count).to.be(123); + expect(response3.body.index_pattern.fieldAttrs.foo.customLabel).to.be('test'); + expect(response3.body.index_pattern.fieldAttrs.bar.count).to.be(456); + }); + + describe('count', () => { + it('can set field "count" attribute on non-existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo).to.be(undefined); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + count: 123, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.count).to.be(123); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.count).to.be(123); + }); + + it('can update "count" attribute in index_pattern attribute map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldAttrs: { + foo: { + count: 1, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo.count).to.be(1); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + count: 2, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.count).to.be(2); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.count).to.be(2); + }); + + it('can delete "count" attribute from index_pattern attribute map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldAttrs: { + foo: { + count: 1, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo.count).to.be(1); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + count: null, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.count).to.be(undefined); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.count).to.be(undefined); + }); + + it('can set field "count" attribute on an existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + count: 123, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response1.body.index_pattern.fields.foo.count).to.be(123); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + count: 456, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response2.body.index_pattern.fields.foo.count).to.be(456); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response3.body.index_pattern.fields.foo.count).to.be(456); + }); + }); + + describe('customLabel', () => { + it('can set field "customLabel" attribute on non-existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo).to.be(undefined); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + customLabel: 'foo', + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.customLabel).to.be('foo'); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.customLabel).to.be('foo'); + }); + + it('can update "customLabel" attribute in index_pattern attribute map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldAttrs: { + foo: { + customLabel: 'foo', + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo.customLabel).to.be('foo'); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + customLabel: 'bar', + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.customLabel).to.be('bar'); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.customLabel).to.be('bar'); + }); + + it('can delete "customLabel" attribute from index_pattern attribute map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldAttrs: { + foo: { + customLabel: 'foo', + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo.customLabel).to.be('foo'); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + customLabel: null, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo.customLabel).to.be(undefined); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo.customLabel).to.be(undefined); + }); + + it('can set field "customLabel" attribute on an existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + count: 123, + customLabel: 'foo', + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response1.body.index_pattern.fields.foo.customLabel).to.be('foo'); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + customLabel: 'baz', + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response2.body.index_pattern.fields.foo.customLabel).to.be('baz'); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldAttrs.foo).to.be(undefined); + expect(response3.body.index_pattern.fields.foo.customLabel).to.be('baz'); + }); + }); + + describe('format', () => { + it('can set field "format" attribute on non-existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldFormats.foo).to.be(undefined); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + format: { + id: 'bar', + params: { baz: 'qux' }, + }, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar', + params: { baz: 'qux' }, + }); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar', + params: { baz: 'qux' }, + }); + }); + + it('can update "format" attribute in index_pattern format map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldFormats: { + foo: { + id: 'bar', + params: { + baz: 'qux', + }, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar', + params: { + baz: 'qux', + }, + }); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + format: { + id: 'bar-2', + params: { baz: 'qux-2' }, + }, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar-2', + params: { baz: 'qux-2' }, + }); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar-2', + params: { baz: 'qux-2' }, + }); + }); + + it('can remove "format" attribute from index_pattern format map', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldFormats: { + foo: { + id: 'bar', + params: { + baz: 'qux', + }, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'bar', + params: { + baz: 'qux', + }, + }); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + format: null, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldFormats.foo).to.be(undefined); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldFormats.foo).to.be(undefined); + }); + + it('can set field "format" on an existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + scripted: true, + format: { + id: 'string', + }, + }, + }, + }, + }); + + expect(response1.status).to.be(200); + expect(response1.body.index_pattern.fieldFormats.foo).to.be(undefined); + expect(response1.body.index_pattern.fields.foo.format).to.eql({ + id: 'string', + }); + + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/fields`) + .send({ + fields: { + foo: { + format: { id: 'number' }, + }, + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'number', + }); + expect(response2.body.index_pattern.fields.foo.format).to.eql({ + id: 'number', + }); + + const response3 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}` + ); + + expect(response3.status).to.be(200); + expect(response3.body.index_pattern.fieldFormats.foo).to.eql({ + id: 'number', + }); + expect(response3.body.index_pattern.fields.foo.format).to.eql({ + id: 'number', + }); + }); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index.js b/test/api_integration/apis/index_patterns/index.js index 42f907ff8aec15..8195acad3ab650 100644 --- a/test/api_integration/apis/index_patterns/index.js +++ b/test/api_integration/apis/index_patterns/index.js @@ -22,5 +22,8 @@ export default function ({ loadTestFile }) { loadTestFile(require.resolve('./es_errors')); loadTestFile(require.resolve('./fields_for_time_pattern_route')); loadTestFile(require.resolve('./fields_for_wildcard_route')); + loadTestFile(require.resolve('./index_pattern_crud')); + loadTestFile(require.resolve('./scripted_fields_crud')); + loadTestFile(require.resolve('./fields_api')); }); } diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/index.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/index.ts new file mode 100644 index 00000000000000..f357d9992d6424 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('create_index_pattern', () => { + loadTestFile(require.resolve('./validation')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/main.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/main.ts new file mode 100644 index 00000000000000..bffeaed7cb2649 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/main.ts @@ -0,0 +1,241 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can create an index_pattern with just a title', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response.status).to.be(200); + }); + + it('returns back the created index_pattern object', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(typeof response.body.index_pattern).to.be('object'); + expect(response.body.index_pattern.title).to.be(title); + expect(typeof response.body.index_pattern.id).to.be('string'); + expect(response.body.index_pattern.id.length > 0).to.be(true); + }); + + it('can specify primitive optional attributes when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const id = `test-id-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + id, + version: 'test-version', + type: 'test-type', + timeFieldName: 'test-timeFieldName', + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.title).to.be(title); + expect(response.body.index_pattern.id).to.be(id); + expect(response.body.index_pattern.version).to.be('test-version'); + expect(response.body.index_pattern.type).to.be('test-type'); + expect(response.body.index_pattern.timeFieldName).to.be('test-timeFieldName'); + }); + + it('can specify optional sourceFilters attribute when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + sourceFilters: [ + { + value: 'foo', + }, + ], + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.title).to.be(title); + expect(response.body.index_pattern.sourceFilters[0].value).to.be('foo'); + }); + + it('can specify optional fields attribute when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + }, + }, + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.title).to.be(title); + expect(response.body.index_pattern.fields.foo.name).to.be('foo'); + expect(response.body.index_pattern.fields.foo.type).to.be('string'); + }); + + it('can add two fields, one with all fields specified', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + }, + bar: { + name: 'bar', + type: 'number', + count: 123, + script: '', + esTypes: ['test-type'], + scripted: true, + }, + }, + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.title).to.be(title); + + expect(response.body.index_pattern.fields.foo.name).to.be('foo'); + expect(response.body.index_pattern.fields.foo.type).to.be('string'); + + expect(response.body.index_pattern.fields.bar.name).to.be('bar'); + expect(response.body.index_pattern.fields.bar.type).to.be('number'); + expect(response.body.index_pattern.fields.bar.count).to.be(123); + expect(response.body.index_pattern.fields.bar.script).to.be(''); + expect(response.body.index_pattern.fields.bar.esTypes[0]).to.be('test-type'); + expect(response.body.index_pattern.fields.bar.scripted).to.be(true); + }); + + it('can specify optional typeMeta attribute when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + typeMeta: {}, + }, + }); + + expect(response.status).to.be(200); + }); + + it('can specify optional fieldFormats attribute when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldFormats: { + foo: { + id: 'test-id', + params: {}, + }, + }, + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.fieldFormats.foo.id).to.be('test-id'); + expect(response.body.index_pattern.fieldFormats.foo.params).to.eql({}); + }); + + it('can specify optional fieldFormats attribute when creating an index pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldAttrs: { + foo: { + count: 123, + customLabel: 'test', + }, + }, + }, + }); + + expect(response.status).to.be(200); + expect(response.body.index_pattern.fieldAttrs.foo.count).to.be(123); + expect(response.body.index_pattern.fieldAttrs.foo.customLabel).to.be('test'); + }); + + describe('when creating index pattern with existing title', () => { + it('returns error, by default', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.status).to.be(200); + expect(response2.status).to.be(400); + }); + + it('succeeds, override flag is set', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + timeFieldName: 'foo', + }, + }); + const response2 = await supertest.post('/api/index_patterns/index_pattern').send({ + override: true, + index_pattern: { + title, + timeFieldName: 'bar', + }, + }); + + expect(response1.status).to.be(200); + expect(response2.status).to.be(200); + + expect(response1.body.index_pattern.timeFieldName).to.be('foo'); + expect(response2.body.index_pattern.timeFieldName).to.be('bar'); + + expect(response1.body.index_pattern.id).to.be(response1.body.index_pattern.id); + }); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/validation.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/validation.ts new file mode 100644 index 00000000000000..2b95ee2eac95a7 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/create_index_pattern/validation.ts @@ -0,0 +1,79 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('validation', () => { + it('returns error when index_pattern object is not provided', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern'); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body]: expected a plain object value, but found [null] instead.' + ); + }); + + it('returns error on empty index_pattern object', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: {}, + }); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body.index_pattern.title]: expected value of type [string] but got [undefined]' + ); + }); + + it('returns error when "override" parameter is not a boolean', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + override: 123, + index_pattern: { + title: 'foo', + }, + }); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body.override]: expected value of type [boolean] but got [number]' + ); + }); + + it('returns error when "refresh_fields" parameter is not a boolean', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + refresh_fields: 123, + index_pattern: { + title: 'foo', + }, + }); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body.refresh_fields]: expected value of type [boolean] but got [number]' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/errors.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/errors.ts new file mode 100644 index 00000000000000..b7b4bf89126820 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/errors.ts @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest.delete(`/api/index_patterns/index_pattern/${id}`); + + expect(response.status).to.be(404); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest.delete(`/api/index_patterns/index_pattern/${id}`); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/index.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/index.ts new file mode 100644 index 00000000000000..67a69812db8f9c --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('delete_index_pattern', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/main.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/main.ts new file mode 100644 index 00000000000000..bbf51779b69561 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/delete_index_pattern/main.ts @@ -0,0 +1,68 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('deletes an index_pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(response2.status).to.be(200); + + const response3 = await supertest.delete( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(response3.status).to.be(200); + + const response4 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(response4.status).to.be(404); + }); + + it('returns nothing', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + await supertest.get('/api/index_patterns/index_pattern/' + response1.body.index_pattern.id); + const response2 = await supertest.delete( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(!!response2.body).to.be(false); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/errors.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/errors.ts new file mode 100644 index 00000000000000..bf94d6b6b9444c --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/errors.ts @@ -0,0 +1,44 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest.get(`/api/index_patterns/index_pattern/${id}`); + + expect(response.status).to.be(404); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest.get(`/api/index_patterns/index_pattern/${id}`); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/index.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/index.ts new file mode 100644 index 00000000000000..74334cace2f2b2 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('get_index_pattern', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/main.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/main.ts new file mode 100644 index 00000000000000..89a3e41258b0b0 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/get_index_pattern/main.ts @@ -0,0 +1,41 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can retrieve an index_pattern', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(response2.body.index_pattern.title).to.be(title); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/index.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/index.ts new file mode 100644 index 00000000000000..7445ea81f9939c --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/index.ts @@ -0,0 +1,29 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('index_pattern_crud', () => { + loadTestFile(require.resolve('./create_index_pattern')); + loadTestFile(require.resolve('./get_index_pattern')); + loadTestFile(require.resolve('./delete_index_pattern')); + loadTestFile(require.resolve('./update_index_pattern')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/errors.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/errors.ts new file mode 100644 index 00000000000000..f1e8ac9ea7f76b --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/errors.ts @@ -0,0 +1,83 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns error when index_pattern object is not provided', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern/foo'); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body]: expected a plain object value, but found [null] instead.' + ); + }); + + it('returns error on non-existing index_pattern', async () => { + const response = await supertest + .post('/api/index_patterns/index_pattern/non-existing-index-pattern') + .send({ + index_pattern: {}, + }); + + expect(response.status).to.be(404); + expect(response.body.statusCode).to.be(404); + expect(response.body.message).to.be( + 'Saved object [index-pattern/non-existing-index-pattern] not found' + ); + }); + + it('returns error when "refresh_fields" parameter is not a boolean', async () => { + const response = await supertest.post('/api/index_patterns/index_pattern/foo`').send({ + refresh_fields: 123, + index_pattern: { + title: 'foo', + }, + }); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + '[request body.refresh_fields]: expected value of type [boolean] but got [number]' + ); + }); + + it('returns error when update patch is empty', async () => { + const title1 = `foo-${Date.now()}-${Math.random()}*`; + const response = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title: title1, + }, + }); + const id = response.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: {}, + }); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Index pattern change set is empty.'); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/index.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/index.ts new file mode 100644 index 00000000000000..d4d98f2bc637a8 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('update_index_pattern', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/main.ts b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/main.ts new file mode 100644 index 00000000000000..bfc4c23738aef2 --- /dev/null +++ b/test/api_integration/apis/index_patterns/index_pattern_crud/update_index_pattern/main.ts @@ -0,0 +1,337 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can update index_pattern title', async () => { + const title1 = `foo-${Date.now()}-${Math.random()}*`; + const title2 = `bar-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title: title1, + }, + }); + + expect(response1.body.index_pattern.title).to.be(title1); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + title: title2, + }, + }); + + expect(response2.body.index_pattern.title).to.be(title2); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.title).to.be(title2); + }); + + it('can update index_pattern timeFieldName', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + timeFieldName: 'timeFieldName1', + }, + }); + + expect(response1.body.index_pattern.timeFieldName).to.be('timeFieldName1'); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + timeFieldName: 'timeFieldName2', + }, + }); + + expect(response2.body.index_pattern.timeFieldName).to.be('timeFieldName2'); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.timeFieldName).to.be('timeFieldName2'); + }); + + it('can update index_pattern intervalName', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + expect(response1.body.index_pattern.intervalName).to.be(undefined); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + intervalName: 'intervalName2', + }, + }); + + expect(response2.body.index_pattern.intervalName).to.be('intervalName2'); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.intervalName).to.be('intervalName2'); + }); + + it('can update index_pattern sourceFilters', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + sourceFilters: [ + { + value: 'foo', + }, + ], + }, + }); + + expect(response1.body.index_pattern.sourceFilters).to.eql([ + { + value: 'foo', + }, + ]); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + sourceFilters: [ + { + value: 'bar', + }, + { + value: 'baz', + }, + ], + }, + }); + + expect(response2.body.index_pattern.sourceFilters).to.eql([ + { + value: 'bar', + }, + { + value: 'baz', + }, + ]); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.sourceFilters).to.eql([ + { + value: 'bar', + }, + { + value: 'baz', + }, + ]); + }); + + it('can update index_pattern fieldFormats', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fieldFormats: { + foo: { + id: 'foo', + params: { + bar: 'baz', + }, + }, + }, + }, + }); + + expect(response1.body.index_pattern.fieldFormats).to.eql({ + foo: { + id: 'foo', + params: { + bar: 'baz', + }, + }, + }); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + fieldFormats: { + a: { + id: 'a', + params: { + b: 'v', + }, + }, + }, + }, + }); + + expect(response2.body.index_pattern.fieldFormats).to.eql({ + a: { + id: 'a', + params: { + b: 'v', + }, + }, + }); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.fieldFormats).to.eql({ + a: { + id: 'a', + params: { + b: 'v', + }, + }, + }); + }); + + it('can update index_pattern type', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + type: 'foo', + }, + }); + + expect(response1.body.index_pattern.type).to.be('foo'); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + type: 'bar', + }, + }); + + expect(response2.body.index_pattern.type).to.be('bar'); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.type).to.be('bar'); + }); + + it('can update index_pattern typeMeta', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + typeMeta: { foo: 'bar' }, + }, + }); + + expect(response1.body.index_pattern.typeMeta).to.eql({ foo: 'bar' }); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + typeMeta: { foo: 'baz' }, + }, + }); + + expect(response2.body.index_pattern.typeMeta).to.eql({ foo: 'baz' }); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.typeMeta).to.eql({ foo: 'baz' }); + }); + + it('can update index_pattern fields', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + }, + }, + }, + }); + + expect(response1.body.index_pattern.fields.foo.name).to.be('foo'); + expect(response1.body.index_pattern.fields.foo.type).to.be('string'); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + fields: { + bar: { + name: 'bar', + type: 'number', + }, + }, + }, + }); + + expect(response2.body.index_pattern.fields.bar.name).to.be('bar'); + expect(response2.body.index_pattern.fields.bar.type).to.be('number'); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.fields.bar.name).to.be('bar'); + expect(response3.body.index_pattern.fields.bar.type).to.be('number'); + }); + + it('can update multiple index pattern fields at once', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + timeFieldName: 'timeFieldName1', + typeMeta: { foo: 'bar' }, + }, + }); + + expect(response1.body.index_pattern.timeFieldName).to.be('timeFieldName1'); + expect(response1.body.index_pattern.intervalName).to.be(undefined); + expect(response1.body.index_pattern.typeMeta.foo).to.be('bar'); + + const id = response1.body.index_pattern.id; + const response2 = await supertest.post('/api/index_patterns/index_pattern/' + id).send({ + index_pattern: { + timeFieldName: 'timeFieldName2', + intervalName: 'intervalName2', + typeMeta: { baz: 'qux' }, + }, + }); + + expect(response2.body.index_pattern.timeFieldName).to.be('timeFieldName2'); + expect(response2.body.index_pattern.intervalName).to.be('intervalName2'); + expect(response2.body.index_pattern.typeMeta.baz).to.be('qux'); + + const response3 = await supertest.get('/api/index_patterns/index_pattern/' + id); + + expect(response3.body.index_pattern.timeFieldName).to.be('timeFieldName2'); + expect(response3.body.index_pattern.intervalName).to.be('intervalName2'); + expect(response3.body.index_pattern.typeMeta.baz).to.be('qux'); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/errors.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/errors.ts new file mode 100644 index 00000000000000..36d99db9c533ec --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/errors.ts @@ -0,0 +1,69 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns an error field object is not provided', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const id = response1.body.index_pattern.id; + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field`) + .send({}); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be( + '[request body.field.name]: expected value of type [string] but got [undefined]' + ); + }); + + it('returns an error when creating a non-scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const id = response1.body.index_pattern.id; + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field`) + .send({ + field: { + name: 'bar', + type: 'number', + scripted: false, + }, + }); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Only scripted fields can be created.'); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/index.ts new file mode 100644 index 00000000000000..b7e886f38f8a76 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('create_scripted_field', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/main.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/main.ts new file mode 100644 index 00000000000000..3927f3b1595213 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/create_scripted_field/main.ts @@ -0,0 +1,86 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can create a new scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const id = response1.body.index_pattern.id; + const response2 = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field`) + .send({ + field: { + name: 'bar', + type: 'number', + scripted: true, + script: "doc['field_name'].value", + }, + }); + + expect(response2.status).to.be(200); + expect(response2.body.field.name).to.be('bar'); + expect(response2.body.field.type).to.be('number'); + expect(response2.body.field.scripted).to.be(true); + expect(response2.body.field.script).to.be("doc['field_name'].value"); + }); + + it('newly created scripted field is materialized in the index_pattern object', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + + await supertest + .post(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field`) + .send({ + field: { + name: 'bar', + type: 'number', + scripted: true, + script: "doc['field_name'].value", + }, + }); + + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(response2.status).to.be(200); + + const field = response2.body.index_pattern.fields.bar; + + expect(field.name).to.be('bar'); + expect(field.type).to.be('number'); + expect(field.scripted).to.be(true); + expect(field.script).to.be("doc['field_name'].value"); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/errors.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/errors.ts new file mode 100644 index 00000000000000..2182f47d91c080 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/errors.ts @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest.delete( + `/api/index_patterns/index_pattern/${id}/scripted_field/foo` + ); + + expect(response.status).to.be(404); + }); + + it('returns 404 error on non-existing scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest.delete( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/foo` + ); + + expect(response2.status).to.be(404); + }); + + it('returns error when attempting to delete a field which is not a scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + scripted: false, + name: 'foo', + type: 'string', + }, + }, + }, + }); + const response2 = await supertest.delete( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/foo` + ); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Only scripted fields can be deleted.'); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest.delete( + `/api/index_patterns/index_pattern/${id}/scripted_field/foo` + ); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/index.ts new file mode 100644 index 00000000000000..717d4d56272959 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('delete_scripted_field', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/main.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/main.ts new file mode 100644 index 00000000000000..11dfd5c2171ad9 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/delete_scripted_field/main.ts @@ -0,0 +1,62 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can remove a scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + bar: { + name: 'bar', + type: 'number', + scripted: true, + script: "doc['field_name'].value", + }, + }, + }, + }); + + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(typeof response2.body.index_pattern.fields.bar).to.be('object'); + + const response3 = await supertest.delete( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/bar` + ); + + expect(response3.status).to.be(200); + + const response4 = await supertest.get( + '/api/index_patterns/index_pattern/' + response1.body.index_pattern.id + ); + + expect(typeof response4.body.index_pattern.fields.bar).to.be('undefined'); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/errors.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/errors.ts new file mode 100644 index 00000000000000..1f39de8c03a963 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/errors.ts @@ -0,0 +1,85 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest.get( + `/api/index_patterns/index_pattern/${id}/scripted_field/foo` + ); + + expect(response.status).to.be(404); + }); + + it('returns 404 error on non-existing scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + }, + }); + const response2 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/foo` + ); + + expect(response2.status).to.be(404); + }); + + it('returns error when attempting to fetch a field which is not a scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + scripted: false, + name: 'foo', + type: 'string', + }, + }, + }, + }); + const response2 = await supertest.get( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/foo` + ); + + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Only scripted fields can be retrieved.'); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest.get( + `/api/index_patterns/index_pattern/${id}/scripted_field/foo` + ); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/index.ts new file mode 100644 index 00000000000000..f102a379c1c80f --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('get_scripted_field', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/main.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/main.ts new file mode 100644 index 00000000000000..2a44499be3e904 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/get_scripted_field/main.ts @@ -0,0 +1,63 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can fetch a scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + bar: { + name: 'bar', + type: 'number', + scripted: true, + script: "doc['field_name'].value", + }, + }, + }, + }); + + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + + response1.body.index_pattern.id + + '/scripted_field/bar' + ); + + expect(response2.status).to.be(200); + expect(typeof response2.body.field).to.be('object'); + expect(response2.body.field.name).to.be('bar'); + expect(response2.body.field.type).to.be('number'); + expect(response2.body.field.scripted).to.be(true); + expect(response2.body.field.script).to.be("doc['field_name'].value"); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/index.ts new file mode 100644 index 00000000000000..78332d68cac0c9 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/index.ts @@ -0,0 +1,30 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('scripted_fields_crud', () => { + loadTestFile(require.resolve('./create_scripted_field')); + loadTestFile(require.resolve('./get_scripted_field')); + loadTestFile(require.resolve('./delete_scripted_field')); + loadTestFile(require.resolve('./put_scripted_field')); + loadTestFile(require.resolve('./update_scripted_field')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/errors.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/errors.ts new file mode 100644 index 00000000000000..8a7e5aae2176f6 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/errors.ts @@ -0,0 +1,89 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest + .put(`/api/index_patterns/index_pattern/${id}/scripted_field`) + .send({ + field: { + name: 'foo', + type: 'number', + scripted: true, + }, + }); + + expect(response.status).to.be(404); + }); + + it('returns error update fields which is not a scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + scripted: false, + name: 'foo', + type: 'string', + }, + }, + }, + }); + const response2 = await supertest + .put(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field`) + .send({ + field: { + name: 'foo', + type: 'number', + }, + }); + expect(response2.status).to.be(400); + expect(response2.body.statusCode).to.be(400); + expect(response2.body.message).to.be('Only scripted fields can be put.'); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest + .put(`/api/index_patterns/index_pattern/${id}/scripted_field`) + .send({ + field: { + field: { + name: 'foo', + type: 'number', + scripted: true, + }, + }, + }); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/index.ts new file mode 100644 index 00000000000000..8f45bfc15fe1f7 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('put_scripted_field', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/main.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/main.ts new file mode 100644 index 00000000000000..d765255f1fe17d --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/put_scripted_field/main.ts @@ -0,0 +1,116 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can overwrite an existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + bar: { + name: 'bar', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + }, + }, + }); + + await supertest + .put(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field`) + .send({ + field: { + name: 'foo', + type: 'number', + scripted: true, + script: "doc['field_name'].value", + }, + }); + + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + + response1.body.index_pattern.id + + '/scripted_field/foo' + ); + + expect(response2.status).to.be(200); + expect(response2.body.field.type).to.be('number'); + + const response3 = await supertest.get( + '/api/index_patterns/index_pattern/' + + response1.body.index_pattern.id + + '/scripted_field/bar' + ); + + expect(response3.status).to.be(200); + expect(response3.body.field.type).to.be('string'); + }); + + it('can add a new scripted field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + }, + }, + }); + + await supertest + .put(`/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field`) + .send({ + field: { + name: 'bar', + type: 'number', + scripted: true, + script: "doc['bar'].value", + }, + }); + + const response2 = await supertest.get( + '/api/index_patterns/index_pattern/' + + response1.body.index_pattern.id + + '/scripted_field/bar' + ); + + expect(response2.status).to.be(200); + expect(response2.body.field.script).to.be("doc['bar'].value"); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/errors.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/errors.ts new file mode 100644 index 00000000000000..ff0e9120bbe701 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/errors.ts @@ -0,0 +1,79 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('errors', () => { + it('returns 404 error on non-existing index_pattern', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field/foo`) + .send({ + field: { + type: 'number', + scripted: true, + }, + }); + + expect(response.status).to.be(404); + }); + + it('returns error when field name is specified', async () => { + const id = `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-${Date.now()}`; + const response = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field/foo`) + .send({ + field: { + name: 'foo', + type: 'number', + scripted: true, + }, + }); + + expect(response.status).to.be(400); + expect(response.body.statusCode).to.be(400); + expect(response.body.message).to.be( + "[request body.field.name]: a value wasn't expected to be present" + ); + }); + + it('returns error when ID is too long', async () => { + const id = `xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx`; + const response = await supertest + .post(`/api/index_patterns/index_pattern/${id}/scripted_field/foo`) + .send({ + field: { + field: { + type: 'number', + scripted: true, + }, + }, + }); + + expect(response.status).to.be(400); + expect(response.body.message).to.be( + '[request params.id]: value has length [1759] but it must have a maximum length of [1000].' + ); + }); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/index.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/index.ts new file mode 100644 index 00000000000000..fdc7d94322c666 --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/index.ts @@ -0,0 +1,27 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('update_scripted_field', () => { + loadTestFile(require.resolve('./errors')); + loadTestFile(require.resolve('./main')); + }); +} diff --git a/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/main.ts b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/main.ts new file mode 100644 index 00000000000000..984969ab8d88bd --- /dev/null +++ b/test/api_integration/apis/index_patterns/scripted_fields_crud/update_scripted_field/main.ts @@ -0,0 +1,72 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + describe('main', () => { + it('can update an existing field', async () => { + const title = `foo-${Date.now()}-${Math.random()}*`; + const response1 = await supertest.post('/api/index_patterns/index_pattern').send({ + index_pattern: { + title, + fields: { + foo: { + name: 'foo', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + bar: { + name: 'bar', + type: 'string', + scripted: true, + script: "doc['field_name'].value", + }, + }, + }, + }); + + const response2 = await supertest + .post( + `/api/index_patterns/index_pattern/${response1.body.index_pattern.id}/scripted_field/foo` + ) + .send({ + field: { + script: "doc['bar'].value", + }, + }); + + expect(response2.body.field.script).to.be("doc['bar'].value"); + + const response3 = await supertest.get( + '/api/index_patterns/index_pattern/' + + response1.body.index_pattern.id + + '/scripted_field/foo' + ); + + expect(response3.status).to.be(200); + expect(response3.body.field.type).to.be('string'); + expect(response3.body.field.script).to.be("doc['bar'].value"); + }); + }); +} diff --git a/test/api_integration/apis/saved_objects/migrations.ts b/test/api_integration/apis/saved_objects/migrations.ts index 99a58620b17f56..fa9c2fd1a2d7fe 100644 --- a/test/api_integration/apis/saved_objects/migrations.ts +++ b/test/api_integration/apis/saved_objects/migrations.ts @@ -312,7 +312,10 @@ export default ({ getService }: FtrProviderContext) => { result // @ts-expect-error destIndex exists only on MigrationResult status: 'migrated'; .map(({ status, destIndex }) => ({ status, destIndex })) - .sort((a) => (a.destIndex ? 0 : 1)) + .sort(({ destIndex: a }, { destIndex: b }) => + // sort by destIndex in ascending order, keeping falsy values at the end + (a && !b) || a < b ? -1 : (!a && b) || a > b ? 1 : 0 + ) ).to.eql([ { status: 'migrated', destIndex: '.migration-c_2' }, { status: 'skipped', destIndex: undefined }, diff --git a/test/api_integration/apis/telemetry/__fixtures__/ui_counters.js b/test/api_integration/apis/telemetry/__fixtures__/ui_counters.js new file mode 100644 index 00000000000000..31df40e9a255c1 --- /dev/null +++ b/test/api_integration/apis/telemetry/__fixtures__/ui_counters.js @@ -0,0 +1,47 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export const basicUiCounters = { + dailyEvents: [ + { + appName: 'myApp', + eventName: 'my_event_885082425109579', + lastUpdatedAt: '2020-11-30T11:43:00.961Z', + fromTimestamp: '2020-11-30T00:00:00Z', + counterType: 'loaded', + total: 1, + }, + { + appName: 'myApp', + eventName: 'my_event_885082425109579_2', + lastUpdatedAt: '2020-10-28T11:43:00.961Z', + fromTimestamp: '2020-10-28T00:00:00Z', + counterType: 'count', + total: 1, + }, + { + appName: 'myApp', + eventName: 'my_event_885082425109579', + lastUpdatedAt: '2020-11-30T11:43:00.961Z', + fromTimestamp: '2020-11-30T00:00:00Z', + counterType: 'click', + total: 2, + }, + ], +}; diff --git a/test/api_integration/apis/telemetry/telemetry_local.js b/test/api_integration/apis/telemetry/telemetry_local.js index b3d34d5910fc3b..64ff24e4ebe90d 100644 --- a/test/api_integration/apis/telemetry/telemetry_local.js +++ b/test/api_integration/apis/telemetry/telemetry_local.js @@ -19,7 +19,7 @@ import expect from '@kbn/expect'; import _ from 'lodash'; - +import { basicUiCounters } from './__fixtures__/ui_counters'; /* * Create a single-level array with strings for all the paths to values in the * source object, up to 3 deep. Going deeper than 3 causes a bit too much churn @@ -45,11 +45,11 @@ export default function ({ getService }) { after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/basic')); before('create some telemetry-data tracked indices', async () => { - return es.indices.create({ index: 'filebeat-telemetry_tests_logs' }); + await es.indices.create({ index: 'filebeat-telemetry_tests_logs' }); }); - after('cleanup telemetry-data tracked indices', () => { - return es.indices.delete({ index: 'filebeat-telemetry_tests_logs' }); + after('cleanup telemetry-data tracked indices', async () => { + await es.indices.delete({ index: 'filebeat-telemetry_tests_logs' }); }); it('should pull local stats and validate data types', async () => { @@ -62,6 +62,8 @@ export default function ({ getService }) { expect(body.length).to.be(1); const stats = body[0]; expect(stats.collection).to.be('local'); + expect(stats.collectionSource).to.be('local'); + expect(stats.license).to.be.undefined; // OSS cannot get the license expect(stats.stack_stats.kibana.count).to.be.a('number'); expect(stats.stack_stats.kibana.indices).to.be.a('number'); expect(stats.stack_stats.kibana.os.platforms[0].platform).to.be.a('string'); @@ -72,6 +74,7 @@ export default function ({ getService }) { expect(stats.stack_stats.kibana.plugins.telemetry.usage_fetcher).to.be.a('string'); expect(stats.stack_stats.kibana.plugins.stack_management).to.be.an('object'); expect(stats.stack_stats.kibana.plugins.ui_metric).to.be.an('object'); + expect(stats.stack_stats.kibana.plugins.ui_counters).to.be.an('object'); expect(stats.stack_stats.kibana.plugins.application_usage).to.be.an('object'); expect(stats.stack_stats.kibana.plugins.kql.defaultQueryLanguage).to.be.a('string'); expect(stats.stack_stats.kibana.plugins['tsvb-validation']).to.be.an('object'); @@ -92,6 +95,22 @@ export default function ({ getService }) { expect(stats.stack_stats.data[0].size_in_bytes).to.be.a('number'); }); + describe('UI Counters telemetry', () => { + before('Add UI Counters saved objects', () => esArchiver.load('saved_objects/ui_counters')); + after('cleanup saved objects changes', () => esArchiver.unload('saved_objects/ui_counters')); + it('returns ui counters aggregated by day', async () => { + const { body } = await supertest + .post('/api/telemetry/v2/clusters/_stats') + .set('kbn-xsrf', 'xxx') + .send({ unencrypted: true }) + .expect(200); + + expect(body.length).to.be(1); + const stats = body[0]; + expect(stats.stack_stats.kibana.plugins.ui_counters).to.eql(basicUiCounters); + }); + }); + it('should pull local stats and validate fields', async () => { const { body } = await supertest .post('/api/telemetry/v2/clusters/_stats') diff --git a/test/api_integration/apis/ui_counters/index.js b/test/api_integration/apis/ui_counters/index.js new file mode 100644 index 00000000000000..9fb23656daa4f7 --- /dev/null +++ b/test/api_integration/apis/ui_counters/index.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export default function ({ loadTestFile }) { + describe('UI Counters', () => { + loadTestFile(require.resolve('./ui_counters')); + }); +} diff --git a/test/api_integration/apis/ui_counters/ui_counters.js b/test/api_integration/apis/ui_counters/ui_counters.js new file mode 100644 index 00000000000000..87728b6ac2f889 --- /dev/null +++ b/test/api_integration/apis/ui_counters/ui_counters.js @@ -0,0 +1,97 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import expect from '@kbn/expect'; +import { ReportManager, METRIC_TYPE } from '@kbn/analytics'; +import moment from 'moment'; + +export default function ({ getService }) { + const supertest = getService('supertest'); + const es = getService('legacyEs'); + + const createUiCounterEvent = (eventName, type, count = 1) => ({ + eventName, + appName: 'myApp', + type, + count, + }); + + describe('UI Counters API', () => { + const dayDate = moment().format('DDMMYYYY'); + + it('stores ui counter events in savedObjects', async () => { + const reportManager = new ReportManager(); + + const { report } = reportManager.assignReports([ + createUiCounterEvent('my_event', METRIC_TYPE.COUNT), + ]); + + await supertest + .post('/api/ui_counters/_report') + .set('kbn-xsrf', 'kibana') + .set('content-type', 'application/json') + .send({ report }) + .expect(200); + + const response = await es.search({ index: '.kibana', q: 'type:ui-counter' }); + + const ids = response.hits.hits.map(({ _id }) => _id); + expect(ids.includes(`ui-counter:myApp:${dayDate}:${METRIC_TYPE.COUNT}:my_event`)).to.eql( + true + ); + }); + + it('supports multiple events', async () => { + const reportManager = new ReportManager(); + const hrTime = process.hrtime(); + const nano = hrTime[0] * 1000000000 + hrTime[1]; + const uniqueEventName = `my_event_${nano}`; + const { report } = reportManager.assignReports([ + createUiCounterEvent(uniqueEventName, METRIC_TYPE.COUNT), + createUiCounterEvent(`${uniqueEventName}_2`, METRIC_TYPE.COUNT), + createUiCounterEvent(uniqueEventName, METRIC_TYPE.CLICK, 2), + ]); + await supertest + .post('/api/ui_counters/_report') + .set('kbn-xsrf', 'kibana') + .set('content-type', 'application/json') + .send({ report }) + .expect(200); + + const { + hits: { hits }, + } = await es.search({ index: '.kibana', q: 'type:ui-counter' }); + + const countTypeEvent = hits.find( + (hit) => hit._id === `ui-counter:myApp:${dayDate}:${METRIC_TYPE.COUNT}:${uniqueEventName}` + ); + expect(countTypeEvent._source['ui-counter'].count).to.eql(1); + + const clickTypeEvent = hits.find( + (hit) => hit._id === `ui-counter:myApp:${dayDate}:${METRIC_TYPE.CLICK}:${uniqueEventName}` + ); + expect(clickTypeEvent._source['ui-counter'].count).to.eql(2); + + const secondEvent = hits.find( + (hit) => hit._id === `ui-counter:myApp:${dayDate}:${METRIC_TYPE.COUNT}:${uniqueEventName}_2` + ); + expect(secondEvent._source['ui-counter'].count).to.eql(1); + }); + }); +} diff --git a/test/api_integration/apis/ui_metric/ui_metric.js b/test/api_integration/apis/ui_metric/ui_metric.js index b7d5c81b538a66..e1daee48505194 100644 --- a/test/api_integration/apis/ui_metric/ui_metric.js +++ b/test/api_integration/apis/ui_metric/ui_metric.js @@ -24,11 +24,11 @@ export default function ({ getService }) { const supertest = getService('supertest'); const es = getService('legacyEs'); - const createStatsMetric = (eventName) => ({ + const createStatsMetric = (eventName, type = METRIC_TYPE.CLICK, count = 1) => ({ eventName, appName: 'myApp', - type: METRIC_TYPE.CLICK, - count: 1, + type, + count, }); const createUserAgentMetric = (appName) => ({ @@ -38,13 +38,13 @@ export default function ({ getService }) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36', }); - describe('ui_metric API', () => { + describe('ui_metric savedObject data', () => { it('increments the count field in the document defined by the {app}/{action_type} path', async () => { const reportManager = new ReportManager(); const uiStatsMetric = createStatsMetric('myEvent'); const { report } = reportManager.assignReports([uiStatsMetric]); await supertest - .post('/api/ui_metric/report') + .post('/api/ui_counters/_report') .set('kbn-xsrf', 'kibana') .set('content-type', 'application/json') .send({ report }) @@ -69,7 +69,7 @@ export default function ({ getService }) { uiStatsMetric2, ]); await supertest - .post('/api/ui_metric/report') + .post('/api/ui_counters/_report') .set('kbn-xsrf', 'kibana') .set('content-type', 'application/json') .send({ report }) @@ -81,5 +81,30 @@ export default function ({ getService }) { expect(ids.includes(`ui-metric:myApp:${uniqueEventName}`)).to.eql(true); expect(ids.includes(`ui-metric:kibana-user_agent:${userAgentMetric.userAgent}`)).to.eql(true); }); + + it('aggregates multiple events with same eventID', async () => { + const reportManager = new ReportManager(); + const hrTime = process.hrtime(); + const nano = hrTime[0] * 1000000000 + hrTime[1]; + const uniqueEventName = `my_event_${nano}`; + const { report } = reportManager.assignReports([ + , + createStatsMetric(uniqueEventName, METRIC_TYPE.CLICK, 2), + createStatsMetric(uniqueEventName, METRIC_TYPE.LOADED), + ]); + await supertest + .post('/api/ui_counters/_report') + .set('kbn-xsrf', 'kibana') + .set('content-type', 'application/json') + .send({ report }) + .expect(200); + + const { + hits: { hits }, + } = await es.search({ index: '.kibana', q: 'type:ui-metric' }); + + const countTypeEvent = hits.find((hit) => hit._id === `ui-metric:myApp:${uniqueEventName}`); + expect(countTypeEvent._source['ui-metric'].count).to.eql(3); + }); }); } diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/data.json.gz b/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/data.json.gz new file mode 100644 index 00000000000000..3f42c777260b3b Binary files /dev/null and b/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/data.json.gz differ diff --git a/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/mappings.json b/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/mappings.json new file mode 100644 index 00000000000000..926fd5d79faa08 --- /dev/null +++ b/test/api_integration/fixtures/es_archiver/saved_objects/ui_counters/mappings.json @@ -0,0 +1,274 @@ +{ + "type": "index", + "value": { + "index": ".kibana", + "settings": { + "index": { + "number_of_shards": "1", + "number_of_replicas": "1" + } + }, + "mappings": { + "dynamic": "strict", + "properties": { + "config": { + "dynamic": "true", + "properties": { + "buildNum": { + "type": "keyword" + }, + "defaultIndex": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + }, + "ui-counter": { + "properties": { + "count": { + "type": "integer" + } + } + }, + "dashboard": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "optionsJSON": { + "type": "text" + }, + "panelsJSON": { + "type": "text" + }, + "refreshInterval": { + "properties": { + "display": { + "type": "keyword" + }, + "pause": { + "type": "boolean" + }, + "section": { + "type": "integer" + }, + "value": { + "type": "integer" + } + } + }, + "timeFrom": { + "type": "keyword" + }, + "timeRestore": { + "type": "boolean" + }, + "timeTo": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "index-pattern": { + "properties": { + "fieldFormatMap": { + "type": "text" + }, + "fields": { + "type": "text" + }, + "intervalName": { + "type": "keyword" + }, + "notExpandable": { + "type": "boolean" + }, + "sourceFilters": { + "type": "text" + }, + "timeFieldName": { + "type": "keyword" + }, + "title": { + "type": "text" + } + } + }, + "search": { + "properties": { + "columns": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "sort": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "server": { + "properties": { + "uuid": { + "type": "keyword" + } + } + }, + "timelion-sheet": { + "properties": { + "description": { + "type": "text" + }, + "hits": { + "type": "integer" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "timelion_chart_height": { + "type": "integer" + }, + "timelion_columns": { + "type": "integer" + }, + "timelion_interval": { + "type": "keyword" + }, + "timelion_other_interval": { + "type": "keyword" + }, + "timelion_rows": { + "type": "integer" + }, + "timelion_sheet": { + "type": "text" + }, + "title": { + "type": "text" + }, + "version": { + "type": "integer" + } + } + }, + "namespace": { + "type": "keyword" + }, + "references": { + "properties": { + "id": { + "type": "keyword" + }, + "name": { + "type": "keyword" + }, + "type": { + "type": "keyword" + } + }, + "type": "nested" + }, + "type": { + "type": "keyword" + }, + "updated_at": { + "type": "date" + }, + "url": { + "properties": { + "accessCount": { + "type": "long" + }, + "accessDate": { + "type": "date" + }, + "createDate": { + "type": "date" + }, + "url": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 2048 + } + } + } + } + }, + "visualization": { + "properties": { + "description": { + "type": "text" + }, + "kibanaSavedObjectMeta": { + "properties": { + "searchSourceJSON": { + "type": "text" + } + } + }, + "savedSearchId": { + "type": "keyword" + }, + "title": { + "type": "text" + }, + "uiStateJSON": { + "type": "text" + }, + "version": { + "type": "integer" + }, + "visState": { + "type": "text" + } + } + } + } + } + } +} diff --git a/test/common/services/deployment.ts b/test/common/services/deployment.ts new file mode 100644 index 00000000000000..cad7a87e39f7c8 --- /dev/null +++ b/test/common/services/deployment.ts @@ -0,0 +1,77 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { get } from 'lodash'; +import fetch from 'node-fetch'; +import { getUrl } from '@kbn/test'; + +import { FtrProviderContext } from '../ftr_provider_context'; + +export function DeploymentProvider({ getService }: FtrProviderContext) { + const config = getService('config'); + + return { + /** + * Returns Kibana host URL + */ + getHostPort() { + return getUrl.baseUrl(config.get('servers.kibana')); + }, + + /** + * Returns ES host URL + */ + getEsHostPort() { + return getUrl.baseUrl(config.get('servers.elasticsearch')); + }, + + /** + * Helper to detect an OSS licensed Kibana + * Useful for functional testing in cloud environment + */ + async isOss() { + const baseUrl = this.getEsHostPort(); + const username = config.get('servers.elasticsearch.username'); + const password = config.get('servers.elasticsearch.password'); + const response = await fetch(baseUrl + '/_xpack', { + method: 'get', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Basic ' + Buffer.from(username + ':' + password).toString('base64'), + }, + }); + return response.status !== 200; + }, + + async isCloud(): Promise { + const baseUrl = this.getHostPort(); + const username = config.get('servers.kibana.username'); + const password = config.get('servers.kibana.password'); + const response = await fetch(baseUrl + '/api/stats?extended', { + method: 'get', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Basic ' + Buffer.from(username + ':' + password).toString('base64'), + }, + }); + const data = await response.json(); + return get(data, 'usage.cloud.is_cloud_enabled', false); + }, + }; +} diff --git a/test/common/services/es_archiver.ts b/test/common/services/es_archiver.ts index 9c99445fa4827b..964c40e02b9cc8 100644 --- a/test/common/services/es_archiver.ts +++ b/test/common/services/es_archiver.ts @@ -17,17 +17,18 @@ * under the License. */ -import { format as formatUrl } from 'url'; import { EsArchiver } from '@kbn/es-archiver'; import { FtrProviderContext } from '../ftr_provider_context'; // @ts-ignore not TS yet import * as KibanaServer from './kibana_server'; -export function EsArchiverProvider({ getService, hasService }: FtrProviderContext): EsArchiver { +export function EsArchiverProvider({ getService }: FtrProviderContext): EsArchiver { const config = getService('config'); const client = getService('legacyEs'); const log = getService('log'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); if (!config.get('esArchiver')) { throw new Error(`esArchiver can't be used unless you specify it's config in your config file`); @@ -39,17 +40,15 @@ export function EsArchiverProvider({ getService, hasService }: FtrProviderContex client, dataDir, log, - kibanaUrl: formatUrl(config.get('servers.kibana')), + kbnClient: kibanaServer, }); - if (hasService('kibanaServer')) { - KibanaServer.extendEsArchiver({ - esArchiver, - kibanaServer: getService('kibanaServer'), - retry: getService('retry'), - defaults: config.get('uiSettings.defaults'), - }); - } + KibanaServer.extendEsArchiver({ + esArchiver, + kibanaServer, + retry, + defaults: config.get('uiSettings.defaults'), + }); return esArchiver; } diff --git a/test/common/services/index.ts b/test/common/services/index.ts index 0a714e9875c370..b9fa99995ce9d9 100644 --- a/test/common/services/index.ts +++ b/test/common/services/index.ts @@ -17,6 +17,7 @@ * under the License. */ +import { DeploymentProvider } from './deployment'; import { LegacyEsProvider } from './legacy_es'; import { ElasticsearchProvider } from './elasticsearch'; import { EsArchiverProvider } from './es_archiver'; @@ -26,6 +27,7 @@ import { RandomnessProvider } from './randomness'; import { SecurityServiceProvider } from './security'; export const services = { + deployment: DeploymentProvider, legacyEs: LegacyEsProvider, es: ElasticsearchProvider, esArchiver: EsArchiverProvider, diff --git a/test/examples/state_sync/todo_app.ts b/test/examples/state_sync/todo_app.ts index 1ac5376b9ed8d0..d29a533aa1af19 100644 --- a/test/examples/state_sync/todo_app.ts +++ b/test/examples/state_sync/todo_app.ts @@ -29,6 +29,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide const browser = getService('browser'); const PageObjects = getPageObjects(['common']); const log = getService('log'); + const deployment = getService('deployment'); describe('TODO app', () => { describe("TODO app with browser history (platform's ScopedHistory)", async () => { @@ -36,7 +37,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide let base: string; before(async () => { - base = await PageObjects.common.getHostPort(); + base = await deployment.getHostPort(); await PageObjects.common.navigateToApp(appId, { insertTimestamp: false }); }); diff --git a/test/functional/apps/dashboard/dashboard_filtering.js b/test/functional/apps/dashboard/dashboard_filtering.js index 0be4fbbebe7c57..b3812af38c3480 100644 --- a/test/functional/apps/dashboard/dashboard_filtering.js +++ b/test/functional/apps/dashboard/dashboard_filtering.js @@ -92,7 +92,7 @@ export default function ({ getService, getPageObjects }) { }); it('tsvb time series shows no data message', async () => { - expect(await testSubjects.exists('noTSVBDataMessage')).to.be(true); + expect(await testSubjects.exists('timeseriesVis > visNoResult')).to.be(true); }); it('metric value shows no data', async () => { diff --git a/test/functional/apps/dashboard/url_field_formatter.ts b/test/functional/apps/dashboard/url_field_formatter.ts index a18ad740681bfd..62cc1a7e957542 100644 --- a/test/functional/apps/dashboard/url_field_formatter.ts +++ b/test/functional/apps/dashboard/url_field_formatter.ts @@ -34,6 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const browser = getService('browser'); const fieldName = 'clientip'; + const deployment = getService('deployment'); const clickFieldAndCheckUrl = async (fieldLink: WebElementWrapper) => { const fieldValue = await fieldLink.getVisibleText(); @@ -42,7 +43,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(windowHandlers.length).to.equal(2); await browser.switchToWindow(windowHandlers[1]); const currentUrl = await browser.getCurrentUrl(); - const fieldUrl = common.getHostPort() + '/app/' + fieldValue; + const fieldUrl = deployment.getHostPort() + '/app/' + fieldValue; expect(currentUrl).to.equal(fieldUrl); }; diff --git a/test/functional/apps/discover/_date_nanos.js b/test/functional/apps/discover/_date_nanos.js index 9b076c82157544..1b5c033d67a43a 100644 --- a/test/functional/apps/discover/_date_nanos.js +++ b/test/functional/apps/discover/_date_nanos.js @@ -27,8 +27,7 @@ export default function ({ getService, getPageObjects }) { const fromTime = 'Sep 22, 2019 @ 20:31:44.000'; const toTime = 'Sep 23, 2019 @ 03:31:44.000'; - // Failing: See https://github.com/elastic/kibana/issues/82035 - describe.skip('date_nanos', function () { + describe('date_nanos', function () { before(async function () { await esArchiver.loadIfNeeded('date_nanos'); await kibanaServer.uiSettings.replace({ defaultIndex: 'date-nanos' }); diff --git a/test/functional/apps/discover/_discover.js b/test/functional/apps/discover/_discover.js index fe5c04c001731e..78197cd8d66ff5 100644 --- a/test/functional/apps/discover/_discover.js +++ b/test/functional/apps/discover/_discover.js @@ -32,8 +32,7 @@ export default function ({ getService, getPageObjects }) { defaultIndex: 'logstash-*', }; - // Failing: See https://github.com/elastic/kibana/issues/82915 - describe.skip('discover test', function describeIndexTests() { + describe('discover test', function describeIndexTests() { before(async function () { log.debug('load kibana index with default index pattern'); await esArchiver.load('discover'); @@ -115,7 +114,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.discover.waitUntilSearchingHasFinished(); const newDurationHours = await PageObjects.timePicker.getTimeDurationInHours(); - expect(Math.round(newDurationHours)).to.be(24); + expect(Math.round(newDurationHours)).to.be(26); await retry.waitFor('doc table to contain the right search result', async () => { const rowData = await PageObjects.discover.getDocTableField(1); @@ -315,10 +314,13 @@ export default function ({ getService, getPageObjects }) { const getRequestTimestamp = async () => { const requestStats = await inspector.getTableData(); - const requestTimestamp = requestStats.filter((r) => - r[0].includes('Request timestamp') - )[0][1]; - return requestTimestamp; + const requestStatsRow = requestStats.filter( + (r) => r && r[0] && r[0].includes('Request timestamp') + ); + if (!requestStatsRow || !requestStatsRow[0] || !requestStatsRow[0][1]) { + return ''; + } + return requestStatsRow[0][1]; }; const requestTimestampBefore = await getRequestTimestamp(); @@ -327,7 +329,7 @@ export default function ({ getService, getPageObjects }) { log.debug( `Timestamp before: ${requestTimestampBefore}, Timestamp after: ${requestTimestampAfter}` ); - return requestTimestampBefore !== requestTimestampAfter; + return requestTimestampAfter && requestTimestampBefore !== requestTimestampAfter; }); }); diff --git a/test/functional/apps/discover/_discover_histogram.ts b/test/functional/apps/discover/_discover_histogram.ts index 672becca614c97..e06783174e83b5 100644 --- a/test/functional/apps/discover/_discover_histogram.ts +++ b/test/functional/apps/discover/_discover_histogram.ts @@ -31,8 +31,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'dateFormat:tz': 'Europe/Berlin', }; - // FLAKY: https://github.com/elastic/kibana/issues/81576 - describe.skip('discover histogram', function describeIndexTests() { + describe('discover histogram', function describeIndexTests() { before(async () => { await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.load('long_window_logstash'); diff --git a/test/functional/apps/discover/_doc_table.ts b/test/functional/apps/discover/_doc_table.ts index dceb12a02f87f4..20fda144b338e9 100644 --- a/test/functional/apps/discover/_doc_table.ts +++ b/test/functional/apps/discover/_doc_table.ts @@ -31,8 +31,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { defaultIndex: 'logstash-*', }; - // Failing: See https://github.com/elastic/kibana/issues/82445 - describe.skip('discover doc table', function describeIndexTests() { + describe('discover doc table', function describeIndexTests() { const defaultRowsLimit = 50; const rowsHardLimit = 500; @@ -43,14 +42,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // and load a set of makelogs data await esArchiver.loadIfNeeded('logstash_functional'); await kibanaServer.uiSettings.replace(defaultSettings); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); log.debug('discover doc table'); await PageObjects.common.navigateToApp('discover'); }); - beforeEach(async function () { - await PageObjects.timePicker.setDefaultAbsoluteRange(); - }); - it('should show the first 50 rows by default', async function () { // with the default range the number of hits is ~14000 const rows = await PageObjects.discover.getDocTableRows(); @@ -68,6 +64,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const finalRows = await PageObjects.discover.getDocTableRows(); expect(finalRows.length).to.be.below(initialRows.length); + await PageObjects.timePicker.setDefaultAbsoluteRange(); }); it(`should load up to ${rowsHardLimit} rows when scrolling at the end of the table`, async function () { @@ -89,8 +86,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await footer.getVisibleText()).to.have.string(rowsHardLimit); }); - // FLAKY: https://github.com/elastic/kibana/issues/81632 - describe.skip('expand a document row', function () { + describe('expand a document row', function () { const rowToInspect = 1; beforeEach(async function () { // close the toggle if open diff --git a/test/functional/apps/discover/_indexpattern_without_timefield.ts b/test/functional/apps/discover/_indexpattern_without_timefield.ts index 677b27c31bd869..20d783690277f7 100644 --- a/test/functional/apps/discover/_indexpattern_without_timefield.ts +++ b/test/functional/apps/discover/_indexpattern_without_timefield.ts @@ -20,6 +20,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { + const browser = getService('browser'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const security = getService('security'); @@ -50,5 +51,21 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { throw new Error('Expected timepicker to exist'); } }); + it('should switch between with and without timefield using the browser back button', async () => { + await PageObjects.discover.selectIndexPattern('without-timefield'); + if (await PageObjects.timePicker.timePickerExists()) { + throw new Error('Expected timepicker not to exist'); + } + + await PageObjects.discover.selectIndexPattern('with-timefield'); + if (!(await PageObjects.timePicker.timePickerExists())) { + throw new Error('Expected timepicker to exist'); + } + // Navigating back to discover + await browser.goBack(); + if (await PageObjects.timePicker.timePickerExists()) { + throw new Error('Expected timepicker not to exist'); + } + }); }); } diff --git a/test/functional/apps/discover/_shared_links.js b/test/functional/apps/discover/_shared_links.js index 56c64856240436..60058ead1101e6 100644 --- a/test/functional/apps/discover/_shared_links.js +++ b/test/functional/apps/discover/_shared_links.js @@ -27,13 +27,13 @@ export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['common', 'discover', 'share', 'timePicker']); const browser = getService('browser'); const toasts = getService('toasts'); + const deployment = getService('deployment'); - // FLAKY: https://github.com/elastic/kibana/issues/80104 - describe.skip('shared links', function describeIndexTests() { + describe('shared links', function describeIndexTests() { let baseUrl; async function setup({ storeStateInSessionStorage }) { - baseUrl = PageObjects.common.getHostPort(); + baseUrl = deployment.getHostPort(); log.debug('baseUrl = ' + baseUrl); // browsers don't show the ':port' if it's 80 or 443 so we have to // remove that part so we can get a match in the tests. diff --git a/test/functional/apps/discover/_sidebar.js b/test/functional/apps/discover/_sidebar.js deleted file mode 100644 index ce7ebff9cce74c..00000000000000 --- a/test/functional/apps/discover/_sidebar.js +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import expect from '@kbn/expect'; - -export default function ({ getService, getPageObjects }) { - const log = getService('log'); - const esArchiver = getService('esArchiver'); - const kibanaServer = getService('kibanaServer'); - const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); - - describe('discover sidebar', function describeIndexTests() { - before(async function () { - // delete .kibana index and update configDoc - await kibanaServer.uiSettings.replace({ - defaultIndex: 'logstash-*', - }); - - log.debug('load kibana index with default index pattern'); - await esArchiver.load('discover'); - - // and load a set of makelogs data - await esArchiver.loadIfNeeded('logstash_functional'); - - log.debug('discover'); - await PageObjects.common.navigateToApp('discover'); - - await PageObjects.timePicker.setDefaultAbsoluteRange(); - }); - - describe('field filtering', function () { - it('should reveal and hide the filter form when the toggle is clicked', async function () { - await PageObjects.discover.openSidebarFieldFilter(); - await PageObjects.discover.closeSidebarFieldFilter(); - }); - }); - - describe('collapse expand', function () { - it('should initially be expanded', async function () { - const width = await PageObjects.discover.getSidebarWidth(); - log.debug('expanded sidebar width = ' + width); - expect(width > 20).to.be(true); - }); - - it('should collapse when clicked', async function () { - await PageObjects.discover.toggleSidebarCollapse(); - log.debug('PageObjects.discover.getSidebarWidth()'); - const width = await PageObjects.discover.getSidebarWidth(); - log.debug('collapsed sidebar width = ' + width); - expect(width < 20).to.be(true); - }); - - it('should expand when clicked', async function () { - await PageObjects.discover.toggleSidebarCollapse(); - - log.debug('PageObjects.discover.getSidebarWidth()'); - const width = await PageObjects.discover.getSidebarWidth(); - log.debug('expanded sidebar width = ' + width); - expect(width > 20).to.be(true); - }); - }); - }); -} diff --git a/test/functional/apps/discover/_sidebar.ts b/test/functional/apps/discover/_sidebar.ts new file mode 100644 index 00000000000000..c91c9020b373b9 --- /dev/null +++ b/test/functional/apps/discover/_sidebar.ts @@ -0,0 +1,62 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); + const testSubjects = getService('testSubjects'); + + describe('discover sidebar', function describeIndexTests() { + before(async function () { + await esArchiver.loadIfNeeded('logstash_functional'); + await esArchiver.loadIfNeeded('discover'); + await kibanaServer.uiSettings.replace({ + defaultIndex: 'logstash-*', + }); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await PageObjects.common.navigateToApp('discover'); + }); + + describe('field filtering', function () { + it('should reveal and hide the filter form when the toggle is clicked', async function () { + await PageObjects.discover.openSidebarFieldFilter(); + await PageObjects.discover.closeSidebarFieldFilter(); + }); + }); + + describe('collapse expand', function () { + it('should initially be expanded', async function () { + await testSubjects.existOrFail('discover-sidebar'); + }); + + it('should collapse when clicked', async function () { + await PageObjects.discover.toggleSidebarCollapse(); + await testSubjects.missingOrFail('discover-sidebar'); + }); + + it('should expand when clicked', async function () { + await PageObjects.discover.toggleSidebarCollapse(); + await testSubjects.existOrFail('discover-sidebar'); + }); + }); + }); +} diff --git a/test/functional/apps/home/_newsfeed.ts b/test/functional/apps/home/_newsfeed.ts index aabd243e48f21a..4568ba2b47d807 100644 --- a/test/functional/apps/home/_newsfeed.ts +++ b/test/functional/apps/home/_newsfeed.ts @@ -22,7 +22,8 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const globalNav = getService('globalNav'); - const PageObjects = getPageObjects(['common', 'newsfeed']); + const deployment = getService('deployment'); + const PageObjects = getPageObjects(['newsfeed']); describe('Newsfeed', () => { before(async () => { @@ -48,7 +49,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('shows all news from newsfeed', async () => { const objects = await PageObjects.newsfeed.getNewsfeedList(); - if (await PageObjects.common.isOss()) { + if (await deployment.isOss()) { expect(objects).to.eql([ '21 June 2019\nYou are functionally testing the newsfeed widget with fixtures!\nSee test/common/fixtures/plugins/newsfeed/newsfeed_simulation\nGeneric feed-viewer could go here', '21 June 2019\nStaging too!\nHello world\nGeneric feed-viewer could go here', diff --git a/test/functional/apps/management/_index_pattern_popularity.js b/test/functional/apps/management/_index_pattern_popularity.js index 530b8e1111a0c6..e2fcf50ef2c12c 100644 --- a/test/functional/apps/management/_index_pattern_popularity.js +++ b/test/functional/apps/management/_index_pattern_popularity.js @@ -60,7 +60,7 @@ export default function ({ getService, getPageObjects }) { // check that it is 0 (previous increase was cancelled const popularity = await PageObjects.settings.getPopularity(); log.debug('popularity = ' + popularity); - expect(popularity).to.be('0'); + expect(popularity).to.be(''); }); it('can be saved', async function () { diff --git a/test/functional/apps/management/_scripted_fields.js b/test/functional/apps/management/_scripted_fields.js index 5ca01f239e762f..a2cc976f23127c 100644 --- a/test/functional/apps/management/_scripted_fields.js +++ b/test/functional/apps/management/_scripted_fields.js @@ -44,6 +44,7 @@ export default function ({ getService, getPageObjects }) { const inspector = getService('inspector'); const testSubjects = getService('testSubjects'); const filterBar = getService('filterBar'); + const deployment = getService('deployment'); const PageObjects = getPageObjects([ 'common', 'header', @@ -202,7 +203,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); await PageObjects.header.waitUntilLoadingHasFinished(); - if (await PageObjects.common.isOss()) { + if (await deployment.isOss()) { // OSS renders a vertical bar chart and we check the data in the Inspect panel const expectedChartValues = [ ['14', '31'], @@ -318,7 +319,7 @@ export default function ({ getService, getPageObjects }) { it('should visualize scripted field in vertical bar chart', async function () { await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); await PageObjects.header.waitUntilLoadingHasFinished(); - if (await PageObjects.common.isOss()) { + if (await deployment.isOss()) { // OSS renders a vertical bar chart and we check the data in the Inspect panel await inspector.open(); await inspector.expectTableData([ @@ -414,7 +415,7 @@ export default function ({ getService, getPageObjects }) { it('should visualize scripted field in vertical bar chart', async function () { await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); await PageObjects.header.waitUntilLoadingHasFinished(); - if (await PageObjects.common.isOss()) { + if (await deployment.isOss()) { // OSS renders a vertical bar chart and we check the data in the Inspect panel await inspector.open(); await inspector.expectTableData([ @@ -514,7 +515,7 @@ export default function ({ getService, getPageObjects }) { await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); await PageObjects.header.waitUntilLoadingHasFinished(); - if (await PageObjects.common.isOss()) { + if (await deployment.isOss()) { // OSS renders a vertical bar chart and we check the data in the Inspect panel await inspector.open(); await inspector.setTablePageSize(50); diff --git a/test/functional/apps/timelion/_expression_typeahead.js b/test/functional/apps/timelion/_expression_typeahead.js index d1e974942a362e..5d834f1a055ded 100644 --- a/test/functional/apps/timelion/_expression_typeahead.js +++ b/test/functional/apps/timelion/_expression_typeahead.js @@ -86,7 +86,7 @@ export default function ({ getPageObjects }) { await PageObjects.timelion.updateExpression(',split'); await PageObjects.timelion.clickSuggestion(); const suggestions = await PageObjects.timelion.getSuggestionItemsText(); - expect(suggestions.length).to.eql(52); + expect(suggestions.length).to.eql(51); expect(suggestions[0].includes('@message.raw')).to.eql(true); await PageObjects.timelion.clickSuggestion(10); }); diff --git a/test/functional/apps/visualize/_chart_types.ts b/test/functional/apps/visualize/_chart_types.ts index 4864fcbf3af095..b404b74039be98 100644 --- a/test/functional/apps/visualize/_chart_types.ts +++ b/test/functional/apps/visualize/_chart_types.ts @@ -22,14 +22,15 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { + const deployment = getService('deployment'); const log = getService('log'); - const PageObjects = getPageObjects(['common', 'visualize']); + const PageObjects = getPageObjects(['visualize']); let isOss = true; describe('chart types', function () { before(async function () { log.debug('navigateToApp visualize'); - isOss = await PageObjects.common.isOss(); + isOss = await deployment.isOss(); await PageObjects.visualize.navigateToNewVisualization(); }); @@ -49,18 +50,18 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { let expectedChartTypes = [ 'Area', 'Coordinate Map', - 'Data Table', + 'Data table', 'Gauge', 'Goal', - 'Heat Map', - 'Horizontal Bar', + 'Heat map', + 'Horizontal bar', 'Line', 'Metric', 'Pie', 'Region Map', - 'Tag Cloud', + 'Tag cloud', 'Timelion', - 'Vertical Bar', + 'Vertical bar', ]; if (!isOss) { expectedChartTypes = _.remove(expectedChartTypes, function (n) { diff --git a/test/functional/apps/visualize/index.ts b/test/functional/apps/visualize/index.ts index a30517519820e0..de73b2deabbd92 100644 --- a/test/functional/apps/visualize/index.ts +++ b/test/functional/apps/visualize/index.ts @@ -20,12 +20,12 @@ import { FtrProviderContext } from '../../ftr_provider_context.d'; import { UI_SETTINGS } from '../../../../src/plugins/data/common'; -export default function ({ getService, getPageObjects, loadTestFile }: FtrProviderContext) { +export default function ({ getService, loadTestFile }: FtrProviderContext) { const browser = getService('browser'); const log = getService('log'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); - const PageObjects = getPageObjects(['common']); + const deployment = getService('deployment'); let isOss = true; describe('visualize app', () => { @@ -39,7 +39,7 @@ export default function ({ getService, getPageObjects, loadTestFile }: FtrProvid defaultIndex: 'logstash-*', [UI_SETTINGS.FORMAT_BYTES_DEFAULT_PATTERN]: '0,0.[000]b', }); - isOss = await PageObjects.common.isOss(); + isOss = await deployment.isOss(); }); describe('', function () { diff --git a/test/functional/jest.config.js b/test/functional/jest.config.js new file mode 100644 index 00000000000000..60dce5d95773a9 --- /dev/null +++ b/test/functional/jest.config.js @@ -0,0 +1,24 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/test/functional'], +}; diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts index 4a14d43aec2491..f52343a9d913bd 100644 --- a/test/functional/page_objects/common_page.ts +++ b/test/functional/page_objects/common_page.ts @@ -19,12 +19,10 @@ import { delay } from 'bluebird'; import expect from '@kbn/expect'; -import { get } from 'lodash'; // @ts-ignore import fetch from 'node-fetch'; +import { getUrl } from '@kbn/test'; import { FtrProviderContext } from '../ftr_provider_context'; -// @ts-ignore not TS yet -import getUrl from '../../../src/test_utils/get_url'; export function CommonPageProvider({ getService, getPageObjects }: FtrProviderContext) { const log = getService('log'); @@ -48,20 +46,6 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo } class CommonPage { - /** - * Returns Kibana host URL - */ - public getHostPort() { - return getUrl.baseUrl(config.get('servers.kibana')); - } - - /** - * Returns ES host URL - */ - public getEsHostPort() { - return getUrl.baseUrl(config.get('servers.elasticsearch')); - } - /** * Logins to Kibana as default user and navigates to provided app * @param appUrl Kibana URL @@ -455,39 +439,6 @@ export function CommonPageProvider({ getService, getPageObjects }: FtrProviderCo return await body.getVisibleText(); } - /** - * Helper to detect an OSS licensed Kibana - * Useful for functional testing in cloud environment - */ - async isOss() { - const baseUrl = this.getEsHostPort(); - const username = config.get('servers.elasticsearch.username'); - const password = config.get('servers.elasticsearch.password'); - const response = await fetch(baseUrl + '/_xpack', { - method: 'get', - headers: { - 'Content-Type': 'application/json', - Authorization: 'Basic ' + Buffer.from(username + ':' + password).toString('base64'), - }, - }); - return response.status !== 200; - } - - async isCloud(): Promise { - const baseUrl = this.getHostPort(); - const username = config.get('servers.kibana.username'); - const password = config.get('servers.kibana.password'); - const response = await fetch(baseUrl + '/api/stats?extended', { - method: 'get', - headers: { - 'Content-Type': 'application/json', - Authorization: 'Basic ' + Buffer.from(username + ':' + password).toString('base64'), - }, - }); - const data = await response.json(); - return get(data, 'usage.cloud.is_cloud_enabled', false); - } - async waitForSaveModalToClose() { log.debug('Waiting for save modal to close'); await retry.try(async () => { diff --git a/test/functional/page_objects/context_page.ts b/test/functional/page_objects/context_page.ts index 9cbada532cde32..ce5ffad87e8f38 100644 --- a/test/functional/page_objects/context_page.ts +++ b/test/functional/page_objects/context_page.ts @@ -18,9 +18,8 @@ */ import rison from 'rison-node'; +import { getUrl } from '@kbn/test'; import { FtrProviderContext } from '../ftr_provider_context'; -// @ts-ignore not TS yet -import getUrl from '../../../src/test_utils/get_url'; const DEFAULT_INITIAL_STATE = { columns: ['@message'], diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts index 9c5bedf7c242db..494141355806f1 100644 --- a/test/functional/page_objects/discover_page.ts +++ b/test/functional/page_objects/discover_page.ts @@ -251,11 +251,6 @@ export function DiscoverPageProvider({ getService, getPageObjects }: FtrProvider .map((field) => $(field).text()); } - public async getSidebarWidth() { - const sidebar = await testSubjects.find('discover-sidebar'); - return await sidebar.getAttribute('clientWidth'); - } - public async hasNoResults() { return await testSubjects.exists('discoverNoResults'); } @@ -284,6 +279,9 @@ export function DiscoverPageProvider({ getService, getPageObjects }: FtrProvider } public async clickFieldListItemRemove(field: string) { + if (!(await testSubjects.exists('fieldList-selected'))) { + return; + } const selectedList = await testSubjects.find('fieldList-selected'); if (await testSubjects.descendantExists(`field-${field}`, selectedList)) { await this.clickFieldListItemToggle(field); diff --git a/test/functional/page_objects/home_page.ts b/test/functional/page_objects/home_page.ts index c12c633926c1c2..7f1db636de32db 100644 --- a/test/functional/page_objects/home_page.ts +++ b/test/functional/page_objects/home_page.ts @@ -23,6 +23,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); + const deployment = getService('deployment'); const PageObjects = getPageObjects(['common']); let isOss = true; @@ -82,7 +83,7 @@ export function HomePageProvider({ getService, getPageObjects }: FtrProviderCont async launchSampleDashboard(id: string) { await this.launchSampleDataSet(id); - isOss = await PageObjects.common.isOss(); + isOss = await deployment.isOss(); if (!isOss) { await find.clickByLinkText('Dashboard'); } diff --git a/test/functional/page_objects/visual_builder_page.ts b/test/functional/page_objects/visual_builder_page.ts index 37634d0248b047..5b07cb0e534db9 100644 --- a/test/functional/page_objects/visual_builder_page.ts +++ b/test/functional/page_objects/visual_builder_page.ts @@ -131,8 +131,8 @@ export function VisualBuilderPageProvider({ getService, getPageObjects }: FtrPro } public async enterMarkdown(markdown: string) { - const input = await find.byCssSelector('.tvbMarkdownEditor__editor textarea'); await this.clearMarkdown(); + const input = await find.byCssSelector('.tvbMarkdownEditor__editor textarea'); await input.type(markdown); await PageObjects.common.sleep(3000); } @@ -147,14 +147,20 @@ export function VisualBuilderPageProvider({ getService, getPageObjects }: FtrPro const value = $('.ace_line').text(); if (value.length > 0) { log.debug('Clearing text area input'); - const input = await find.byCssSelector('.tvbMarkdownEditor__editor textarea'); - await input.clearValueWithKeyboard(); + this.waitForMarkdownTextAreaCleaned(); } return value.length === 0; }); } + public async waitForMarkdownTextAreaCleaned() { + const input = await find.byCssSelector('.tvbMarkdownEditor__editor textarea'); + await input.clearValueWithKeyboard(); + const text = await this.getMarkdownText(); + return text.length === 0; + } + public async getMarkdownText(): Promise { const el = await find.byCssSelector('.tvbEditorVisualization'); const text = await el.getVisibleText(); @@ -549,7 +555,7 @@ export function VisualBuilderPageProvider({ getService, getPageObjects }: FtrPro public async checkPreviewIsDisabled(): Promise { log.debug(`Check no data message is present`); - await testSubjects.existOrFail('noTSVBDataMessage', { timeout: 5000 }); + await testSubjects.existOrFail('timeseriesVis > visNoResult', { timeout: 5000 }); } public async cloneSeries(nth: number = 0): Promise { diff --git a/test/functional/services/dashboard/add_panel.ts b/test/functional/services/dashboard/add_panel.ts index 1263501aa9c135..814a9114866988 100644 --- a/test/functional/services/dashboard/add_panel.ts +++ b/test/functional/services/dashboard/add_panel.ts @@ -41,6 +41,11 @@ export function DashboardAddPanelProvider({ getService, getPageObjects }: FtrPro await PageObjects.common.sleep(500); } + async clickVisType(visType: string) { + log.debug('DashboardAddPanel.clickVisType'); + await testSubjects.click(`visType-${visType}`); + } + async clickAddNewEmbeddableLink(type: string) { await testSubjects.click('createNew'); await testSubjects.click(`createNew-${type}`); diff --git a/test/functional/services/remote/remote.ts b/test/functional/services/remote/remote.ts index a45403e31095c7..94511b0bcf5d44 100644 --- a/test/functional/services/remote/remote.ts +++ b/test/functional/services/remote/remote.ts @@ -130,7 +130,7 @@ export async function RemoteProvider({ getService }: FtrProviderContext) { const coverageJson = await driver .executeScript('return window.__coverage__') .catch(() => undefined) - .then((coverage) => coverage && JSON.stringify(coverage)); + .then((coverage) => (coverage ? JSON.stringify(coverage) : undefined)); if (coverageJson) { writeCoverage(coverageJson); } diff --git a/test/new_visualize_flow/fixtures/es_archiver/kibana/data.json b/test/new_visualize_flow/fixtures/es_archiver/kibana/data.json new file mode 100644 index 00000000000000..14d67f9bfbc34d --- /dev/null +++ b/test/new_visualize_flow/fixtures/es_archiver/kibana/data.json @@ -0,0 +1,4229 @@ +{ + "type": "doc", + "value": { + "id": "search:a16d1990-3dca-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "search": "7.4.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "search": { + "columns": [ + "animal", + "isDog", + "name", + "sound", + "weightLbs" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>40\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "weightLbs", + "desc" + ] + ], + "title": "animal weights", + "version": 1 + }, + "type": "search", + "updated_at": "2018-04-11T20:55:26.317Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "config:6.3.0", + "index": ".kibana_1", + "source": { + "config": { + "buildNum": 8467, + "defaultIndex": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c" + }, + "references": [ + ], + "type": "config", + "updated_at": "2018-04-11T20:43:55.434Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:61c58ad0-3dd3-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"animal\",\"value\":\"dog\",\"params\":{\"query\":\"dog\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"animal\":{\"query\":\"dog\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.3.0\",\"panelIndex\":\"1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"version\":\"7.3.0\",\"panelIndex\":\"2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "dashboard with filter", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "panel_1", + "type": "search" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T21:57:52.253Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:2ae34a60-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.3.0\",\"panelIndex\":\"1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"version\":\"7.3.0\",\"panelIndex\":\"2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"}]", + "timeRestore": false, + "title": "couple panels", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:29.670Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:76d03330-3dd3-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "and_descriptions_has_underscores", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "dashboard_with_underscores", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T21:58:27.555Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:9b780cd0-3dd3-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "* hi & $%!!@# 漢字 ^--=++[]{};'~`~<>?,./:\";'\\|\\\\ special chars", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:00:07.322Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:6c0b16e0-3dd3-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "dashboard-name-has-dashes", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T21:58:09.486Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:19523860-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "im empty too", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:00.198Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:14616b50-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "im empty", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:02:51.909Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:33bb8ad0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"panelIndex\":\"2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"}]", + "timeRestore": false, + "title": "few panels", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_2", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:03:44.509Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:60659030-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 2", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:59.443Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:65227c00-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 3", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:07.392Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:6803a2f0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 4", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:12.223Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:6b18f940-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 5", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:17.396Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:6e12ff60-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 6", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:22.390Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:4f0fd980-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:30.360Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:3de0bda0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "1", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:01.530Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:46c8b580-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "2", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:04:16.472Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:708fe640-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "zz 7", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:26.564Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:7b8d50a0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "Hi i have a lot of words in my dashboard name! It's pretty long i wonder what it'll look like", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:45.002Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:7e42d3b0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "bye", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:49.547Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:846988b0-3dd4-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[]", + "timeRestore": false, + "title": "last", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + ], + "type": "dashboard", + "updated_at": "2018-04-11T22:05:59.867Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:cbd3bc30-3e5a-11e8-9fc3-39e49624228e", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"weightLbs:<50\",\"language\":\"lucene\"},\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"name.keyword\",\"value\":\"Fee Fee\",\"params\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"name.keyword\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":true,\"useMargins\":true,\"hidePanelTitles\":true}", + "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"panelIndex\":\"2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"}]", + "timeRestore": false, + "title": "bug", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "befdb6b0-3e59-11e8-9fc3-39e49624228e", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "name": "panel_2", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T14:07:12.243Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:5bac3a80-3e5b-11e8-9fc3-39e49624228e", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "dashboard with scripted filter, negated filter and query", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:<50\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"key\":\"name.keyword\",\"negate\":true,\"params\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"Fee Fee\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"name.keyword\":{\"query\":\"Fee Fee\",\"type\":\"phrase\"}}}},{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":\"is dog\",\"disabled\":false,\"field\":\"isDog\",\"key\":\"isDog\",\"negate\":false,\"params\":{\"value\":true},\"type\":\"phrase\",\"value\":\"true\",\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":true,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_0\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"3\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_1\"},{\"panelIndex\":\"4\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "section": 0, + "value": 0 + }, + "timeFrom": "Wed Apr 12 2017 10:06:21 GMT-0400", + "timeRestore": true, + "timeTo": "Thu Apr 12 2018 10:06:21 GMT-0400", + "title": "filters", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "type": "index-pattern" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "panel_2", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T14:11:13.576Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "index-pattern:f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "index": ".kibana_1", + "source": { + "index-pattern": { + "fields": "[{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"activity level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"barking level\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"breed\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"breed.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"size\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"size.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"trainability\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "title": "dogbreeds" + }, + "migrationVersion": { + "index-pattern": "7.6.0" + }, + "references": [ + ], + "type": "index-pattern", + "updated_at": "2018-04-12T16:24:29.357Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:84908bb0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.10425, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:04:37.610Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:04:37.611Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:84908bb1-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "home", + "minutesOnScreen": 0.5708666666666666, + "numberOfClicks": 1, + "timestamp": "2020-05-31T11:04:37.610Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:04:37.611Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:951d7420-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 1.3920166666666667, + "numberOfClicks": 39, + "timestamp": "2020-05-31T11:05:05.378Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:05:05.378Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:a79fc3f0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.45816666666666667, + "numberOfClicks": 8, + "timestamp": "2020-05-31T11:05:36.431Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:05:36.431Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:bc30cf80-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.5057333333333333, + "numberOfClicks": 14, + "timestamp": "2020-05-31T11:06:10.935Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:06:10.936Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:df4781d0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.3740833333333333, + "numberOfClicks": 1, + "timestamp": "2020-05-31T11:07:09.804Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:07:09.805Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:dffd3d40-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.02105, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:07:10.996Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:07:10.996Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:e05dd3d0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.010416666666666666, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:07:11.629Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:07:11.629Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:cfc85fe0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.5466333333333333, + "numberOfClicks": 16, + "timestamp": "2020-05-31T11:06:43.806Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:06:43.806Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:00710a20-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.8720333333333333, + "numberOfClicks": 14, + "timestamp": "2020-05-31T11:08:05.442Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:05.442Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:e1454da0-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.01815, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:07:13.146Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:07:13.146Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:0eb5d750-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.33895, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:08:29.380Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:29.381Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:2e09dc50-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.08756666666666667, + "numberOfClicks": 3, + "timestamp": "2020-05-31T11:09:21.941Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:21.941Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:25916f20-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.5207166666666667, + "numberOfClicks": 5, + "timestamp": "2020-05-31T11:09:07.730Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:07.730Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:1e9c4690-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.38158333333333333, + "numberOfClicks": 17, + "timestamp": "2020-05-31T11:08:56.057Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:56.057Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:1f41ae50-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.0183, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:08:57.141Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:57.141Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:26923d50-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.0285, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:09.413Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:09.413Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:1024f7b0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.0401, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:08:31.787Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:31.787Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:10f7d810-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.012, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:08:33.169Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:08:33.169Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:34f010c0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.28990000000000005, + "numberOfClicks": 4, + "timestamp": "2020-05-31T11:09:33.515Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:33.516Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:35665230-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.012216666666666667, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:34.291Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:34.291Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:404deaa0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.24620000000000003, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:52.586Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:52.586Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:415ac6c0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.015816666666666666, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:54.348Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:54.348Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:40c898e0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.013533333333333333, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:53.390Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:53.390Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:434a13a0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.011566666666666666, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:57.594Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:57.594Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:42de5980-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.042, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:09:56.888Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:09:56.888Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:ffde98b0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 2.983433333333333, + "numberOfClicks": 31, + "timestamp": "2020-05-31T11:15:13.979Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:15:13.979Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:46ca9260-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.3946, + "numberOfClicks": 4, + "timestamp": "2020-05-31T11:17:12.966Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:17:12.966Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:47072630-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.006116666666666667, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:17:13.363Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:17:13.363Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:3805bfc0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.19001666666666667, + "numberOfClicks": 2, + "timestamp": "2020-05-31T11:16:48.188Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:16:48.188Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:38af4630-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.018766666666666668, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:16:49.299Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:16:49.299Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:3136e3e0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.012466666666666666, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:16:36.766Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:16:36.766Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:fd3cebc0-a32f-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.5283, + "numberOfClicks": 17, + "timestamp": "2020-05-31T11:15:09.564Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:15:09.564Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6463c800-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.28708333333333336, + "numberOfClicks": 10, + "timestamp": "2020-05-31T11:18:02.624Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:02.624Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:57b7c340-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.4411833333333333, + "numberOfClicks": 11, + "timestamp": "2020-05-31T11:17:41.364Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:17:41.364Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:67dbd7c0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 2.4508833333333335, + "numberOfClicks": 5, + "timestamp": "2020-05-31T11:18:08.444Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:08.444Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6bf41f20-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 2.5884833333333335, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:18:15.314Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:15.314Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6c5ccc00-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.011383333333333334, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:18:16.000Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:16.000Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6ce7f500-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.015066666666666667, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:18:16.912Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:16.912Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:5a178530-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.067, + "numberOfClicks": 3, + "timestamp": "2020-05-31T11:17:45.347Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:17:45.347Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:d10c66b0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.030199999999999998, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:21:04.923Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:21:04.923Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:cd5aa950-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 2.2735666666666665, + "numberOfClicks": 21, + "timestamp": "2020-05-31T11:20:58.724Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:20:58.725Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:b2dee050-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.08906666666666667, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:20:14.293Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:20:14.293Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:d194a980-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.018183333333333333, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:21:05.816Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:21:05.816Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:72b406e0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.14396666666666666, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:18:26.638Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:26.638Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6d8e6e30-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.0179, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:18:18.003Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:18:18.003Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-12T16:27:17.973Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "non timebased line chart - dog data", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"non timebased line chart - dog data\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Max trainability\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Max trainability\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"3\",\"label\":\"Max barking level\"},\"valueAxis\":\"ValueAxis-1\"},{\"show\":true,\"mode\":\"normal\",\"type\":\"line\",\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"data\":{\"id\":\"4\",\"label\":\"Max activity level\"},\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"trainability\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"breed.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"barking level\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"activity level\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:a5d56330-3e6e-11e8-bbb9-e15942d5d48c", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "I have two visualizations that are created off a non time based index", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"7.3.0\",\"panelIndex\":\"1\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":0,\"i\":\"2\"},\"version\":\"7.3.0\",\"panelIndex\":\"2\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"}]", + "timeRestore": false, + "title": "Non time based", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "name": "panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-12T16:29:18.435Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:d2525040-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "I have one of every visualization type since the last time I was created!", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_0\"},{\"panelIndex\":\"2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_1\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_2\"},{\"panelIndex\":\"4\",\"gridData\":{\"x\":24,\"y\":15,\"w\":24,\"h\":15,\"i\":\"4\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_3\"},{\"panelIndex\":\"5\",\"gridData\":{\"x\":0,\"y\":30,\"w\":24,\"h\":15,\"i\":\"5\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_4\"},{\"panelIndex\":\"6\",\"gridData\":{\"x\":24,\"y\":30,\"w\":24,\"h\":15,\"i\":\"6\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_5\"},{\"panelIndex\":\"7\",\"gridData\":{\"x\":0,\"y\":45,\"w\":24,\"h\":15,\"i\":\"7\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_6\"},{\"panelIndex\":\"8\",\"gridData\":{\"x\":24,\"y\":45,\"w\":24,\"h\":15,\"i\":\"8\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_7\"},{\"panelIndex\":\"9\",\"gridData\":{\"x\":0,\"y\":60,\"w\":24,\"h\":15,\"i\":\"9\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_8\"},{\"panelIndex\":\"10\",\"gridData\":{\"x\":24,\"y\":60,\"w\":24,\"h\":15,\"i\":\"10\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_9\"},{\"panelIndex\":\"11\",\"gridData\":{\"x\":0,\"y\":75,\"w\":24,\"h\":15,\"i\":\"11\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_10\"},{\"panelIndex\":\"12\",\"gridData\":{\"x\":24,\"y\":75,\"w\":24,\"h\":15,\"i\":\"12\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_11\"},{\"panelIndex\":\"13\",\"gridData\":{\"x\":0,\"y\":90,\"w\":24,\"h\":15,\"i\":\"13\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_12\"},{\"panelIndex\":\"14\",\"gridData\":{\"x\":24,\"y\":90,\"w\":24,\"h\":15,\"i\":\"14\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_13\"},{\"panelIndex\":\"15\",\"gridData\":{\"x\":0,\"y\":105,\"w\":24,\"h\":15,\"i\":\"15\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_14\"},{\"panelIndex\":\"16\",\"gridData\":{\"x\":24,\"y\":105,\"w\":24,\"h\":15,\"i\":\"16\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_15\"},{\"panelIndex\":\"17\",\"gridData\":{\"x\":0,\"y\":120,\"w\":24,\"h\":15,\"i\":\"17\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_16\"},{\"panelIndex\":\"18\",\"gridData\":{\"x\":24,\"y\":120,\"w\":24,\"h\":15,\"i\":\"18\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_17\"},{\"panelIndex\":\"19\",\"gridData\":{\"x\":0,\"y\":135,\"w\":24,\"h\":15,\"i\":\"19\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_18\"},{\"panelIndex\":\"20\",\"gridData\":{\"x\":24,\"y\":135,\"w\":24,\"h\":15,\"i\":\"20\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_19\"},{\"panelIndex\":\"21\",\"gridData\":{\"x\":0,\"y\":150,\"w\":24,\"h\":15,\"i\":\"21\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_20\"},{\"panelIndex\":\"22\",\"gridData\":{\"x\":24,\"y\":150,\"w\":24,\"h\":15,\"i\":\"22\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_21\"},{\"panelIndex\":\"23\",\"gridData\":{\"x\":0,\"y\":165,\"w\":24,\"h\":15,\"i\":\"23\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_22\"},{\"panelIndex\":\"24\",\"gridData\":{\"x\":24,\"y\":165,\"w\":24,\"h\":15,\"i\":\"24\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_23\"},{\"panelIndex\":\"25\",\"gridData\":{\"x\":0,\"y\":180,\"w\":24,\"h\":15,\"i\":\"25\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_24\"},{\"panelIndex\":\"26\",\"gridData\":{\"x\":24,\"y\":180,\"w\":24,\"h\":15,\"i\":\"26\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_25\"},{\"panelIndex\":\"27\",\"gridData\":{\"x\":0,\"y\":195,\"w\":24,\"h\":15,\"i\":\"27\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_26\"},{\"panelIndex\":\"28\",\"gridData\":{\"x\":24,\"y\":195,\"w\":24,\"h\":15,\"i\":\"28\"},\"embeddableConfig\":{},\"version\":\"7.3.0\",\"panelRefName\":\"panel_27\"},{\"panelIndex\":\"29\",\"gridData\":{\"x\":0,\"y\":210,\"w\":24,\"h\":15,\"i\":\"29\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_28\"},{\"gridData\":{\"w\":24,\"h\":15,\"x\":24,\"y\":210,\"i\":\"30\"},\"version\":\"7.3.0\",\"panelIndex\":\"30\",\"embeddableConfig\":{},\"panelRefName\":\"panel_29\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "dashboard with everything", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "e6140540-3dca-11e8-8660-4d65aa086b3c", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "3525b840-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "37a541c0-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "ffa2e0c0-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "e2023110-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_5", + "type": "visualization" + }, + { + "id": "145ced90-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_6", + "type": "visualization" + }, + { + "id": "2d1b1620-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_7", + "type": "visualization" + }, + { + "id": "42535e30-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_8", + "type": "visualization" + }, + { + "id": "42535e30-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_9", + "type": "visualization" + }, + { + "id": "4c0f47e0-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_10", + "type": "visualization" + }, + { + "id": "11ae2bd0-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_11", + "type": "visualization" + }, + { + "id": "3fe22200-3dcb-11e8-8660-4d65aa086b3c", + "name": "panel_12", + "type": "visualization" + }, + { + "id": "4ca00ba0-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_13", + "type": "visualization" + }, + { + "id": "78803be0-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_14", + "type": "visualization" + }, + { + "id": "b92ae920-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_15", + "type": "visualization" + }, + { + "id": "e4d8b430-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_16", + "type": "visualization" + }, + { + "id": "f81134a0-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_17", + "type": "visualization" + }, + { + "id": "cc43fab0-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_18", + "type": "visualization" + }, + { + "id": "02a2e4e0-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_19", + "type": "visualization" + }, + { + "id": "df815d20-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_20", + "type": "visualization" + }, + { + "id": "c40f4d40-3dcc-11e8-8660-4d65aa086b3c", + "name": "panel_21", + "type": "visualization" + }, + { + "id": "7fda8ee0-3dcd-11e8-8660-4d65aa086b3c", + "name": "panel_22", + "type": "visualization" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "panel_23", + "type": "search" + }, + { + "id": "be5accf0-3dca-11e8-8660-4d65aa086b3c", + "name": "panel_24", + "type": "search" + }, + { + "id": "ca5ada40-3dca-11e8-8660-4d65aa086b3c", + "name": "panel_25", + "type": "search" + }, + { + "id": "771b4f10-3e59-11e8-9fc3-39e49624228e", + "name": "panel_26", + "type": "visualization" + }, + { + "id": "5e085850-3e6e-11e8-bbb9-e15942d5d48c", + "name": "panel_27", + "type": "visualization" + }, + { + "id": "8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "name": "panel_28", + "type": "visualization" + }, + { + "id": "befdb6b0-3e59-11e8-9fc3-39e49624228e", + "name": "panel_29", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-04-16T16:05:02.915Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:29bd0240-4197-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-16T16:56:53.092Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"CN\",\"params\":{\"query\":\"CN\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"CN\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"bytes >= 10000\",\"language\":\"kuery\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Kuery: pie bytes with kuery and filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Kuery: pie bytes with kuery and filter\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "index-pattern:0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "index-pattern": { + "fieldFormatMap": "{\"machine.ram\":{\"id\":\"number\",\"params\":{\"pattern\":\"0,0.[000] b\"}}}", + "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "migrationVersion": { + "index-pattern": "7.6.0" + }, + "references": [ + ], + "type": "index-pattern", + "updated_at": "2018-04-16T16:57:12.263Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "search:55d37a30-4197-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "search": "7.4.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "search": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"clientip : 73.14.212.83\",\"language\":\"kuery\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"range\",\"key\":\"bytes\",\"value\":\"100 to 1,000\",\"params\":{\"gte\":100,\"lt\":1000},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"range\":{\"bytes\":{\"gte\":100,\"lt\":1000}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Bytes and kuery in saved search with filter", + "version": 1 + }, + "type": "search", + "updated_at": "2018-04-16T16:58:07.059Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:b60de070-4197-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "Bytes bytes and more bytes", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"1\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"},{\"panelIndex\":\"2\",\"gridData\":{\"x\":24,\"y\":0,\"w\":24,\"h\":15,\"i\":\"2\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_1\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":0,\"y\":15,\"w\":24,\"h\":15,\"i\":\"3\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_2\"},{\"panelIndex\":\"4\",\"gridData\":{\"x\":24,\"y\":15,\"w\":17,\"h\":8,\"i\":\"4\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_3\"},{\"panelIndex\":\"5\",\"gridData\":{\"x\":0,\"y\":30,\"w\":18,\"h\":13,\"i\":\"5\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_4\"},{\"panelIndex\":\"6\",\"gridData\":{\"x\":24,\"y\":37,\"w\":24,\"h\":12,\"i\":\"6\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_5\"},{\"panelIndex\":\"7\",\"gridData\":{\"x\":18,\"y\":30,\"w\":9,\"h\":7,\"i\":\"7\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_6\"},{\"panelIndex\":\"8\",\"gridData\":{\"x\":28,\"y\":23,\"w\":15,\"h\":13,\"i\":\"8\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_7\"},{\"panelIndex\":\"9\",\"gridData\":{\"x\":0,\"y\":43,\"w\":24,\"h\":15,\"i\":\"9\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_8\"},{\"panelIndex\":\"10\",\"gridData\":{\"x\":24,\"y\":49,\"w\":18,\"h\":12,\"i\":\"10\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_9\"},{\"panelIndex\":\"11\",\"gridData\":{\"x\":0,\"y\":58,\"w\":24,\"h\":15,\"i\":\"11\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_10\"},{\"panelIndex\":\"12\",\"gridData\":{\"x\":24,\"y\":61,\"w\":5,\"h\":4,\"i\":\"12\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_11\"},{\"panelIndex\":\"13\",\"gridData\":{\"x\":0,\"y\":73,\"w\":17,\"h\":6,\"i\":\"13\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_12\"},{\"panelIndex\":\"14\",\"gridData\":{\"x\":24,\"y\":65,\"w\":24,\"h\":15,\"i\":\"14\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_13\"},{\"panelIndex\":\"15\",\"gridData\":{\"x\":0,\"y\":79,\"w\":24,\"h\":6,\"i\":\"15\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_14\"},{\"panelIndex\":\"16\",\"gridData\":{\"x\":24,\"y\":80,\"w\":24,\"h\":15,\"i\":\"16\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_15\"},{\"panelIndex\":\"17\",\"gridData\":{\"x\":0,\"y\":85,\"w\":13,\"h\":11,\"i\":\"17\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_16\"},{\"panelIndex\":\"18\",\"gridData\":{\"x\":24,\"y\":95,\"w\":23,\"h\":11,\"i\":\"18\"},\"version\":\"7.3.0\",\"embeddableConfig\":{},\"panelRefName\":\"panel_17\"}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "All about those bytes", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "7ff2c4c0-4191-11e8-bb13-d53698fb349a", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "03d2afd0-4192-11e8-bb13-d53698fb349a", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "63983430-4192-11e8-bb13-d53698fb349a", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "0ca8c600-4195-11e8-bb13-d53698fb349a", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "c10c6b00-4191-11e8-bb13-d53698fb349a", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "760a9060-4190-11e8-bb13-d53698fb349a", + "name": "panel_5", + "type": "visualization" + }, + { + "id": "1dcdfe30-4192-11e8-bb13-d53698fb349a", + "name": "panel_6", + "type": "visualization" + }, + { + "id": "584c0300-4191-11e8-bb13-d53698fb349a", + "name": "panel_7", + "type": "visualization" + }, + { + "id": "b3e70d00-4190-11e8-bb13-d53698fb349a", + "name": "panel_8", + "type": "visualization" + }, + { + "id": "df72ad40-4194-11e8-bb13-d53698fb349a", + "name": "panel_9", + "type": "visualization" + }, + { + "id": "9bebe980-4192-11e8-bb13-d53698fb349a", + "name": "panel_10", + "type": "visualization" + }, + { + "id": "9fb4c670-4194-11e8-bb13-d53698fb349a", + "name": "panel_11", + "type": "visualization" + }, + { + "id": "35417e50-4194-11e8-bb13-d53698fb349a", + "name": "panel_12", + "type": "visualization" + }, + { + "id": "039e4770-4194-11e8-bb13-d53698fb349a", + "name": "panel_13", + "type": "visualization" + }, + { + "id": "76c7f020-4194-11e8-bb13-d53698fb349a", + "name": "panel_14", + "type": "visualization" + }, + { + "id": "8090dcb0-4195-11e8-bb13-d53698fb349a", + "name": "panel_15", + "type": "visualization" + }, + { + "id": "29bd0240-4197-11e8-bb13-d53698fb349a", + "name": "panel_16", + "type": "visualization" + }, + { + "id": "55d37a30-4197-11e8-bb13-d53698fb349a", + "name": "panel_17", + "type": "search" + } + ], + "type": "dashboard", + "updated_at": "2018-04-16T17:00:48.503Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:78803be0-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.127Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: tag cloud", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tag cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:3fe22200-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.130Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: pie", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:4ca00ba0-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.131Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: region map", + "uiStateJSON": "{\"mapZoom\":2,\"mapCenter\":[8.754794702435618,-9.140625000000002]}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: region map\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"attribution\":\"

Made with NaturalEarth | Elastic Maps Service

\",\"name\":\"World Countries\",\"weight\":1,\"format\":{\"type\":\"geojson\"},\"url\":\"https://staging-dot-elastic-layer.appspot.com/blob/5715999101812736?elastic_tile_service_tos=agree&my_app_version=6.3.0\",\"fields\":[{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},{\"name\":\"iso3\",\"description\":\"Three letter abbreviation\"},{\"name\":\"name\",\"description\":\"Country name\"}],\"created_at\":\"2017-07-31T16:00:19.996450\",\"tags\":[],\"id\":5715999101812736,\"layerId\":\"elastic_maps_service.World Countries\"},\"selectedJoinField\":{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":1,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:11ae2bd0-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.133Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: metric\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:145ced90-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.134Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: heatmap", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 15\":\"rgb(247,252,245)\",\"15 - 30\":\"rgb(199,233,192)\",\"30 - 45\":\"rgb(116,196,118)\",\"45 - 60\":\"rgb(35,139,69)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: heatmap\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Greens\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:e2023110-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:32.135Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: guage", + "uiStateJSON": "{\"vis\":{\"colors\":{\"0 - 50000\":\"#EF843C\",\"75000 - 10000000\":\"#3F6833\"},\"defaultColors\":{\"0 - 5000000\":\"rgb(0,104,55)\",\"50000000 - 74998990099\":\"rgb(165,0,38)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: guage\",\"type\":\"gauge\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"gauge\":{\"backStyle\":\"Full\",\"colorSchema\":\"Green to Red\",\"colorsRange\":[{\"from\":0,\"to\":5000000},{\"from\":50000000,\"to\":74998990099}],\"extendRange\":true,\"gaugeColorMode\":\"Labels\",\"gaugeStyle\":\"Full\",\"gaugeType\":\"Arc\",\"invertColors\":false,\"labels\":{\"color\":\"black\",\"show\":true},\"orientation\":\"vertical\",\"percentageMode\":false,\"scale\":{\"color\":\"#333\",\"labels\":false,\"show\":true},\"style\":{\"bgColor\":false,\"bgFill\":\"#eee\",\"bgMask\":false,\"bgWidth\":0.9,\"fontSize\":60,\"labelColor\":true,\"mask\":false,\"maskBars\":50,\"subText\":\"\",\"width\":0.9},\"type\":\"meter\",\"alignment\":\"horizontal\"},\"isDisplayWarning\":false,\"type\":\"gauge\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"machine.ram\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:b92ae920-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.110Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: timelion", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*, metric=avg:bytes, split=ip:5)\",\"interval\":\"auto\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:e4d8b430-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.106Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-guage", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-guage\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"gauge\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:4c0f47e0-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.111Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":20,\"openLinksInNewTab\":false,\"markdown\":\"I'm a markdown!\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:2d1b1620-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_1_index_pattern", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_2_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.123Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: input control", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: input control\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523481142694\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Bytes Input List\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1523481163654\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Bytes range\",\"type\":\"range\",\"options\":{\"decimalPlaces\":0,\"step\":1},\"indexPatternRefName\":\"control_1_index_pattern\"},{\"id\":\"1523481176519\",\"fieldName\":\"sound.keyword\",\"parent\":\"\",\"label\":\"Animal sounds\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_2_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:8bc8d6c0-3e6e-11e8-bbb9-e15942d5d48c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "f908c8e0-3e6d-11e8-bbb9-e15942d5d48c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.173Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"size.keyword\",\"value\":\"extra large\",\"params\":{\"query\":\"extra large\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"size.keyword\":{\"query\":\"extra large\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: non timebased line chart - dog data - with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"field\":\"trainability\"},\"schema\":\"metric\",\"type\":\"max\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"field\":\"breed.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"field\":\"barking level\"},\"schema\":\"metric\",\"type\":\"max\"},{\"enabled\":true,\"id\":\"4\",\"params\":{\"field\":\"activity level\"},\"schema\":\"metric\",\"type\":\"max\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Max trainability\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":\"true\",\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"},{\"data\":{\"id\":\"3\",\"label\":\"Max barking level\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"},{\"data\":{\"id\":\"4\",\"label\":\"Max activity level\"},\"drawLinesBetweenPoints\":true,\"mode\":\"normal\",\"show\":true,\"showCircles\":true,\"type\":\"line\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"line\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Max trainability\"},\"type\":\"value\"}]},\"title\":\"Rendering Test: non timebased line chart - dog data - with filter\",\"type\":\"line\"}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:42535e30-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_1_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:31.124Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: input control parent", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: input control parent\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523481216736\",\"fieldName\":\"animal.keyword\",\"parent\":\"\",\"label\":\"Animal type\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"},{\"id\":\"1523481176519\",\"fieldName\":\"sound.keyword\",\"parent\":\"1523481216736\",\"label\":\"Animal sounds\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":5,\"order\":\"desc\"},\"indexPatternRefName\":\"control_1_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:7fda8ee0-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.344Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: vega", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: vega\",\"type\":\"vega\",\"params\":{\"spec\":\"{\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:02a2e4e0-3dcd-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.351Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-table", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-table\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"table\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"markdown\":\"\\nHi Avg last bytes: {{ average_of_bytes.last.raw }}\",\"pivot_id\":\"bytes\",\"pivot_label\":\"Hello\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:f81134a0-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.355Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-markdown\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"markdown\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_color_rules\":[{\"id\":\"e0be22e0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"gauge_width\":10,\"gauge_inner_width\":10,\"gauge_style\":\"half\",\"markdown\":\"\\nHi Avg last bytes: {{ average_of_bytes.last.raw }}\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:df815d20-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.349Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-topn", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-topn\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"top_n\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"},{\"id\":\"d18e5970-3dcc-11e8-a2f6-c162ca6cf6ea\",\"color\":\"rgba(160,70,216,1)\",\"split_mode\":\"filter\",\"metrics\":[{\"id\":\"d18e5971-3dcc-11e8-a2f6-c162ca6cf6ea\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}],\"bar_color_rules\":[{\"id\":\"cd25a820-3dcc-11e8-a2f6-c162ca6cf6ea\"}]},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:cc43fab0-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.353Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-metric", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-metric\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"metric\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum_of_squares\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"c50bd5b0-3dcc-11e8-a2f6-c162ca6cf6ea\"}]},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:c40f4d40-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:30.347Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Rendering Test: tsvb-ts", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: tsvb-ts\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"count\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:ffa2e0c0-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.153Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: goal", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: goal\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":4000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":2,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:37a541c0-3dcc-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.156Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"range\",\"key\":\"bytes\",\"value\":\"0 to 10,000\",\"params\":{\"gte\":0,\"lt\":10000},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"range\":{\"bytes\":{\"gte\":0,\"lt\":10000}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: geo map", + "uiStateJSON": "{\"mapZoom\":4,\"mapCenter\":[35.460669951495305,-85.60546875000001]}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: geo map\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":3}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:4b5d6ef0-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.162Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: datatable", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: datatable\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"clientip\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:3525b840-3dcb-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.163Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: bar", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: bar\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:e6140540-3dca-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.165Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"CN\",\"params\":{\"query\":\"CN\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"CN\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: area with not filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: area with not filter\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"label\":\"\"},{\"input\":{\"query\":\"bytes:>10\",\"language\":\"lucene\"}}]}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:4c0c3f90-3e5a-11e8-9fc3-39e49624228e", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:33.166Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"field\":\"isDog\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"isDog\",\"value\":\"true\",\"params\":{\"value\":true},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"weightLbs:>40\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: scripted filter and query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: scripted filter and query\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"sound.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.195Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Rendering Test: animal sounds pie", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: animal sounds pie\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"sound.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:771b4f10-3e59-11e8-9fc3-39e49624228e", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.200Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" + }, + "savedSearchRefName": "search_0", + "title": "Rendering Test: animal weights linked to search", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Rendering Test: animal weights linked to search\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"name.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:76c7f020-4194-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:34.583Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb top n with bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb top n with bytes filter\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"top_n\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"filters\",\"metrics\":[{\"id\":\"482d6560-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":0,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1m\",\"value_template\":\"\",\"split_filters\":[{\"filter\":{\"query\":\"Filter Bytes Test:>100\",\"language\":\"lucene\"},\"label\":\"\",\"color\":\"#68BC00\",\"id\":\"39a107e0-4194-11e8-a461-7d278185cba4\"}],\"split_color_mode\":\"gradient\"},{\"id\":\"4fd5b150-4194-11e8-a461-7d278185cba4\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"id\":\"4fd5b151-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"filter\":{\"query\":\"Filter Bytes Test:>3000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}],\"bar_color_rules\":[{\"id\":\"36a0e740-4194-11e8-a461-7d278185cba4\"}]},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:0ca8c600-4195-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "control_0_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.229Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: input control with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: input control with filter\",\"type\":\"input_control_vis\",\"params\":{\"controls\":[{\"id\":\"1523896850250\",\"fieldName\":\"bytes\",\"parent\":\"\",\"label\":\"Byte Options\",\"type\":\"list\",\"options\":{\"type\":\"terms\",\"multiselect\":true,\"size\":10,\"order\":\"desc\"},\"indexPatternRefName\":\"control_0_index_pattern\"}],\"updateFiltersOnChange\":false,\"useTimeFilter\":false,\"pinFilters\":false},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:039e4770-4194-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.220Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb time series with bytes filter split by clientip", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb time series with bytes filter split by clientip\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"timeseries\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"terms\",\"metrics\":[{\"value\":\"\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:760a9060-4190-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.235Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"US\",\"params\":{\"query\":\"US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: max bytes in US - area chart with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: max bytes in US - area chart with filter\",\"type\":\"area\",\"params\":{\"type\":\"area\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Max bytes\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Max bytes\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:b3e70d00-4190-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:35.236Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: standard deviation heatmap with other bucket", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"-4,000 - 1,000\":\"rgb(247,252,245)\",\"1,000 - 6,000\":\"rgb(199,233,192)\",\"6,000 - 11,000\":\"rgb(116,196,118)\",\"11,000 - 16,000\":\"rgb(35,139,69)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: standard deviation heatmap with other bucket\",\"type\":\"heatmap\",\"params\":{\"type\":\"heatmap\",\"addTooltip\":true,\"addLegend\":true,\"enableHover\":false,\"legendPosition\":\"right\",\"times\":[],\"colorsNumber\":4,\"colorSchema\":\"Greens\",\"setColorRange\":false,\"colorsRange\":[],\"invertColors\":false,\"percentageMode\":false,\"valueAxes\":[{\"show\":false,\"id\":\"ValueAxis-1\",\"type\":\"value\",\"scale\":{\"type\":\"linear\",\"defaultYExtents\":false},\"labels\":{\"show\":false,\"rotate\":0,\"overwriteColor\":false,\"color\":\"#555\"}}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"std_dev\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":true,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"_term\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:c10c6b00-4191-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.267Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: max bytes guage percent mode", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(0,104,55)\",\"1 - 15\":\"rgb(255,255,190)\",\"15 - 100\":\"rgb(165,0,38)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: max bytes guage percent mode\",\"type\":\"gauge\",\"params\":{\"type\":\"gauge\",\"addTooltip\":true,\"addLegend\":true,\"isDisplayWarning\":false,\"gauge\":{\"extendRange\":true,\"percentageMode\":true,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"Labels\",\"colorsRange\":[{\"from\":0,\"to\":500},{\"from\":500,\"to\":7500},{\"from\":7500,\"to\":50000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":true,\"labels\":false,\"color\":\"#333\"},\"type\":\"meter\",\"style\":{\"bgWidth\":0.9,\"width\":0.9,\"mask\":false,\"bgMask\":false,\"maskBars\":50,\"bgFill\":\"#eee\",\"bgColor\":false,\"subText\":\"Im subtext\",\"fontSize\":60,\"labelColor\":true},\"alignment\":\"horizontal\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"max\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:03d2afd0-4192-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.269Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: Goal unique count", + "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 10000\":\"rgb(0,104,55)\"}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: Goal unique count\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"isDisplayWarning\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:7ff2c4c0-4191-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.270Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: Data table top hit with significant terms geo.src", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: Data table top hit with significant terms geo.src\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\",\"aggregate\":\"average\",\"size\":1,\"sortField\":\"@timestamp\",\"sortOrder\":\"desc\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"significant_terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"geo.src\",\"size\":10}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:df72ad40-4194-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.276Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":true,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"bytes\",\"value\":\"0\",\"params\":{\"query\":0,\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"bytes\":{\"query\":0,\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: tag cloud with not 0 bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tag cloud with not 0 bytes filter\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"showLabel\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"bytes\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:63983430-4192-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:06:36.275Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"geo.src\",\"value\":\"US\",\"params\":{\"query\":\"US\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"geo.src\":{\"query\":\"US\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"query\":\"Filter Bytes Test:>5000\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: geo map with filter and query bytes > 5000 in US geo.src, heatmap setting", + "uiStateJSON": "{\"mapZoom\":7,\"mapCenter\":[42.98857645832184,-75.49804687500001]}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: geo map with filter and query bytes > 5000 in US geo.src, heatmap setting\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Heatmap\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.3.0\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"

© OpenStreetMap contributors | Elastic Maps Service

\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":4}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "search:be5accf0-3dca-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "search": "7.4.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "search": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Rendering Test: saved search", + "version": 1 + }, + "type": "search", + "updated_at": "2018-04-17T15:09:39.805Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "search:ca5ada40-3dca-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "search": "7.4.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "search": { + "columns": [ + "agent", + "bytes", + "clientip" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"meta\":{\"negate\":false,\"type\":\"phrase\",\"key\":\"bytes\",\"value\":\"1,607\",\"params\":{\"query\":1607,\"type\":\"phrase\"},\"disabled\":false,\"alias\":null,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"bytes\":{\"query\":1607,\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Filter Bytes Test: search with filter", + "version": 1 + }, + "type": "search", + "updated_at": "2018-04-17T15:09:55.976Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:9bebe980-4192-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T15:59:42.648Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: timelion split 5 on bytes", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: timelion split 5 on bytes\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(*, split=bytes:5)\",\"interval\":\"auto\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:1dcdfe30-4192-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T15:59:56.976Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"bytes:>100\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: min bytes metric with query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: min bytes metric with query\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"min\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:35417e50-4194-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T16:06:03.785Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb metric with custom interval and bytes filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb metric with custom interval and bytes filter\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"metric\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"everything\",\"metrics\":[{\"value\":\"\",\"id\":\"61ca57f2-469d-11e7-af02-69e470af7417\",\"type\":\"sum\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":1,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1d\",\"value_template\":\"{{value}} custom template\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}]},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:9fb4c670-4194-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T16:32:59.086Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: tsvb markdown", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: tsvb markdown\",\"type\":\"metrics\",\"params\":{\"id\":\"61ca57f0-469d-11e7-af02-69e470af7417\",\"type\":\"markdown\",\"series\":[{\"id\":\"61ca57f1-469d-11e7-af02-69e470af7417\",\"color\":\"#68BC00\",\"split_mode\":\"filters\",\"metrics\":[{\"id\":\"482d6560-4194-11e8-a461-7d278185cba4\",\"type\":\"avg\",\"field\":\"bytes\"}],\"seperate_axis\":0,\"axis_position\":\"right\",\"formatter\":\"number\",\"chart_type\":\"line\",\"line_width\":1,\"point_size\":1,\"fill\":0.5,\"stacked\":\"none\",\"terms_field\":\"clientip\",\"filter\":{\"query\":\"Filter Bytes Test:>1000\",\"language\":\"lucene\"},\"override_index_pattern\":0,\"series_index_pattern\":\"logstash-*\",\"series_time_field\":\"utc_time\",\"series_interval\":\"1m\",\"value_template\":\"\",\"split_filters\":[{\"filter\":{\"query\":\"bytes:>1000\",\"language\":\"lucene\"},\"label\":\"\",\"color\":\"#68BC00\",\"id\":\"39a107e0-4194-11e8-a461-7d278185cba4\"}],\"label\":\"\",\"var_name\":\"\",\"split_color_mode\":\"gradient\"}],\"time_field\":\"@timestamp\",\"index_pattern\":\"logstash-*\",\"interval\":\"auto\",\"axis_position\":\"left\",\"axis_formatter\":\"number\",\"show_legend\":1,\"show_grid\":1,\"background_color_rules\":[{\"id\":\"06893260-4194-11e8-a461-7d278185cba4\"}],\"bar_color_rules\":[{\"id\":\"36a0e740-4194-11e8-a461-7d278185cba4\"}],\"markdown\":\"{{bytes_1000.last.formatted}}\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:befdb6b0-3e59-11e8-9fc3-39e49624228e", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a16d1990-3dca-11e8-8660-4d65aa086b3c", + "name": "search_0", + "type": "search" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T17:16:27.743Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"animal.keyword\",\"value\":\"dog\",\"params\":{\"query\":\"dog\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"animal.keyword\":{\"query\":\"dog\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" + }, + "savedSearchRefName": "search_0", + "title": "Filter Test: animals: linked to search with filter", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Test: animals: linked to search with filter\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"name.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:584c0300-4191-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-04-17T18:36:30.315Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"bytes:>9000\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Filter Bytes Test: split by geo with query", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: split by geo with query\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"bytes\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.src\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "config:7.0.0-alpha1", + "index": ".kibana_1", + "source": { + "config": { + "buildNum": null, + "dateFormat:tz": "UTC", + "defaultIndex": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "notifications:lifetime:banner": 3600000, + "notifications:lifetime:error": 3600000, + "notifications:lifetime:info": 3600000, + "notifications:lifetime:warning": 3600000 + }, + "references": [ + ], + "type": "config", + "updated_at": "2018-04-17T19:25:03.632Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:8090dcb0-4195-11e8-bb13-d53698fb349a", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + ], + "type": "visualization", + "updated_at": "2018-04-17T19:28:21.967Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{}" + }, + "title": "Filter Bytes Test: vega", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Filter Bytes Test: vega\",\"type\":\"vega\",\"params\":{\"spec\":\"{ \\nconfig: { kibana: { renderer: \\\"svg\\\" }},\\n/*\\n\\nWelcome to Vega visualizations. Here you can design your own dataviz from scratch using a declarative language called Vega, or its simpler form Vega-Lite. In Vega, you have the full control of what data is loaded, even from multiple sources, how that data is transformed, and what visual elements are used to show it. Use help icon to view Vega examples, tutorials, and other docs. Use the wrench icon to reformat this text, or to remove comments.\\n\\nThis example graph shows the document count in all indexes in the current time range. You might need to adjust the time filter in the upper right corner.\\n*/\\n\\n $schema: https://vega.github.io/schema/vega-lite/v2.json\\n title: Event counts from all indexes\\n\\n // Define the data source\\n data: {\\n url: {\\n/*\\nAn object instead of a string for the \\\"url\\\" param is treated as an Elasticsearch query. Anything inside this object is not part of the Vega language, but only understood by Kibana and Elasticsearch server. This query counts the number of documents per time interval, assuming you have a @timestamp field in your data.\\n\\nKibana has a special handling for the fields surrounded by \\\"%\\\". They are processed before the the query is sent to Elasticsearch. This way the query becomes context aware, and can use the time range and the dashboard filters.\\n*/\\n\\n // Apply dashboard context filters when set\\n %context%: true\\n // Filter the time picker (upper right corner) with this field\\n %timefield%: @timestamp\\n\\n/*\\nSee .search() documentation for : https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-search\\n*/\\n\\n // Which index to search\\n index: _all\\n // Aggregate data by the time field into time buckets, counting the number of documents in each bucket.\\n body: {\\n aggs: {\\n time_buckets: {\\n date_histogram: {\\n // Use date histogram aggregation on @timestamp field\\n field: @timestamp\\n // The interval value will depend on the daterange picker (true), or use an integer to set an approximate bucket count\\n interval: {%autointerval%: true}\\n // Make sure we get an entire range, even if it has no data\\n extended_bounds: {\\n // Use the current time range's start and end\\n min: {%timefilter%: \\\"min\\\"}\\n max: {%timefilter%: \\\"max\\\"}\\n }\\n // Use this for linear (e.g. line, area) graphs. Without it, empty buckets will not show up\\n min_doc_count: 0\\n }\\n }\\n }\\n // Speed up the response by only including aggregation results\\n size: 0\\n }\\n }\\n/*\\nElasticsearch will return results in this format:\\n\\naggregations: {\\n time_buckets: {\\n buckets: [\\n {\\n key_as_string: 2015-11-30T22:00:00.000Z\\n key: 1448920800000\\n doc_count: 0\\n },\\n {\\n key_as_string: 2015-11-30T23:00:00.000Z\\n key: 1448924400000\\n doc_count: 0\\n }\\n ...\\n ]\\n }\\n}\\n\\nFor our graph, we only need the list of bucket values. Use the format.property to discard everything else.\\n*/\\n format: {property: \\\"aggregations.time_buckets.buckets\\\"}\\n }\\n\\n // \\\"mark\\\" is the graphics element used to show our data. Other mark values are: area, bar, circle, line, point, rect, rule, square, text, and tick. See https://vega.github.io/vega-lite/docs/mark.html\\n mark: line\\n\\n // \\\"encoding\\\" tells the \\\"mark\\\" what data to use and in what way. See https://vega.github.io/vega-lite/docs/encoding.html\\n encoding: {\\n x: {\\n // The \\\"key\\\" value is the timestamp in milliseconds. Use it for X axis.\\n field: key\\n type: temporal\\n axis: {title: false} // Customize X axis format\\n }\\n y: {\\n // The \\\"doc_count\\\" is the count per bucket. Use it for Y axis.\\n field: doc_count\\n type: quantitative\\n axis: {title: \\\"Document count\\\"}\\n }\\n }\\n}\\n\"},\"aggs\":[]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "config:6.2.4", + "index": ".kibana_1", + "source": { + "config": { + "buildNum": 16627, + "defaultIndex": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "xPackMonitoring:showBanner": false + }, + "references": [ + ], + "type": "config", + "updated_at": "2018-05-09T20:50:57.021Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:edb65990-53ca-11e8-b481-c9426d020fcd", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-05-09T20:52:47.144Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "table created in 6_2", + "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", + "version": 1, + "visState": "{\"title\":\"table created in 6_2\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"weightLbs\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"animal.keyword\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:0644f890-53cb-11e8-b481-c9426d020fcd", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2018-05-09T20:53:28.345Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"weightLbs:>10\",\"language\":\"lucene\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Weight in lbs pie created in 6.2", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"Weight in lbs pie created in 6.2\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"weightLbs\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:1b2f47b0-53cb-11e8-b481-c9426d020fcd", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>15\"},\"filter\":[{\"meta\":{\"field\":\"isDog\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"isDog\",\"value\":\"true\",\"params\":{\"value\":true},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"script\":{\"script\":{\"inline\":\"boolean compare(Supplier s, def v) {return s.get() == v;}compare(() -> { return doc['animal.keyword'].value == 'dog' }, params.value);\",\"lang\":\"painless\",\"params\":{\"value\":true}}},\"$state\":{\"store\":\"appState\"}}],\"highlightAll\":true,\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"gridData\":{\"w\":24,\"h\":12,\"x\":24,\"y\":0,\"i\":\"4\"},\"panelIndex\":\"4\",\"version\":\"7.3.0\",\"panelRefName\":\"panel_0\",\"embeddableConfig\":{}},{\"gridData\":{\"w\":24,\"h\":12,\"x\":0,\"y\":0,\"i\":\"5\"},\"version\":\"7.3.0\",\"panelIndex\":\"5\",\"panelRefName\":\"panel_1\",\"embeddableConfig\":{}}]", + "refreshInterval": { + "display": "Off", + "pause": false, + "value": 0 + }, + "timeFrom": "Mon Apr 09 2018 17:56:08 GMT-0400", + "timeRestore": true, + "timeTo": "Wed Apr 11 2018 17:56:08 GMT-0400", + "title": "Animal Weights (created in 6.2)", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "edb65990-53ca-11e8-b481-c9426d020fcd", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "0644f890-53cb-11e8-b481-c9426d020fcd", + "name": "panel_1", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2018-05-09T20:54:03.435Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "index-pattern:a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "index": ".kibana_1", + "source": { + "index-pattern": { + "fieldFormatMap": "{\"weightLbs\":{\"id\":\"number\",\"params\":{\"pattern\":\"0,0.0\"}},\"is_dog\":{\"id\":\"boolean\"},\"isDog\":{\"id\":\"boolean\"}}", + "fields": "[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"animal\",\"type\":\"string\",\"count\":3,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"animal.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"name\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"sound\",\"type\":\"string\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"sound.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"weightLbs\",\"type\":\"number\",\"count\":2,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"isDog\",\"type\":\"boolean\",\"count\":0,\"scripted\":true,\"script\":\"return doc['animal.keyword'].value == 'dog'\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]", + "timeFieldName": "@timestamp", + "title": "animals-*" + }, + "migrationVersion": { + "index-pattern": "7.6.0" + }, + "references": [ + ], + "type": "index-pattern", + "updated_at": "2018-05-09T20:55:44.314Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "search:6351c590-53cb-11e8-b481-c9426d020fcd", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "search": "7.4.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + } + ], + "search": { + "columns": [ + "animal", + "sound", + "weightLbs" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"weightLbs:>10\"},\"filter\":[{\"meta\":{\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"phrase\",\"key\":\"sound.keyword\",\"value\":\"growl\",\"params\":{\"query\":\"growl\",\"type\":\"phrase\"},\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"},\"query\":{\"match\":{\"sound.keyword\":{\"query\":\"growl\",\"type\":\"phrase\"}}},\"$state\":{\"store\":\"appState\"}}],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "Search created in 6.2", + "version": 1 + }, + "type": "search", + "updated_at": "2018-05-09T20:56:04.457Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "visualization:47b5cf60-9e93-11ea-853e-adc0effaf76d", + "index": ".kibana_1", + "source": { + "migrationVersion": { + "visualization": "7.8.0" + }, + "references": [ + { + "id": "1b1789d0-9e93-11ea-853e-adc0effaf76d", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-05-25T15:16:27.743Z", + "visualization": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "vis with missing index pattern", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"type\":\"pie\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}],\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"title\":\"vis with missing index pattern\"}" + } + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:502e63a0-9e93-11ea-853e-adc0effaf76d", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}" + }, + "optionsJSON": "{\"hidePanelTitles\":false,\"useMargins\":true}", + "panelsJSON": "[{\"version\":\"7.3.0\",\"gridData\":{\"x\":0,\"y\":0,\"w\":24,\"h\":15,\"i\":\"6cfbe6cc-1872-4cb4-9455-a02eeb75127e\"},\"panelIndex\":\"6cfbe6cc-1872-4cb4-9455-a02eeb75127e\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"}]", + "timeRestore": false, + "title": "dashboard with missing index pattern", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "47b5cf60-9e93-11ea-853e-adc0effaf76d", + "name": "panel_0", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-05-25T15:16:27.743Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:d9ce6000-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.2313, + "numberOfClicks": 0, + "timestamp": "2020-05-31T11:21:19.616Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:21:19.616Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:dc1d0af0-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 0.06526666666666667, + "numberOfClicks": 3, + "timestamp": "2020-05-31T11:21:23.487Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:21:23.487Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:f22c7920-a330-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 0.5732333333333333, + "numberOfClicks": 13, + "timestamp": "2020-05-31T11:22:00.498Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-05-31T11:22:00.498Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "dashboard:6eb8a840-a32e-11ea-88c2-d56dd2b14bd7", + "index": ".kibana_1", + "source": { + "dashboard": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\n \"query\": {\n \"language\": \"kuery\",\n \"query\": \"\"\n },\n \"filter\": [\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": true,\n \"type\": \"phrase\",\n \"key\": \"name\",\n \"params\": {\n \"query\": \"moo\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"name\": \"moo\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": true,\n \"type\": \"phrase\",\n \"key\": \"baad-field\",\n \"params\": {\n \"query\": \"moo\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"baad-field\": \"moo\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"phrase\",\n \"key\": \"@timestamp\",\n \"params\": {\n \"query\": \"123\"\n },\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index\"\n },\n \"query\": {\n \"match_phrase\": {\n \"@timestamp\": \"123\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"exists\",\n \"key\": \"extension\",\n \"value\": \"exists\",\n \"indexRefName\": \"kibanaSavedObjectMeta.searchSourceJSON.filter[3].meta.index\"\n },\n \"exists\": {\n \"field\": \"extension\"\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n },\n {\n \"meta\": {\n \"alias\": null,\n \"negate\": false,\n \"disabled\": false,\n \"type\": \"phrase\",\n \"key\": \"banana\",\n \"params\": {\n \"query\": \"yellow\"\n }\n },\n \"query\": {\n \"match_phrase\": {\n \"banana\": \"yellow\"\n }\n },\n \"$state\": {\n \"store\": \"appState\"\n }\n }\n ]\n}" + }, + "optionsJSON": "{\n \"hidePanelTitles\": false,\n \"useMargins\": true\n}", + "panelsJSON": "[\n {\n \"version\": \"8.0.0\",\n \"gridData\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 24,\n \"h\": 15,\n \"i\": \"94a3dc1d-508a-4d42-a480-65b158925ba0\"\n },\n \"panelIndex\": \"94a3dc1d-508a-4d42-a480-65b158925ba0\",\n \"embeddableConfig\": {},\n \"panelRefName\": \"panel_0\"\n }\n]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "now-10y", + "timeRestore": true, + "timeTo": "now", + "title": "dashboard with bad filters", + "version": 1 + }, + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "a0f483a0-3dc9-11e8-8660-bad-index", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[1].meta.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[2].meta.index", + "type": "index-pattern" + }, + { + "id": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[3].meta.index", + "type": "index-pattern" + }, + { + "id": "a0f483a0-3dc9-11e8-8660-4d65aa086b3c", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[4].meta.index", + "type": "index-pattern" + }, + { + "id": "50643b60-3dd3-11e8-b2b9-5d5dc1715159", + "name": "panel_0", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-06-04T09:26:04.272Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "config:8.0.0", + "index": ".kibana_1", + "source": { + "config": { + "accessibility:disableAnimations": true, + "buildNum": null, + "dateFormat:tz": "UTC", + "defaultIndex": "0bf35f60-3dc9-11e8-8660-4d65aa086b3c" + }, + "references": [ + ], + "type": "config", + "updated_at": "2020-06-04T09:22:54.572Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:b2a73c00-a645-11ea-b4c2-47e842e5fce5", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 1.2560333333333333, + "numberOfClicks": 19, + "timestamp": "2020-06-04T09:28:06.848Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-06-04T09:28:06.848Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "ui-metric:DashboardPanelVersionInUrl:8.0.0", + "index": ".kibana_1", + "source": { + "references": [ + ], + "type": "ui-metric", + "ui-metric": { + "count": 15 + }, + "updated_at": "2020-06-04T09:28:06.848Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6847ed80-a645-11ea-b4c2-47e842e5fce5", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 2.291733333333333, + "numberOfClicks": 16, + "timestamp": "2020-06-04T09:26:02.071Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-06-04T09:26:02.072Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:7b331140-a645-11ea-b4c2-47e842e5fce5", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "management", + "minutesOnScreen": 1.2560333333333333, + "numberOfClicks": 19, + "timestamp": "2020-06-04T09:26:33.812Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-06-04T09:26:33.812Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "ui-metric:kibana-user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36", + "index": ".kibana_1", + "source": { + "references": [ + ], + "type": "ui-metric", + "ui-metric": { + "count": 1 + }, + "updated_at": "2020-06-04T09:28:06.848Z" + } + } +} + +{ + "type": "doc", + "value": { + "id": "application_usage_transactional:6f47f610-a646-11ea-b4c2-47e842e5fce5", + "index": ".kibana_1", + "source": { + "application_usage_transactional": { + "appId": "dashboards", + "minutesOnScreen": 6.77335, + "numberOfClicks": 5, + "timestamp": "2020-06-04T09:33:23.313Z" + }, + "references": [ + ], + "type": "application_usage_transactional", + "updated_at": "2020-06-04T09:33:23.313Z" + } + } +} \ No newline at end of file diff --git a/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/data.json.gz b/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/data.json.gz new file mode 100644 index 00000000000000..a4f889da61128a Binary files /dev/null and b/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/data.json.gz differ diff --git a/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/mappings.json b/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/mappings.json new file mode 100644 index 00000000000000..010abff9cf6a9f --- /dev/null +++ b/test/new_visualize_flow/fixtures/es_archiver/logstash_functional/mappings.json @@ -0,0 +1,1118 @@ +{ + "type": "index", + "value": { + "index": "logstash-2015.09.22", + "mappings": { + "dynamic_templates": [ + { + "string_fields": { + "mapping": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "match": "*", + "match_mapping_type": "string" + } + } + ], + "properties": { + "@message": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@tags": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@timestamp": { + "type": "date" + }, + "agent": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "bytes": { + "type": "long" + }, + "clientip": { + "type": "ip" + }, + "extension": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "geo": { + "properties": { + "coordinates": { + "type": "geo_point" + }, + "dest": { + "type": "keyword" + }, + "src": { + "type": "keyword" + }, + "srcdest": { + "type": "keyword" + } + } + }, + "headings": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "host": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "type": "integer" + }, + "index": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ip": { + "type": "ip" + }, + "links": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "machine": { + "properties": { + "os": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ram": { + "type": "long" + } + } + }, + "memory": { + "type": "double" + }, + "meta": { + "properties": { + "char": { + "type": "keyword" + }, + "related": { + "type": "text" + }, + "user": { + "properties": { + "firstname": { + "type": "text" + }, + "lastname": { + "type": "integer" + } + } + } + } + }, + "nestedField": { + "type": "nested", + "properties": { + "child": { + "type": "keyword" + } + } + }, + "phpmemory": { + "type": "long" + }, + "referer": { + "type": "keyword" + }, + "relatedContent": { + "properties": { + "article:modified_time": { + "type": "date" + }, + "article:published_time": { + "type": "date" + }, + "article:section": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "article:tag": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:height": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:width": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:site_name": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:type": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:card": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:site": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "request": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "response": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "spaces": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "type": "keyword" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "utc_time": { + "type": "date" + }, + "xss": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "settings": { + "index": { + "analysis": { + "analyzer": { + "url": { + "max_token_length": "1000", + "tokenizer": "uax_url_email", + "type": "standard" + } + } + }, + "number_of_replicas": "0", + "number_of_shards": "1" + } + } + } +} + +{ + "type": "index", + "value": { + "index": "logstash-2015.09.20", + "mappings": { + "dynamic_templates": [ + { + "string_fields": { + "mapping": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "match": "*", + "match_mapping_type": "string" + } + } + ], + "properties": { + "@message": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@tags": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@timestamp": { + "type": "date" + }, + "agent": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "bytes": { + "type": "long" + }, + "clientip": { + "type": "ip" + }, + "extension": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "geo": { + "properties": { + "coordinates": { + "type": "geo_point" + }, + "dest": { + "type": "keyword" + }, + "src": { + "type": "keyword" + }, + "srcdest": { + "type": "keyword" + } + } + }, + "headings": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "host": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "type": "integer" + }, + "index": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ip": { + "type": "ip" + }, + "links": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "machine": { + "properties": { + "os": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ram": { + "type": "long" + } + } + }, + "memory": { + "type": "double" + }, + "meta": { + "properties": { + "char": { + "type": "keyword" + }, + "related": { + "type": "text" + }, + "user": { + "properties": { + "firstname": { + "type": "text" + }, + "lastname": { + "type": "integer" + } + } + } + } + }, + "nestedField": { + "type": "nested", + "properties": { + "child": { + "type": "keyword" + } + } + }, + "phpmemory": { + "type": "long" + }, + "referer": { + "type": "keyword" + }, + "relatedContent": { + "properties": { + "article:modified_time": { + "type": "date" + }, + "article:published_time": { + "type": "date" + }, + "article:section": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "article:tag": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:height": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:width": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:site_name": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:type": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:card": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:site": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "request": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "response": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "spaces": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "type": "keyword" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "utc_time": { + "type": "date" + }, + "xss": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "settings": { + "index": { + "analysis": { + "analyzer": { + "url": { + "max_token_length": "1000", + "tokenizer": "uax_url_email", + "type": "standard" + } + } + }, + "number_of_replicas": "0", + "number_of_shards": "1" + } + } + } +} + +{ + "type": "index", + "value": { + "index": "logstash-2015.09.21", + "mappings": { + "dynamic_templates": [ + { + "string_fields": { + "mapping": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "match": "*", + "match_mapping_type": "string" + } + } + ], + "properties": { + "@message": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@tags": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "@timestamp": { + "type": "date" + }, + "agent": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "bytes": { + "type": "long" + }, + "clientip": { + "type": "ip" + }, + "extension": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "geo": { + "properties": { + "coordinates": { + "type": "geo_point" + }, + "dest": { + "type": "keyword" + }, + "src": { + "type": "keyword" + }, + "srcdest": { + "type": "keyword" + } + } + }, + "headings": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "host": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "id": { + "type": "integer" + }, + "index": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ip": { + "type": "ip" + }, + "links": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "machine": { + "properties": { + "os": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "ram": { + "type": "long" + } + } + }, + "memory": { + "type": "double" + }, + "meta": { + "properties": { + "char": { + "type": "keyword" + }, + "related": { + "type": "text" + }, + "user": { + "properties": { + "firstname": { + "type": "text" + }, + "lastname": { + "type": "integer" + } + } + } + } + }, + "nestedField": { + "type": "nested", + "properties": { + "child": { + "type": "keyword" + } + } + }, + "phpmemory": { + "type": "long" + }, + "referer": { + "type": "keyword" + }, + "relatedContent": { + "properties": { + "article:modified_time": { + "type": "date" + }, + "article:published_time": { + "type": "date" + }, + "article:section": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "article:tag": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:height": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:image:width": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:site_name": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:type": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "og:url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:card": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:description": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:image": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:site": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "twitter:title": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "request": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "response": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "spaces": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "type": { + "type": "keyword" + }, + "url": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + }, + "utc_time": { + "type": "date" + }, + "xss": { + "fields": { + "raw": { + "type": "keyword" + } + }, + "type": "text" + } + } + }, + "settings": { + "index": { + "analysis": { + "analyzer": { + "url": { + "max_token_length": "1000", + "tokenizer": "uax_url_email", + "type": "standard" + } + } + }, + "number_of_replicas": "0", + "number_of_shards": "1" + } + } + } +} diff --git a/test/new_visualize_flow/index.ts b/test/new_visualize_flow/index.ts index e915525155990e..08c00a0074bef7 100644 --- a/test/new_visualize_flow/index.ts +++ b/test/new_visualize_flow/index.ts @@ -19,9 +19,14 @@ import { FtrProviderContext } from '../functional/ftr_provider_context'; // eslint-disable-next-line import/no-default-export -export default function ({ loadTestFile }: FtrProviderContext) { +export default function ({ loadTestFile, getService }: FtrProviderContext) { describe('New Visualize Flow', function () { this.tags('ciGroup2'); + const esArchiver = getService('esArchiver'); + before(async () => { + await esArchiver.loadIfNeeded('logstash_functional'); + }); + loadTestFile(require.resolve('./dashboard_embedding')); }); } diff --git a/test/plugin_functional/test_suites/core_plugins/applications.ts b/test/plugin_functional/test_suites/core_plugins/applications.ts index 4c72c091a2bee4..d18fa31b0694b5 100644 --- a/test/plugin_functional/test_suites/core_plugins/applications.ts +++ b/test/plugin_functional/test_suites/core_plugins/applications.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide const testSubjects = getService('testSubjects'); const find = getService('find'); const retry = getService('retry'); + const deployment = getService('deployment'); const loadingScreenNotShown = async () => expect(await testSubjects.exists('kbnLoadingMessage')).to.be(false); @@ -55,7 +56,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide }; const navigateTo = async (path: string) => - await browser.navigateTo(`${PageObjects.common.getHostPort()}${path}`); + await browser.navigateTo(`${deployment.getHostPort()}${path}`); describe('ui applications', function describeIndexTests() { before(async () => { diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index 9931a3fabcd8d3..781e364996a56c 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -32,15 +32,15 @@ declare global { } } -export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) { - const PageObjects = getPageObjects(['common']); +export default function ({ getService }: PluginFunctionalProviderContext) { const appsMenu = getService('appsMenu'); const browser = getService('browser'); + const deployment = getService('deployment'); const find = getService('find'); const testSubjects = getService('testSubjects'); const navigateTo = async (path: string) => - await browser.navigateTo(`${PageObjects.common.getHostPort()}${path}`); + await browser.navigateTo(`${deployment.getHostPort()}${path}`); const navigateToApp = async (title: string) => { await appsMenu.clickLink(title); return browser.execute(() => { diff --git a/test/plugin_functional/test_suites/core_plugins/top_nav.ts b/test/plugin_functional/test_suites/core_plugins/top_nav.ts index c679ac89f2f610..9420ee2911b98f 100644 --- a/test/plugin_functional/test_suites/core_plugins/top_nav.ts +++ b/test/plugin_functional/test_suites/core_plugins/top_nav.ts @@ -19,15 +19,14 @@ import expect from '@kbn/expect'; import { PluginFunctionalProviderContext } from '../../services'; -export default function ({ getService, getPageObjects }: PluginFunctionalProviderContext) { - const PageObjects = getPageObjects(['common']); - +export default function ({ getService }: PluginFunctionalProviderContext) { const browser = getService('browser'); + const deployment = getService('deployment'); const testSubjects = getService('testSubjects'); describe.skip('top nav', function describeIndexTests() { before(async () => { - const url = `${PageObjects.common.getHostPort()}/app/kbn_tp_top_nav/`; + const url = `${deployment.getHostPort()}/app/kbn_tp_top_nav/`; await browser.get(url); }); diff --git a/test/scripts/checks/commit/commit.sh b/test/scripts/checks/commit/commit.sh new file mode 100755 index 00000000000000..5d300468a65e3a --- /dev/null +++ b/test/scripts/checks/commit/commit.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +source src/dev/ci_setup/setup_env.sh + +# Runs pre-commit hook script for the files touched in the last commit. +# That way we can ensure a set of quick commit checks earlier as we removed +# the pre-commit hook installation by default. +# If files are more than 200 we will skip it and just use +# the further ci steps that already check linting and file casing for the entire repo. +checks-reporter-with-killswitch "Quick commit checks" \ + "$(dirname "${0}")/commit_check_runner.sh" diff --git a/test/scripts/checks/commit/commit_check_runner.sh b/test/scripts/checks/commit/commit_check_runner.sh new file mode 100755 index 00000000000000..8d35c3698f3e11 --- /dev/null +++ b/test/scripts/checks/commit/commit_check_runner.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +run_quick_commit_checks() { + echo "!!!!!!!! ATTENTION !!!!!!!! +That check is intended to provide earlier CI feedback after we remove the automatic install for the local pre-commit hook. +If you want, you can still manually install the pre-commit hook locally by running 'node scripts/register_git_hook locally' +!!!!!!!!!!!!!!!!!!!!!!!!!!! +" + + node scripts/precommit_hook.js --ref HEAD~1..HEAD --max-files 200 --verbose +} + +run_quick_commit_checks diff --git a/test/scripts/checks/jest_configs.sh b/test/scripts/checks/jest_configs.sh new file mode 100644 index 00000000000000..28cb1386c748ff --- /dev/null +++ b/test/scripts/checks/jest_configs.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +source src/dev/ci_setup/setup_env.sh + +checks-reporter-with-killswitch "Check Jest Configs" node scripts/check_jest_configs diff --git a/test/scripts/checks/plugins_with_circular_deps.sh b/test/scripts/checks/plugins_with_circular_deps.sh new file mode 100644 index 00000000000000..77880243538d2a --- /dev/null +++ b/test/scripts/checks/plugins_with_circular_deps.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +source src/dev/ci_setup/setup_env.sh + +checks-reporter-with-killswitch "Check plugins with circular dependencies" \ + node scripts/find_plugins_with_circular_deps diff --git a/test/scripts/jenkins_unit.sh b/test/scripts/jenkins_unit.sh index a9751003e84258..1f6a3d440734bd 100755 --- a/test/scripts/jenkins_unit.sh +++ b/test/scripts/jenkins_unit.sh @@ -2,11 +2,23 @@ source test/scripts/jenkins_test_setup.sh +rename_coverage_file() { + test -f target/kibana-coverage/jest/coverage-final.json \ + && mv target/kibana-coverage/jest/coverage-final.json \ + target/kibana-coverage/jest/$1-coverage-final.json +} + if [[ -z "$CODE_COVERAGE" ]] ; then "$(FORCE_COLOR=0 yarn bin)/grunt" jenkins:unit --dev; else echo " -> Running jest tests with coverage" node scripts/jest --ci --verbose --coverage + rename_coverage_file "oss" + echo "" + echo "" + echo " -> Running jest integration tests with coverage" + node --max-old-space-size=8192 scripts/jest_integration --ci --verbose --coverage || true; + rename_coverage_file "oss-integration" echo "" echo "" echo " -> Running mocha tests with coverage" diff --git a/test/scripts/jenkins_xpack.sh b/test/scripts/jenkins_xpack.sh index 6a56b11344af57..438a85aa861428 100755 --- a/test/scripts/jenkins_xpack.sh +++ b/test/scripts/jenkins_xpack.sh @@ -9,18 +9,6 @@ if [[ -z "$CODE_COVERAGE" ]] ; then echo "" echo "" - echo " -> Running Security Solution cyclic dependency test" - cd "$XPACK_DIR" - checks-reporter-with-killswitch "X-Pack Security Solution cyclic dependency test" node plugins/security_solution/scripts/check_circular_deps - echo "" - echo "" - - echo " -> Running List cyclic dependency test" - cd "$XPACK_DIR" - checks-reporter-with-killswitch "X-Pack List cyclic dependency test" node plugins/lists/scripts/check_circular_deps - echo "" - echo "" - # echo " -> Running jest integration tests" # cd "$XPACK_DIR" # node scripts/jest_integration --ci --verbose diff --git a/test/scripts/jenkins_xpack_build_kibana.sh b/test/scripts/jenkins_xpack_build_kibana.sh index 2452e2f5b8c58c..8bb6effbec89c3 100755 --- a/test/scripts/jenkins_xpack_build_kibana.sh +++ b/test/scripts/jenkins_xpack_build_kibana.sh @@ -22,7 +22,8 @@ node scripts/functional_tests --assert-none-excluded \ --include-tag ciGroup7 \ --include-tag ciGroup8 \ --include-tag ciGroup9 \ - --include-tag ciGroup10 + --include-tag ciGroup10 \ + --include-tag ciGroup11 # Do not build kibana for code coverage run if [[ -z "$CODE_COVERAGE" ]] ; then diff --git a/test/scripts/test/xpack_list_cyclic_dependency.sh b/test/scripts/test/xpack_list_cyclic_dependency.sh deleted file mode 100755 index 493fe9f58d322e..00000000000000 --- a/test/scripts/test/xpack_list_cyclic_dependency.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack List cyclic dependency test" node plugins/lists/scripts/check_circular_deps diff --git a/test/scripts/test/xpack_siem_cyclic_dependency.sh b/test/scripts/test/xpack_siem_cyclic_dependency.sh deleted file mode 100755 index b21301f25ad087..00000000000000 --- a/test/scripts/test/xpack_siem_cyclic_dependency.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -cd x-pack -checks-reporter-with-killswitch "X-Pack SIEM cyclic dependency test" node plugins/security_solution/scripts/check_circular_deps diff --git a/test/server_integration/http/platform/headers.ts b/test/server_integration/http/platform/headers.ts index 50cfa5c7022312..9361d3131b7199 100644 --- a/test/server_integration/http/platform/headers.ts +++ b/test/server_integration/http/platform/headers.ts @@ -18,11 +18,9 @@ */ import Http from 'http'; import Url from 'url'; +import { getUrl } from '@kbn/test'; import { FtrProviderContext } from '../../services/types'; -// @ts-ignore -import getUrl from '../../../../src/test_utils/get_url'; - const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); const oneSec = 1_000; diff --git a/tsconfig.base.json b/tsconfig.base.json index 111c9dbc949de0..247813da51cfb3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -6,10 +6,6 @@ "kibana": ["./kibana"], "kibana/public": ["src/core/public"], "kibana/server": ["src/core/server"], - "plugins/*": ["src/legacy/core_plugins/*/public/"], - "test_utils/*": [ - "src/test_utils/public/*" - ], "fixtures/*": ["src/fixtures/*"] }, // Support .tsx files and transform JSX into calls to React.createElement diff --git a/tsconfig.json b/tsconfig.json index 6e137e445762de..02048414f678e3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "incremental": false }, - "include": ["kibana.d.ts", "src/**/*", "typings/**/*", "test_utils/**/*"], + "include": ["kibana.d.ts", "src/**/*", "typings/**/*"], "exclude": [ "src/**/__fixtures__/**/*", "src/core/**/*", @@ -20,7 +20,6 @@ "src/plugins/telemetry_collection_manager/**/*", "src/plugins/url_forwarding/**/*", "src/plugins/usage_collection/**/*", - "src/test_utils/**/*" // In the build we actually exclude **/public/**/* from this config so that // we can run the TSC on both this and the .browser version of this config // file, but if we did it during development IDEs would not be able to find @@ -42,6 +41,5 @@ { "path": "./src/plugins/telemetry_collection_manager/tsconfig.json" }, { "path": "./src/plugins/url_forwarding/tsconfig.json" }, { "path": "./src/plugins/usage_collection/tsconfig.json" }, - { "path": "./src/test_utils/tsconfig.json" } ] } diff --git a/tsconfig.refs.json b/tsconfig.refs.json index 55d63f516b998f..a99d4d57d3f0ac 100644 --- a/tsconfig.refs.json +++ b/tsconfig.refs.json @@ -15,6 +15,5 @@ { "path": "./src/plugins/telemetry_collection_manager/tsconfig.json" }, { "path": "./src/plugins/url_forwarding/tsconfig.json" }, { "path": "./src/plugins/usage_collection/tsconfig.json" }, - { "path": "./src/test_utils/tsconfig.json" } ] } diff --git a/vars/kibanaCoverage.groovy b/vars/kibanaCoverage.groovy index e75ed8fef98754..521672e4bf48c2 100644 --- a/vars/kibanaCoverage.groovy +++ b/vars/kibanaCoverage.groovy @@ -145,7 +145,7 @@ def generateReports(title) { source src/dev/ci_setup/setup_env.sh true # bootstrap from x-pack folder cd x-pack - yarn kbn bootstrap --prefer-offline + yarn kbn bootstrap # Return to project root cd .. . src/dev/code_coverage/shell_scripts/extract_archives.sh @@ -172,7 +172,7 @@ def uploadCombinedReports() { def ingestData(jobName, buildNum, buildUrl, previousSha, teamAssignmentsPath, title) { kibanaPipeline.bash(""" source src/dev/ci_setup/setup_env.sh - yarn kbn bootstrap --prefer-offline + yarn kbn bootstrap # Using existing target/kibana-coverage folder . src/dev/code_coverage/shell_scripts/generate_team_assignments_and_ingest_coverage.sh '${jobName}' ${buildNum} '${buildUrl}' '${previousSha}' '${teamAssignmentsPath}' """, title) @@ -249,6 +249,7 @@ def xpackProks() { 'xpack-ciGroup8' : kibanaPipeline.xpackCiGroupProcess(8), 'xpack-ciGroup9' : kibanaPipeline.xpackCiGroupProcess(9), 'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10), + 'xpack-ciGroup11': kibanaPipeline.xpackCiGroupProcess(11), ] } diff --git a/vars/kibanaPipeline.groovy b/vars/kibanaPipeline.groovy index 00512937047174..7991dd32521530 100644 --- a/vars/kibanaPipeline.groovy +++ b/vars/kibanaPipeline.groovy @@ -89,6 +89,7 @@ def withFunctionalTestEnv(List additionalEnvs = [], Closure closure) { def esTransportPort = "61${parallelId}3" def fleetPackageRegistryPort = "61${parallelId}4" def alertingProxyPort = "61${parallelId}5" + def apmActive = githubPr.isPr() ? "false" : "true" withEnv([ "CI_GROUP=${parallelId}", @@ -101,7 +102,9 @@ def withFunctionalTestEnv(List additionalEnvs = [], Closure closure) { "TEST_ES_TRANSPORT_PORT=${esTransportPort}", "KBN_NP_PLUGINS_BUILT=true", "FLEET_PACKAGE_REGISTRY_PORT=${fleetPackageRegistryPort}", - "ALERTING_PROXY_PORT=${alertingProxyPort}" + "ALERTING_PROXY_PORT=${alertingProxyPort}", + "ELASTIC_APM_ACTIVE=${apmActive}", + "ELASTIC_APM_TRANSACTION_SAMPLE_RATE=0.1", ] + additionalEnvs) { closure() } diff --git a/vars/kibanaTeamAssign.groovy b/vars/kibanaTeamAssign.groovy index caf1ee36e25a83..590d3af4b7bf9e 100644 --- a/vars/kibanaTeamAssign.groovy +++ b/vars/kibanaTeamAssign.groovy @@ -1,7 +1,7 @@ def generateTeamAssignments(teamAssignmentsPath, title) { kibanaPipeline.bash(""" source src/dev/ci_setup/setup_env.sh - yarn kbn bootstrap --prefer-offline + yarn kbn bootstrap # Build team assignments dat file node scripts/generate_team_assignments.js --verbose --dest '${teamAssignmentsPath}' diff --git a/vars/tasks.groovy b/vars/tasks.groovy index 5a8161ebd36085..348da83cc13648 100644 --- a/vars/tasks.groovy +++ b/vars/tasks.groovy @@ -4,14 +4,17 @@ def call(List closures) { def check() { tasks([ + kibanaPipeline.scriptTask('Quick Commit Checks', 'test/scripts/checks/commit/commit.sh'), kibanaPipeline.scriptTask('Check Telemetry Schema', 'test/scripts/checks/telemetry.sh'), kibanaPipeline.scriptTask('Check TypeScript Projects', 'test/scripts/checks/ts_projects.sh'), + kibanaPipeline.scriptTask('Check Jest Configs', 'test/scripts/checks/jest_configs.sh'), kibanaPipeline.scriptTask('Check Doc API Changes', 'test/scripts/checks/doc_api_changes.sh'), kibanaPipeline.scriptTask('Check Types', 'test/scripts/checks/type_check.sh'), kibanaPipeline.scriptTask('Check Bundle Limits', 'test/scripts/checks/bundle_limits.sh'), kibanaPipeline.scriptTask('Check i18n', 'test/scripts/checks/i18n.sh'), kibanaPipeline.scriptTask('Check File Casing', 'test/scripts/checks/file_casing.sh'), kibanaPipeline.scriptTask('Check Licenses', 'test/scripts/checks/licenses.sh'), + kibanaPipeline.scriptTask('Check Plugins With Circular Dependencies', 'test/scripts/checks/plugins_with_circular_deps.sh'), kibanaPipeline.scriptTask('Verify NOTICE', 'test/scripts/checks/verify_notice.sh'), kibanaPipeline.scriptTask('Test Projects', 'test/scripts/checks/test_projects.sh'), kibanaPipeline.scriptTask('Test Hardening', 'test/scripts/checks/test_hardening.sh'), @@ -33,8 +36,6 @@ def test() { kibanaPipeline.scriptTask('Jest Unit Tests', 'test/scripts/test/jest_unit.sh'), kibanaPipeline.scriptTask('API Integration Tests', 'test/scripts/test/api_integration.sh'), - kibanaPipeline.scriptTask('X-Pack SIEM cyclic dependency', 'test/scripts/test/xpack_siem_cyclic_dependency.sh'), - kibanaPipeline.scriptTask('X-Pack List cyclic dependency', 'test/scripts/test/xpack_list_cyclic_dependency.sh'), kibanaPipeline.scriptTask('X-Pack Jest Unit Tests', 'test/scripts/test/xpack_jest_unit.sh'), ]) } @@ -94,7 +95,7 @@ def functionalXpack(Map params = [:]) { kibanaPipeline.buildXpack(10) if (config.ciGroups) { - def ciGroups = 1..10 + def ciGroups = 1..11 tasks(ciGroups.collect { kibanaPipeline.xpackCiGroupProcess(it) }) } diff --git a/vars/workers.groovy b/vars/workers.groovy index b6ff5b27667dd6..a1d569595ab4b9 100644 --- a/vars/workers.groovy +++ b/vars/workers.groovy @@ -9,6 +9,8 @@ def label(size) { return 'docker && linux && immutable' case 's-highmem': return 'docker && tests-s' + case 'm-highmem': + return 'docker && linux && immutable && gobld/machineType:n1-highmem-8' case 'l': return 'docker && tests-l' case 'xl': @@ -132,7 +134,7 @@ def ci(Map params, Closure closure) { // Worker for running the current intake jobs. Just runs a single script after bootstrap. def intake(jobName, String script) { return { - ci(name: jobName, size: 's-highmem', ramDisk: true) { + ci(name: jobName, size: 'm-highmem', ramDisk: true) { withEnv(["JOB=${jobName}"]) { kibanaPipeline.notifyOnError { runbld(script, "Execute ${jobName}") diff --git a/x-pack/dev-tools/jest/create_jest_config.js b/x-pack/dev-tools/jest/create_jest_config.js deleted file mode 100644 index 2ddc58500d15e4..00000000000000 --- a/x-pack/dev-tools/jest/create_jest_config.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -export function createJestConfig({ kibanaDirectory, rootDir }) { - return { - preset: '@kbn/test', - rootDir: kibanaDirectory, - roots: [`${rootDir}/plugins`], - reporters: [ - 'default', - [ - `${kibanaDirectory}/packages/kbn-test/target/jest/junit_reporter`, - { - reportName: 'X-Pack Jest Tests', - }, - ], - ], - }; -} diff --git a/x-pack/dev-tools/jest/index.js b/x-pack/dev-tools/jest/index.js deleted file mode 100644 index c22f8625c5778c..00000000000000 --- a/x-pack/dev-tools/jest/index.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { run } from 'jest'; -import { resolve } from 'path'; - -import { createJestConfig } from './create_jest_config'; - -export function runJest() { - process.env.NODE_ENV = process.env.NODE_ENV || 'test'; - const config = JSON.stringify( - createJestConfig({ - kibanaDirectory: resolve(__dirname, '../../..'), - rootDir: resolve(__dirname, '../..'), - xPackKibanaDirectory: resolve(__dirname, '../..'), - }) - ); - - const argv = [...process.argv.slice(2), '--config', config]; - - return run(argv); -} diff --git a/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx b/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx index 6e44479d058d8e..134cda6f541887 100644 --- a/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx +++ b/x-pack/examples/alerting_example/public/alert_types/always_firing.tsx @@ -22,7 +22,6 @@ import { AlertConditionsGroup, AlertTypeModel, AlertTypeParamsExpressionProps, - AlertsContextValue, } from '../../../../plugins/triggers_actions_ui/public'; import { AlwaysFiringParams, @@ -65,7 +64,7 @@ const DEFAULT_THRESHOLDS: AlwaysFiringParams['thresholds'] = { }; export const AlwaysFiringExpression: React.FunctionComponent< - AlertTypeParamsExpressionProps + AlertTypeParamsExpressionProps > = ({ alertParams, setAlertParams, actionGroups, defaultActionGroupId }) => { const { instances = DEFAULT_INSTANCES_TO_GENERATE, diff --git a/x-pack/examples/alerting_example/public/components/create_alert.tsx b/x-pack/examples/alerting_example/public/components/create_alert.tsx index 6a85e21df450f1..8b62dfbb0997bc 100644 --- a/x-pack/examples/alerting_example/public/components/create_alert.tsx +++ b/x-pack/examples/alerting_example/public/components/create_alert.tsx @@ -4,26 +4,27 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useState } from 'react'; +import React, { useMemo, useState } from 'react'; import { EuiIcon, EuiFlexItem, EuiCard, EuiFlexGroup } from '@elastic/eui'; -import { AlertsContextProvider, AlertAdd } from '../../../../plugins/triggers_actions_ui/public'; import { AlertingExampleComponentParams } from '../application'; import { ALERTING_EXAMPLE_APP_ID } from '../../common/constants'; -export const CreateAlert = ({ - http, - triggersActionsUi, - charts, - uiSettings, - docLinks, - data, - toastNotifications, - capabilities, -}: AlertingExampleComponentParams) => { +export const CreateAlert = ({ triggersActionsUi }: AlertingExampleComponentParams) => { const [alertFlyoutVisible, setAlertFlyoutVisibility] = useState(false); + const AddAlertFlyout = useMemo( + () => + triggersActionsUi.getAddAlertFlyout({ + consumer: ALERTING_EXAMPLE_APP_ID, + addFlyoutVisible: alertFlyoutVisible, + setAddFlyoutVisibility: setAlertFlyoutVisibility, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [alertFlyoutVisible] + ); + return ( @@ -34,27 +35,7 @@ export const CreateAlert = ({ onClick={() => setAlertFlyoutVisibility(true)} /> - - - - - + {AddAlertFlyout} ); }; diff --git a/x-pack/examples/alerting_example/public/plugin.tsx b/x-pack/examples/alerting_example/public/plugin.tsx index eebb1e2687acc9..5e552bd1b1800d 100644 --- a/x-pack/examples/alerting_example/public/plugin.tsx +++ b/x-pack/examples/alerting_example/public/plugin.tsx @@ -12,7 +12,10 @@ import { } from '../../../../src/core/public'; import { PluginSetupContract as AlertingSetup } from '../../../plugins/alerts/public'; import { ChartsPluginStart } from '../../../../src/plugins/charts/public'; -import { TriggersAndActionsUIPublicPluginSetup } from '../../../plugins/triggers_actions_ui/public'; +import { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '../../../plugins/triggers_actions_ui/public'; import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; import { getAlertType as getAlwaysFiringAlertType } from './alert_types/always_firing'; import { getAlertType as getPeopleInSpaceAlertType } from './alert_types/astros'; @@ -30,7 +33,7 @@ export interface AlertingExamplePublicSetupDeps { export interface AlertingExamplePublicStartDeps { alerts: AlertingSetup; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; charts: ChartsPluginStart; data: DataPublicPluginStart; } diff --git a/x-pack/examples/alerting_example/server/alert_types/astros.ts b/x-pack/examples/alerting_example/server/alert_types/astros.ts index 852e6f57d11066..f0f47adffa1090 100644 --- a/x-pack/examples/alerting_example/server/alert_types/astros.ts +++ b/x-pack/examples/alerting_example/server/alert_types/astros.ts @@ -43,6 +43,10 @@ export const alertType: AlertType = { name: 'People In Space Right Now', actionGroups: [{ id: 'default', name: 'default' }], defaultActionGroupId: 'default', + recoveryActionGroup: { + id: 'hasLandedBackOnEarth', + name: 'Has landed back on Earth', + }, async executor({ services, params }) { const { outerSpaceCapacity, craft: craftToTriggerBy, op } = params; diff --git a/x-pack/jest.config.js b/x-pack/jest.config.js new file mode 100644 index 00000000000000..8b3f717b40e661 --- /dev/null +++ b/x-pack/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + rootDir: '..', + projects: ['/x-pack/plugins/*/jest.config.js'], + reporters: [ + 'default', + ['/packages/kbn-test/target/jest/junit_reporter', { reportName: 'X-Pack Jest Tests' }], + ], +}; diff --git a/x-pack/plugins/actions/README.md b/x-pack/plugins/actions/README.md index 432a4bfff7a6b9..fb0293dca5ff44 100644 --- a/x-pack/plugins/actions/README.md +++ b/x-pack/plugins/actions/README.md @@ -529,7 +529,7 @@ The PagerDuty action uses the [V2 Events API](https://v2.developer.pagerduty.com | Property | Description | Type | | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | | eventAction | One of `trigger` _(default)_, `resolve`, or `acknowlege`. See [event action](https://v2.developer.pagerduty.com/docs/events-api-v2#event-action) for more details. | string _(optional)_ | -| dedupKey | All actions sharing this key will be associated with the same PagerDuty alert. Used to correlate trigger and resolution. Defaults to `action:`. The maximum length is **255** characters. See [alert deduplication](https://v2.developer.pagerduty.com/docs/events-api-v2#alert-de-duplication) for details. | string _(optional)_ | +| dedupKey | All actions sharing this key will be associated with the same PagerDuty alert. Used to correlate trigger and resolution. The maximum length is **255** characters. See [alert deduplication](https://v2.developer.pagerduty.com/docs/events-api-v2#alert-de-duplication) for details. | string _(optional)_ | | summary | A text summary of the event, defaults to `No summary provided`. The maximum length is **1024** characters. | string _(optional)_ | | source | The affected system, preferably a hostname or fully qualified domain name. Defaults to `Kibana Action `. | string _(optional)_ | | severity | The perceived severity of on the affected system. This can be one of `critical`, `error`, `warning` or `info`_(default)_. | string _(optional)_ | diff --git a/x-pack/plugins/actions/jest.config.js b/x-pack/plugins/actions/jest.config.js new file mode 100644 index 00000000000000..2aaa277079ad37 --- /dev/null +++ b/x-pack/plugins/actions/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/actions'], +}; diff --git a/x-pack/plugins/actions/server/actions_client.test.ts b/x-pack/plugins/actions/server/actions_client.test.ts index 171f8d4b0b1d43..8b6c25e1c3f241 100644 --- a/x-pack/plugins/actions/server/actions_client.test.ts +++ b/x-pack/plugins/actions/server/actions_client.test.ts @@ -15,6 +15,8 @@ import { actionsConfigMock } from './actions_config.mock'; import { getActionsConfigurationUtilities } from './actions_config'; import { licenseStateMock } from './lib/license_state.mock'; import { licensingMock } from '../../licensing/server/mocks'; +import { httpServerMock } from '../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../security/server/audit/index.mock'; import { elasticsearchServiceMock, @@ -22,17 +24,23 @@ import { } from '../../../../src/core/server/mocks'; import { actionExecutorMock } from './lib/action_executor.mock'; import uuid from 'uuid'; -import { KibanaRequest } from 'kibana/server'; import { ActionsAuthorization } from './authorization/actions_authorization'; import { actionsAuthorizationMock } from './authorization/actions_authorization.mock'; +jest.mock('../../../../src/core/server/saved_objects/service/lib/utils', () => ({ + SavedObjectsUtils: { + generateId: () => 'mock-saved-object-id', + }, +})); + const defaultKibanaIndex = '.kibana'; const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); const scopedClusterClient = elasticsearchServiceMock.createLegacyScopedClusterClient(); const actionExecutor = actionExecutorMock.create(); const authorization = actionsAuthorizationMock.create(); const executionEnqueuer = jest.fn(); -const request = {} as KibanaRequest; +const request = httpServerMock.createKibanaRequest(); +const auditLogger = auditServiceMock.create().asScoped(request); const mockTaskManager = taskManagerMock.createSetup(); @@ -68,6 +76,7 @@ beforeEach(() => { executionEnqueuer, request, authorization: (authorization as unknown) as ActionsAuthorization, + auditLogger, }); }); @@ -142,6 +151,95 @@ describe('create()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when creating a connector', async () => { + const savedObjectCreateResult = { + id: '1', + type: 'action', + attributes: { + name: 'my name', + actionTypeId: 'my-action-type', + config: {}, + }, + references: [], + }; + actionTypeRegistry.register({ + id: savedObjectCreateResult.attributes.actionTypeId, + name: 'My action type', + minimumLicenseRequired: 'basic', + executor, + }); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce(savedObjectCreateResult); + + await actionsClient.create({ + action: { + ...savedObjectCreateResult.attributes, + secrets: {}, + }, + }); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_create', + outcome: 'unknown', + }), + kibana: { saved_object: { id: 'mock-saved-object-id', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to create a connector', async () => { + const savedObjectCreateResult = { + id: '1', + type: 'action', + attributes: { + name: 'my name', + actionTypeId: 'my-action-type', + config: {}, + }, + references: [], + }; + actionTypeRegistry.register({ + id: savedObjectCreateResult.attributes.actionTypeId, + name: 'My action type', + minimumLicenseRequired: 'basic', + executor, + }); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce(savedObjectCreateResult); + + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect( + async () => + await actionsClient.create({ + action: { + ...savedObjectCreateResult.attributes, + secrets: {}, + }, + }) + ).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_create', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: 'mock-saved-object-id', + type: 'action', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); + test('creates an action with all given properties', async () => { const savedObjectCreateResult = { id: '1', @@ -185,6 +283,9 @@ describe('create()', () => { "name": "my name", "secrets": Object {}, }, + Object { + "id": "mock-saved-object-id", + }, ] `); }); @@ -289,6 +390,9 @@ describe('create()', () => { "name": "my name", "secrets": Object {}, }, + Object { + "id": "mock-saved-object-id", + }, ] `); }); @@ -440,7 +544,7 @@ describe('get()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('get'); }); - test('throws when user is not authorised to create the type of action', async () => { + test('throws when user is not authorised to get the type of action', async () => { unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ id: '1', type: 'type', @@ -463,7 +567,7 @@ describe('get()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('get'); }); - test('throws when user is not authorised to create preconfigured of action', async () => { + test('throws when user is not authorised to get preconfigured of action', async () => { actionsClient = new ActionsClient({ actionTypeRegistry, unsecuredSavedObjectsClient, @@ -501,6 +605,61 @@ describe('get()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when getting a connector', async () => { + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'type', + attributes: { + name: 'my name', + actionTypeId: 'my-action-type', + config: {}, + }, + references: [], + }); + + await actionsClient.get({ id: '1' }); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_get', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to get a connector', async () => { + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'type', + attributes: { + name: 'my name', + actionTypeId: 'my-action-type', + config: {}, + }, + references: [], + }); + + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(actionsClient.get({ id: '1' })).rejects.toThrow(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_get', + outcome: 'failure', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + error: { code: 'Error', message: 'Unauthorized' }, + }) + ); + }); + }); + test('calls unsecuredSavedObjectsClient with id', async () => { unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ id: '1', @@ -632,6 +791,64 @@ describe('getAll()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when searching connectors', async () => { + unsecuredSavedObjectsClient.find.mockResolvedValueOnce({ + total: 1, + per_page: 10, + page: 1, + saved_objects: [ + { + id: '1', + type: 'type', + attributes: { + name: 'test', + config: { + foo: 'bar', + }, + }, + score: 1, + references: [], + }, + ], + }); + scopedClusterClient.callAsInternalUser.mockResolvedValueOnce({ + aggregations: { + '1': { doc_count: 6 }, + testPreconfigured: { doc_count: 2 }, + }, + }); + + await actionsClient.getAll(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_find', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to search connectors', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(actionsClient.getAll()).rejects.toThrow(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_find', + outcome: 'failure', + }), + error: { code: 'Error', message: 'Unauthorized' }, + }) + ); + }); + }); + test('calls unsecuredSavedObjectsClient with parameters', async () => { const expectedResult = { total: 1, @@ -773,6 +990,62 @@ describe('getBulk()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when bulk getting connectors', async () => { + unsecuredSavedObjectsClient.bulkGet.mockResolvedValueOnce({ + saved_objects: [ + { + id: '1', + type: 'action', + attributes: { + actionTypeId: 'test', + name: 'test', + config: { + foo: 'bar', + }, + }, + references: [], + }, + ], + }); + scopedClusterClient.callAsInternalUser.mockResolvedValueOnce({ + aggregations: { + '1': { doc_count: 6 }, + testPreconfigured: { doc_count: 2 }, + }, + }); + + await actionsClient.getBulk(['1']); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_get', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to bulk get connectors', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(actionsClient.getBulk(['1'])).rejects.toThrow(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_get', + outcome: 'failure', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + error: { code: 'Error', message: 'Unauthorized' }, + }) + ); + }); + }); + test('calls getBulk unsecuredSavedObjectsClient with parameters', async () => { unsecuredSavedObjectsClient.bulkGet.mockResolvedValueOnce({ saved_objects: [ @@ -864,6 +1137,39 @@ describe('delete()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when deleting a connector', async () => { + await actionsClient.delete({ id: '1' }); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_delete', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to delete a connector', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(actionsClient.delete({ id: '1' })).rejects.toThrow(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_delete', + outcome: 'failure', + }), + kibana: { saved_object: { id: '1', type: 'action' } }, + error: { code: 'Error', message: 'Unauthorized' }, + }) + ); + }); + }); + test('calls unsecuredSavedObjectsClient with id', async () => { const expectedResult = Symbol(); unsecuredSavedObjectsClient.delete.mockResolvedValueOnce(expectedResult); @@ -880,42 +1186,43 @@ describe('delete()', () => { }); describe('update()', () => { + function updateOperation(): ReturnType { + actionTypeRegistry.register({ + id: 'my-action-type', + name: 'My action type', + minimumLicenseRequired: 'basic', + executor, + }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'action', + attributes: { + actionTypeId: 'my-action-type', + }, + references: [], + }); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: 'my-action', + type: 'action', + attributes: { + actionTypeId: 'my-action-type', + name: 'my name', + config: {}, + secrets: {}, + }, + references: [], + }); + return actionsClient.update({ + id: 'my-action', + action: { + name: 'my name', + config: {}, + secrets: {}, + }, + }); + } + describe('authorization', () => { - function updateOperation(): ReturnType { - actionTypeRegistry.register({ - id: 'my-action-type', - name: 'My action type', - minimumLicenseRequired: 'basic', - executor, - }); - unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ - id: '1', - type: 'action', - attributes: { - actionTypeId: 'my-action-type', - }, - references: [], - }); - unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ - id: 'my-action', - type: 'action', - attributes: { - actionTypeId: 'my-action-type', - name: 'my name', - config: {}, - secrets: {}, - }, - references: [], - }); - return actionsClient.update({ - id: 'my-action', - action: { - name: 'my name', - config: {}, - secrets: {}, - }, - }); - } test('ensures user is authorised to update actions', async () => { await updateOperation(); expect(authorization.ensureAuthorized).toHaveBeenCalledWith('update'); @@ -934,6 +1241,39 @@ describe('update()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when updating a connector', async () => { + await updateOperation(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_update', + outcome: 'unknown', + }), + kibana: { saved_object: { id: 'my-action', type: 'action' } }, + }) + ); + }); + + test('logs audit event when not authorised to update a connector', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(updateOperation()).rejects.toThrow(); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'connector_update', + outcome: 'failure', + }), + kibana: { saved_object: { id: 'my-action', type: 'action' } }, + error: { code: 'Error', message: 'Unauthorized' }, + }) + ); + }); + }); + test('updates an action with all given properties', async () => { actionTypeRegistry.register({ id: 'my-action-type', diff --git a/x-pack/plugins/actions/server/actions_client.ts b/x-pack/plugins/actions/server/actions_client.ts index 0d41b520501add..ab693dc340c927 100644 --- a/x-pack/plugins/actions/server/actions_client.ts +++ b/x-pack/plugins/actions/server/actions_client.ts @@ -4,16 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ import Boom from '@hapi/boom'; + +import { i18n } from '@kbn/i18n'; +import { omitBy, isUndefined } from 'lodash'; import { ILegacyScopedClusterClient, SavedObjectsClientContract, SavedObjectAttributes, SavedObject, KibanaRequest, -} from 'src/core/server'; - -import { i18n } from '@kbn/i18n'; -import { omitBy, isUndefined } from 'lodash'; + SavedObjectsUtils, +} from '../../../../src/core/server'; +import { AuditLogger, EventOutcome } from '../../security/server'; +import { ActionType } from '../common'; import { ActionTypeRegistry } from './action_type_registry'; import { validateConfig, validateSecrets, ActionExecutorContract } from './lib'; import { @@ -30,11 +33,11 @@ import { ExecuteOptions as EnqueueExecutionOptions, } from './create_execute_function'; import { ActionsAuthorization } from './authorization/actions_authorization'; -import { ActionType } from '../common'; import { getAuthorizationModeBySource, AuthorizationMode, } from './authorization/get_authorization_mode_by_source'; +import { connectorAuditEvent, ConnectorAuditAction } from './lib/audit_events'; // We are assuming there won't be many actions. This is why we will load // all the actions in advance and assume the total count to not go over 10000. @@ -65,6 +68,7 @@ interface ConstructorOptions { executionEnqueuer: ExecutionEnqueuer; request: KibanaRequest; authorization: ActionsAuthorization; + auditLogger?: AuditLogger; } interface UpdateOptions { @@ -82,6 +86,7 @@ export class ActionsClient { private readonly request: KibanaRequest; private readonly authorization: ActionsAuthorization; private readonly executionEnqueuer: ExecutionEnqueuer; + private readonly auditLogger?: AuditLogger; constructor({ actionTypeRegistry, @@ -93,6 +98,7 @@ export class ActionsClient { executionEnqueuer, request, authorization, + auditLogger, }: ConstructorOptions) { this.actionTypeRegistry = actionTypeRegistry; this.unsecuredSavedObjectsClient = unsecuredSavedObjectsClient; @@ -103,6 +109,7 @@ export class ActionsClient { this.executionEnqueuer = executionEnqueuer; this.request = request; this.authorization = authorization; + this.auditLogger = auditLogger; } /** @@ -111,7 +118,20 @@ export class ActionsClient { public async create({ action: { actionTypeId, name, config, secrets }, }: CreateOptions): Promise { - await this.authorization.ensureAuthorized('create', actionTypeId); + const id = SavedObjectsUtils.generateId(); + + try { + await this.authorization.ensureAuthorized('create', actionTypeId); + } catch (error) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.CREATE, + savedObject: { type: 'action', id }, + error, + }) + ); + throw error; + } const actionType = this.actionTypeRegistry.get(actionTypeId); const validatedActionTypeConfig = validateConfig(actionType, config); @@ -119,12 +139,24 @@ export class ActionsClient { this.actionTypeRegistry.ensureActionTypeEnabled(actionTypeId); - const result = await this.unsecuredSavedObjectsClient.create('action', { - actionTypeId, - name, - config: validatedActionTypeConfig as SavedObjectAttributes, - secrets: validatedActionTypeSecrets as SavedObjectAttributes, - }); + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.CREATE, + savedObject: { type: 'action', id }, + outcome: EventOutcome.UNKNOWN, + }) + ); + + const result = await this.unsecuredSavedObjectsClient.create( + 'action', + { + actionTypeId, + name, + config: validatedActionTypeConfig as SavedObjectAttributes, + secrets: validatedActionTypeSecrets as SavedObjectAttributes, + }, + { id } + ); return { id: result.id, @@ -139,21 +171,32 @@ export class ActionsClient { * Update action */ public async update({ id, action }: UpdateOptions): Promise { - await this.authorization.ensureAuthorized('update'); - - if ( - this.preconfiguredActions.find((preconfiguredAction) => preconfiguredAction.id === id) !== - undefined - ) { - throw new PreconfiguredActionDisabledModificationError( - i18n.translate('xpack.actions.serverSideErrors.predefinedActionUpdateDisabled', { - defaultMessage: 'Preconfigured action {id} is not allowed to update.', - values: { - id, - }, - }), - 'update' + try { + await this.authorization.ensureAuthorized('update'); + + if ( + this.preconfiguredActions.find((preconfiguredAction) => preconfiguredAction.id === id) !== + undefined + ) { + throw new PreconfiguredActionDisabledModificationError( + i18n.translate('xpack.actions.serverSideErrors.predefinedActionUpdateDisabled', { + defaultMessage: 'Preconfigured action {id} is not allowed to update.', + values: { + id, + }, + }), + 'update' + ); + } + } catch (error) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.UPDATE, + savedObject: { type: 'action', id }, + error, + }) ); + throw error; } const { attributes, @@ -168,6 +211,14 @@ export class ActionsClient { this.actionTypeRegistry.ensureActionTypeEnabled(actionTypeId); + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.UPDATE, + savedObject: { type: 'action', id }, + outcome: EventOutcome.UNKNOWN, + }) + ); + const result = await this.unsecuredSavedObjectsClient.create( 'action', { @@ -201,12 +252,30 @@ export class ActionsClient { * Get an action */ public async get({ id }: { id: string }): Promise { - await this.authorization.ensureAuthorized('get'); + try { + await this.authorization.ensureAuthorized('get'); + } catch (error) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.GET, + savedObject: { type: 'action', id }, + error, + }) + ); + throw error; + } const preconfiguredActionsList = this.preconfiguredActions.find( (preconfiguredAction) => preconfiguredAction.id === id ); if (preconfiguredActionsList !== undefined) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.GET, + savedObject: { type: 'action', id }, + }) + ); + return { id, actionTypeId: preconfiguredActionsList.actionTypeId, @@ -214,8 +283,16 @@ export class ActionsClient { isPreconfigured: true, }; } + const result = await this.unsecuredSavedObjectsClient.get('action', id); + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.GET, + savedObject: { type: 'action', id }, + }) + ); + return { id, actionTypeId: result.attributes.actionTypeId, @@ -229,7 +306,17 @@ export class ActionsClient { * Get all actions with preconfigured list */ public async getAll(): Promise { - await this.authorization.ensureAuthorized('get'); + try { + await this.authorization.ensureAuthorized('get'); + } catch (error) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.FIND, + error, + }) + ); + throw error; + } const savedObjectsActions = ( await this.unsecuredSavedObjectsClient.find({ @@ -238,6 +325,15 @@ export class ActionsClient { }) ).saved_objects.map(actionFromSavedObject); + savedObjectsActions.forEach(({ id }) => + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.FIND, + savedObject: { type: 'action', id }, + }) + ) + ); + const mergedResult = [ ...savedObjectsActions, ...this.preconfiguredActions.map((preconfiguredAction) => ({ @@ -258,7 +354,20 @@ export class ActionsClient { * Get bulk actions with preconfigured list */ public async getBulk(ids: string[]): Promise { - await this.authorization.ensureAuthorized('get'); + try { + await this.authorization.ensureAuthorized('get'); + } catch (error) { + ids.forEach((id) => + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.GET, + savedObject: { type: 'action', id }, + error, + }) + ) + ); + throw error; + } const actionResults = new Array(); for (const actionId of ids) { @@ -283,6 +392,17 @@ export class ActionsClient { const bulkGetOpts = actionSavedObjectsIds.map((id) => ({ id, type: 'action' })); const bulkGetResult = await this.unsecuredSavedObjectsClient.bulkGet(bulkGetOpts); + bulkGetResult.saved_objects.forEach(({ id, error }) => { + if (!error && this.auditLogger) { + this.auditLogger.log( + connectorAuditEvent({ + action: ConnectorAuditAction.GET, + savedObject: { type: 'action', id }, + }) + ); + } + }); + for (const action of bulkGetResult.saved_objects) { if (action.error) { throw Boom.badRequest( @@ -298,22 +418,42 @@ export class ActionsClient { * Delete action */ public async delete({ id }: { id: string }) { - await this.authorization.ensureAuthorized('delete'); - - if ( - this.preconfiguredActions.find((preconfiguredAction) => preconfiguredAction.id === id) !== - undefined - ) { - throw new PreconfiguredActionDisabledModificationError( - i18n.translate('xpack.actions.serverSideErrors.predefinedActionDeleteDisabled', { - defaultMessage: 'Preconfigured action {id} is not allowed to delete.', - values: { - id, - }, - }), - 'delete' + try { + await this.authorization.ensureAuthorized('delete'); + + if ( + this.preconfiguredActions.find((preconfiguredAction) => preconfiguredAction.id === id) !== + undefined + ) { + throw new PreconfiguredActionDisabledModificationError( + i18n.translate('xpack.actions.serverSideErrors.predefinedActionDeleteDisabled', { + defaultMessage: 'Preconfigured action {id} is not allowed to delete.', + values: { + id, + }, + }), + 'delete' + ); + } + } catch (error) { + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.DELETE, + savedObject: { type: 'action', id }, + error, + }) ); + throw error; } + + this.auditLogger?.log( + connectorAuditEvent({ + action: ConnectorAuditAction.DELETE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'action', id }, + }) + ); + return await this.unsecuredSavedObjectsClient.delete('action', id); } diff --git a/x-pack/plugins/actions/server/lib/action_executor.test.ts b/x-pack/plugins/actions/server/lib/action_executor.test.ts index 57b88d3e6c1d83..476ca467a98b9a 100644 --- a/x-pack/plugins/actions/server/lib/action_executor.test.ts +++ b/x-pack/plugins/actions/server/lib/action_executor.test.ts @@ -105,6 +105,8 @@ test('successfully executes', async () => { }, params: { foo: true }, }); + + expect(loggerMock.debug).toBeCalledWith('executing action test:1: 1'); }); test('provides empty config when config and / or secrets is empty', async () => { diff --git a/x-pack/plugins/actions/server/lib/action_executor.ts b/x-pack/plugins/actions/server/lib/action_executor.ts index d050bab9b0d9ff..695613a59eff15 100644 --- a/x-pack/plugins/actions/server/lib/action_executor.ts +++ b/x-pack/plugins/actions/server/lib/action_executor.ts @@ -120,6 +120,8 @@ export class ActionExecutor { } const actionLabel = `${actionTypeId}:${actionId}: ${name}`; + logger.debug(`executing action ${actionLabel}`); + const event: IEvent = { event: { action: EVENT_LOG_ACTIONS.execute }, kibana: { diff --git a/x-pack/plugins/actions/server/lib/audit_events.test.ts b/x-pack/plugins/actions/server/lib/audit_events.test.ts new file mode 100644 index 00000000000000..6c2fd99c2eafdb --- /dev/null +++ b/x-pack/plugins/actions/server/lib/audit_events.test.ts @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EventOutcome } from '../../../security/server/audit'; +import { ConnectorAuditAction, connectorAuditEvent } from './audit_events'; + +describe('#connectorAuditEvent', () => { + test('creates event with `unknown` outcome', () => { + expect( + connectorAuditEvent({ + action: ConnectorAuditAction.CREATE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'action', id: 'ACTION_ID' }, + }) + ).toMatchInlineSnapshot(` + Object { + "error": undefined, + "event": Object { + "action": "connector_create", + "category": "database", + "outcome": "unknown", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ACTION_ID", + "type": "action", + }, + }, + "message": "User is creating connector [id=ACTION_ID]", + } + `); + }); + + test('creates event with `success` outcome', () => { + expect( + connectorAuditEvent({ + action: ConnectorAuditAction.CREATE, + savedObject: { type: 'action', id: 'ACTION_ID' }, + }) + ).toMatchInlineSnapshot(` + Object { + "error": undefined, + "event": Object { + "action": "connector_create", + "category": "database", + "outcome": "success", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ACTION_ID", + "type": "action", + }, + }, + "message": "User has created connector [id=ACTION_ID]", + } + `); + }); + + test('creates event with `failure` outcome', () => { + expect( + connectorAuditEvent({ + action: ConnectorAuditAction.CREATE, + savedObject: { type: 'action', id: 'ACTION_ID' }, + error: new Error('ERROR_MESSAGE'), + }) + ).toMatchInlineSnapshot(` + Object { + "error": Object { + "code": "Error", + "message": "ERROR_MESSAGE", + }, + "event": Object { + "action": "connector_create", + "category": "database", + "outcome": "failure", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ACTION_ID", + "type": "action", + }, + }, + "message": "Failed attempt to create connector [id=ACTION_ID]", + } + `); + }); +}); diff --git a/x-pack/plugins/actions/server/lib/audit_events.ts b/x-pack/plugins/actions/server/lib/audit_events.ts new file mode 100644 index 00000000000000..7d25b5c0cd479a --- /dev/null +++ b/x-pack/plugins/actions/server/lib/audit_events.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AuditEvent, EventOutcome, EventCategory, EventType } from '../../../security/server'; + +export enum ConnectorAuditAction { + CREATE = 'connector_create', + GET = 'connector_get', + UPDATE = 'connector_update', + DELETE = 'connector_delete', + FIND = 'connector_find', + EXECUTE = 'connector_execute', +} + +type VerbsTuple = [string, string, string]; + +const eventVerbs: Record = { + connector_create: ['create', 'creating', 'created'], + connector_get: ['access', 'accessing', 'accessed'], + connector_update: ['update', 'updating', 'updated'], + connector_delete: ['delete', 'deleting', 'deleted'], + connector_find: ['access', 'accessing', 'accessed'], + connector_execute: ['execute', 'executing', 'executed'], +}; + +const eventTypes: Record = { + connector_create: EventType.CREATION, + connector_get: EventType.ACCESS, + connector_update: EventType.CHANGE, + connector_delete: EventType.DELETION, + connector_find: EventType.ACCESS, + connector_execute: undefined, +}; + +export interface ConnectorAuditEventParams { + action: ConnectorAuditAction; + outcome?: EventOutcome; + savedObject?: NonNullable['saved_object']; + error?: Error; +} + +export function connectorAuditEvent({ + action, + savedObject, + outcome, + error, +}: ConnectorAuditEventParams): AuditEvent { + const doc = savedObject ? `connector [id=${savedObject.id}]` : 'a connector'; + const [present, progressive, past] = eventVerbs[action]; + const message = error + ? `Failed attempt to ${present} ${doc}` + : outcome === EventOutcome.UNKNOWN + ? `User is ${progressive} ${doc}` + : `User has ${past} ${doc}`; + const type = eventTypes[action]; + + return { + message, + event: { + action, + category: EventCategory.DATABASE, + type, + outcome: outcome ?? (error ? EventOutcome.FAILURE : EventOutcome.SUCCESS), + }, + kibana: { + saved_object: savedObject, + }, + error: error && { + code: error.name, + message: error.message, + }, + }; +} diff --git a/x-pack/plugins/actions/server/plugin.ts b/x-pack/plugins/actions/server/plugin.ts index e61936321b8e0a..6e37d4bd7a92aa 100644 --- a/x-pack/plugins/actions/server/plugin.ts +++ b/x-pack/plugins/actions/server/plugin.ts @@ -314,6 +314,7 @@ export class ActionsPlugin implements Plugin, Plugi isESOUsingEphemeralEncryptionKey: isESOUsingEphemeralEncryptionKey!, preconfiguredActions, }), + auditLogger: this.security?.audit.asScoped(request), }); }; @@ -439,6 +440,7 @@ export class ActionsPlugin implements Plugin, Plugi preconfiguredActions, actionExecutor, instantiateAuthorization, + security, } = this; return async function actionsRouteHandlerContext(context, request) { @@ -468,6 +470,7 @@ export class ActionsPlugin implements Plugin, Plugi isESOUsingEphemeralEncryptionKey: isESOUsingEphemeralEncryptionKey!, preconfiguredActions, }), + auditLogger: security?.audit.asScoped(request), }); }, listTypes: actionTypeRegistry!.list.bind(actionTypeRegistry!), diff --git a/x-pack/plugins/alerting_builtins/jest.config.js b/x-pack/plugins/alerting_builtins/jest.config.js new file mode 100644 index 00000000000000..05fe793a157df2 --- /dev/null +++ b/x-pack/plugins/alerting_builtins/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/alerting_builtins'], +}; diff --git a/x-pack/plugins/alerts/README.md b/x-pack/plugins/alerts/README.md index 62058d47cbd441..519c50e3f27c08 100644 --- a/x-pack/plugins/alerts/README.md +++ b/x-pack/plugins/alerts/README.md @@ -91,6 +91,7 @@ The following table describes the properties of the `options` object. |name|A user-friendly name for the alert type. These will be displayed in dropdowns when choosing alert types.|string| |actionGroups|An explicit list of groups the alert type may schedule actions for, each specifying the ActionGroup's unique ID and human readable name. Alert `actions` validation will use this configuartion to ensure groups are valid. We highly encourage using `kbn-i18n` to translate the names of actionGroup when registering the AlertType. |Array<{id:string, name:string}>| |defaultActionGroupId|Default ID value for the group of the alert type.|string| +|recoveryActionGroup|An action group to use when an alert instance goes from an active state, to an inactive one. This action group should not be specified under the `actionGroups` property. If no recoveryActionGroup is specified, the default `recovered` action group will be used. |{id:string, name:string}| |actionVariables|An explicit list of action variables the alert type makes available via context and state in action parameter templates, and a short human readable description. Alert UI will use this to display prompts for the users for these variables, in action parameter editors. We highly encourage using `kbn-i18n` to translate the descriptions. |{ context: Array<{name:string, description:string}, state: Array<{name:string, description:string}>| |validate.params|When developing an alert type, you can choose to accept a series of parameters. You may also have the parameters validated before they are passed to the `executor` function or created as an alert saved object. In order to do this, provide a `@kbn/config-schema` schema that we will use to validate the `params` attribute.|@kbn/config-schema| |executor|This is where the code of the alert type lives. This is a function to be called when executing an alert on an interval basis. For full details, see executor section below.|Function| @@ -660,16 +661,16 @@ Below is an example of an alert that takes advantage of templating: ``` { ... - id: "123", - name: "cpu alert", - actions: [ + "id": "123", + "name": "cpu alert", + "actions": [ { "group": "default", "id": "3c5b2bd4-5424-4e4b-8cf5-c0a58c762cc5", "params": { "from": "example@elastic.co", "to": ["destination@elastic.co"], - "subject": "A notification about {{context.server}}" + "subject": "A notification about {{context.server}}", "body": "The server {{context.server}} has a CPU usage of {{state.cpuUsage}}%. This message for {{alertInstanceId}} was created by the alert {{alertId}} {{alertName}}." } } diff --git a/x-pack/plugins/alerts/common/alert_type.ts b/x-pack/plugins/alerts/common/alert_type.ts index f07555c3340740..a06c6d2fd5af24 100644 --- a/x-pack/plugins/alerts/common/alert_type.ts +++ b/x-pack/plugins/alerts/common/alert_type.ts @@ -8,6 +8,7 @@ export interface AlertType { id: string; name: string; actionGroups: ActionGroup[]; + recoveryActionGroup: ActionGroup; actionVariables: string[]; defaultActionGroupId: ActionGroup['id']; producer: string; diff --git a/x-pack/plugins/alerts/common/builtin_action_groups.ts b/x-pack/plugins/alerts/common/builtin_action_groups.ts index d31f75357d370d..e23bbcc54b24dd 100644 --- a/x-pack/plugins/alerts/common/builtin_action_groups.ts +++ b/x-pack/plugins/alerts/common/builtin_action_groups.ts @@ -6,13 +6,13 @@ import { i18n } from '@kbn/i18n'; import { ActionGroup } from './alert_type'; -export const ResolvedActionGroup: ActionGroup = { - id: 'resolved', - name: i18n.translate('xpack.alerts.builtinActionGroups.resolved', { - defaultMessage: 'Resolved', +export const RecoveredActionGroup: Readonly = { + id: 'recovered', + name: i18n.translate('xpack.alerts.builtinActionGroups.recovered', { + defaultMessage: 'Recovered', }), }; -export function getBuiltinActionGroups(): ActionGroup[] { - return [ResolvedActionGroup]; +export function getBuiltinActionGroups(customRecoveryGroup?: ActionGroup): ActionGroup[] { + return [customRecoveryGroup ?? Object.freeze(RecoveredActionGroup)]; } diff --git a/x-pack/plugins/alerts/jest.config.js b/x-pack/plugins/alerts/jest.config.js new file mode 100644 index 00000000000000..d5c9ce5bbf4c2b --- /dev/null +++ b/x-pack/plugins/alerts/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/alerts'], +}; diff --git a/x-pack/plugins/alerts/public/alert_api.test.ts b/x-pack/plugins/alerts/public/alert_api.test.ts index 3ee67b79b7bda7..03c55dfdf5b28b 100644 --- a/x-pack/plugins/alerts/public/alert_api.test.ts +++ b/x-pack/plugins/alerts/public/alert_api.test.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { AlertType } from '../common'; +import { AlertType, RecoveredActionGroup } from '../common'; import { httpServiceMock } from '../../../../src/core/public/mocks'; -import { loadAlert, loadAlertState, loadAlertType, loadAlertTypes } from './alert_api'; +import { loadAlert, loadAlertType, loadAlertTypes } from './alert_api'; import uuid from 'uuid'; const http = httpServiceMock.createStartContract(); @@ -22,6 +22,7 @@ describe('loadAlertTypes', () => { actionVariables: ['var1'], actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', }, ]; @@ -45,6 +46,7 @@ describe('loadAlertType', () => { actionVariables: ['var1'], actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', }; http.get.mockResolvedValueOnce([alertType]); @@ -65,6 +67,7 @@ describe('loadAlertType', () => { actionVariables: [], actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', }; http.get.mockResolvedValueOnce([alertType]); @@ -80,6 +83,7 @@ describe('loadAlertType', () => { actionVariables: [], actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', }, ]); @@ -114,67 +118,3 @@ describe('loadAlert', () => { expect(http.get).toHaveBeenCalledWith(`/api/alerts/alert/${alertId}`); }); }); - -describe('loadAlertState', () => { - test('should call get API with base parameters', async () => { - const alertId = uuid.v4(); - const resolvedValue = { - alertTypeState: { - some: 'value', - }, - alertInstances: { - first_instance: {}, - second_instance: {}, - }, - }; - http.get.mockResolvedValueOnce(resolvedValue); - - expect(await loadAlertState({ http, alertId })).toEqual(resolvedValue); - expect(http.get).toHaveBeenCalledWith(`/api/alerts/alert/${alertId}/state`); - }); - - test('should parse AlertInstances', async () => { - const alertId = uuid.v4(); - const resolvedValue = { - alertTypeState: { - some: 'value', - }, - alertInstances: { - first_instance: { - state: {}, - meta: { - lastScheduledActions: { - group: 'first_group', - date: '2020-02-09T23:15:41.941Z', - }, - }, - }, - }, - }; - http.get.mockResolvedValueOnce(resolvedValue); - - expect(await loadAlertState({ http, alertId })).toEqual({ - ...resolvedValue, - alertInstances: { - first_instance: { - state: {}, - meta: { - lastScheduledActions: { - group: 'first_group', - date: new Date('2020-02-09T23:15:41.941Z'), - }, - }, - }, - }, - }); - expect(http.get).toHaveBeenCalledWith(`/api/alerts/alert/${alertId}/state`); - }); - - test('should handle empty response from api', async () => { - const alertId = uuid.v4(); - http.get.mockResolvedValueOnce(''); - - expect(await loadAlertState({ http, alertId })).toEqual({}); - expect(http.get).toHaveBeenCalledWith(`/api/alerts/alert/${alertId}/state`); - }); -}); diff --git a/x-pack/plugins/alerts/public/alert_api.ts b/x-pack/plugins/alerts/public/alert_api.ts index 5b7cd2128f3868..753158ed1ed424 100644 --- a/x-pack/plugins/alerts/public/alert_api.ts +++ b/x-pack/plugins/alerts/public/alert_api.ts @@ -5,15 +5,9 @@ */ import { HttpSetup } from 'kibana/public'; -import * as t from 'io-ts'; -import { pipe } from 'fp-ts/lib/pipeable'; -import { fold } from 'fp-ts/lib/Either'; -import { findFirst } from 'fp-ts/lib/Array'; -import { isNone } from 'fp-ts/lib/Option'; - import { i18n } from '@kbn/i18n'; -import { BASE_ALERT_API_PATH, alertStateSchema } from '../common'; -import { Alert, AlertType, AlertTaskState } from '../common'; +import { BASE_ALERT_API_PATH } from '../common'; +import type { Alert, AlertType } from '../common'; export async function loadAlertTypes({ http }: { http: HttpSetup }): Promise { return await http.get(`${BASE_ALERT_API_PATH}/list_alert_types`); @@ -26,10 +20,10 @@ export async function loadAlertType({ http: HttpSetup; id: AlertType['id']; }): Promise { - const maybeAlertType = findFirst((type) => type.id === id)( - await http.get(`${BASE_ALERT_API_PATH}/list_alert_types`) - ); - if (isNone(maybeAlertType)) { + const maybeAlertType = ((await http.get( + `${BASE_ALERT_API_PATH}/list_alert_types` + )) as AlertType[]).find((type) => type.id === id); + if (!maybeAlertType) { throw new Error( i18n.translate('xpack.alerts.loadAlertType.missingAlertTypeError', { defaultMessage: 'Alert type "{id}" is not registered.', @@ -39,7 +33,7 @@ export async function loadAlertType({ }) ); } - return maybeAlertType.value; + return maybeAlertType; } export async function loadAlert({ @@ -51,24 +45,3 @@ export async function loadAlert({ }): Promise { return await http.get(`${BASE_ALERT_API_PATH}/alert/${alertId}`); } - -type EmptyHttpResponse = ''; -export async function loadAlertState({ - http, - alertId, -}: { - http: HttpSetup; - alertId: string; -}): Promise { - return await http - .get(`${BASE_ALERT_API_PATH}/alert/${alertId}/state`) - .then((state: AlertTaskState | EmptyHttpResponse) => (state ? state : {})) - .then((state: AlertTaskState) => { - return pipe( - alertStateSchema.decode(state), - fold((e: t.Errors) => { - throw new Error(`Alert "${alertId}" has invalid state`); - }, t.identity) - ); - }); -} diff --git a/x-pack/plugins/alerts/public/alert_navigation_registry/alert_navigation_registry.test.ts b/x-pack/plugins/alerts/public/alert_navigation_registry/alert_navigation_registry.test.ts index 72c955923a0cc7..bf005e07f959e3 100644 --- a/x-pack/plugins/alerts/public/alert_navigation_registry/alert_navigation_registry.test.ts +++ b/x-pack/plugins/alerts/public/alert_navigation_registry/alert_navigation_registry.test.ts @@ -5,7 +5,7 @@ */ import { AlertNavigationRegistry } from './alert_navigation_registry'; -import { AlertType, SanitizedAlert } from '../../common'; +import { AlertType, RecoveredActionGroup, SanitizedAlert } from '../../common'; import uuid from 'uuid'; beforeEach(() => jest.resetAllMocks()); @@ -14,6 +14,7 @@ const mockAlertType = (id: string): AlertType => ({ id, name: id, actionGroups: [], + recoveryActionGroup: RecoveredActionGroup, actionVariables: [], defaultActionGroupId: 'default', producer: 'alerts', diff --git a/x-pack/plugins/alerts/server/alert_type_registry.test.ts b/x-pack/plugins/alerts/server/alert_type_registry.test.ts index 8dc387f96addba..e4811daa3611b9 100644 --- a/x-pack/plugins/alerts/server/alert_type_registry.test.ts +++ b/x-pack/plugins/alerts/server/alert_type_registry.test.ts @@ -105,8 +105,8 @@ describe('register()', () => { name: 'Default', }, { - id: 'resolved', - name: 'Resolved', + id: 'recovered', + name: 'Recovered', }, ], defaultActionGroupId: 'default', @@ -117,7 +117,72 @@ describe('register()', () => { expect(() => registry.register(alertType)).toThrowError( new Error( - `Alert type [id="${alertType.id}"] cannot be registered. Action groups [resolved] are reserved by the framework.` + `Alert type [id="${alertType.id}"] cannot be registered. Action groups [recovered] are reserved by the framework.` + ) + ); + }); + + test('allows an AlertType to specify a custom recovery group', () => { + const alertType = { + id: 'test', + name: 'Test', + actionGroups: [ + { + id: 'default', + name: 'Default', + }, + ], + defaultActionGroupId: 'default', + recoveryActionGroup: { + id: 'backToAwesome', + name: 'Back To Awesome', + }, + executor: jest.fn(), + producer: 'alerts', + }; + const registry = new AlertTypeRegistry(alertTypeRegistryParams); + registry.register(alertType); + expect(registry.get('test').actionGroups).toMatchInlineSnapshot(` + Array [ + Object { + "id": "default", + "name": "Default", + }, + Object { + "id": "backToAwesome", + "name": "Back To Awesome", + }, + ] + `); + }); + + test('throws if the custom recovery group is contained in the AlertType action groups', () => { + const alertType = { + id: 'test', + name: 'Test', + actionGroups: [ + { + id: 'default', + name: 'Default', + }, + { + id: 'backToAwesome', + name: 'Back To Awesome', + }, + ], + recoveryActionGroup: { + id: 'backToAwesome', + name: 'Back To Awesome', + }, + defaultActionGroupId: 'default', + executor: jest.fn(), + producer: 'alerts', + }; + const registry = new AlertTypeRegistry(alertTypeRegistryParams); + + expect(() => registry.register(alertType)).toThrowError( + new Error( + `Alert type [id="${alertType.id}"] cannot be registered. Action group [backToAwesome] cannot be used as both a recovery and an active action group.` ) ); }); @@ -229,8 +294,8 @@ describe('get()', () => { "name": "Default", }, Object { - "id": "resolved", - "name": "Resolved", + "id": "recovered", + "name": "Recovered", }, ], "actionVariables": Object { @@ -243,6 +308,10 @@ describe('get()', () => { "id": "test", "name": "Test", "producer": "alerts", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, } `); }); @@ -287,8 +356,8 @@ describe('list()', () => { "name": "Test Action Group", }, Object { - "id": "resolved", - "name": "Resolved", + "id": "recovered", + "name": "Recovered", }, ], "actionVariables": Object { @@ -300,6 +369,10 @@ describe('list()', () => { "id": "test", "name": "Test", "producer": "alerts", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); diff --git a/x-pack/plugins/alerts/server/alert_type_registry.ts b/x-pack/plugins/alerts/server/alert_type_registry.ts index 8fe2ab06acd9ae..a3e80fbd6c11a4 100644 --- a/x-pack/plugins/alerts/server/alert_type_registry.ts +++ b/x-pack/plugins/alerts/server/alert_type_registry.ts @@ -9,7 +9,6 @@ import { i18n } from '@kbn/i18n'; import { schema } from '@kbn/config-schema'; import typeDetect from 'type-detect'; import { intersection } from 'lodash'; -import _ from 'lodash'; import { RunContext, TaskManagerSetupContract } from '../../task_manager/server'; import { TaskRunnerFactory } from './task_runner'; import { @@ -18,9 +17,8 @@ import { AlertTypeState, AlertInstanceState, AlertInstanceContext, - ActionGroup, } from './types'; -import { getBuiltinActionGroups } from '../common'; +import { RecoveredActionGroup, getBuiltinActionGroups } from '../common'; interface ConstructorOptions { taskManager: TaskManagerSetupContract; @@ -29,8 +27,13 @@ interface ConstructorOptions { export interface RegistryAlertType extends Pick< - AlertType, - 'name' | 'actionGroups' | 'defaultActionGroupId' | 'actionVariables' | 'producer' + NormalizedAlertType, + | 'name' + | 'actionGroups' + | 'recoveryActionGroup' + | 'defaultActionGroupId' + | 'actionVariables' + | 'producer' > { id: string; } @@ -55,9 +58,17 @@ const alertIdSchema = schema.string({ }, }); +export type NormalizedAlertType< + Params extends AlertTypeParams = AlertTypeParams, + State extends AlertTypeState = AlertTypeState, + InstanceState extends AlertInstanceState = AlertInstanceState, + InstanceContext extends AlertInstanceContext = AlertInstanceContext +> = Omit, 'recoveryActionGroup'> & + Pick>, 'recoveryActionGroup'>; + export class AlertTypeRegistry { private readonly taskManager: TaskManagerSetupContract; - private readonly alertTypes: Map = new Map(); + private readonly alertTypes: Map = new Map(); private readonly taskRunnerFactory: TaskRunnerFactory; constructor({ taskManager, taskRunnerFactory }: ConstructorOptions) { @@ -86,14 +97,15 @@ export class AlertTypeRegistry { ); } alertType.actionVariables = normalizedActionVariables(alertType.actionVariables); - validateActionGroups(alertType.id, alertType.actionGroups); - alertType.actionGroups = [...alertType.actionGroups, ..._.cloneDeep(getBuiltinActionGroups())]; - this.alertTypes.set(alertIdSchema.validate(alertType.id), { ...alertType } as AlertType); + + const normalizedAlertType = augmentActionGroupsWithReserved(alertType as AlertType); + + this.alertTypes.set(alertIdSchema.validate(alertType.id), normalizedAlertType); this.taskManager.registerTaskDefinitions({ [`alerting:${alertType.id}`]: { title: alertType.name, createTaskRunner: (context: RunContext) => - this.taskRunnerFactory.create({ ...alertType } as AlertType, context), + this.taskRunnerFactory.create(normalizedAlertType, context), }, }); } @@ -103,7 +115,7 @@ export class AlertTypeRegistry { State extends AlertTypeState = AlertTypeState, InstanceState extends AlertInstanceState = AlertInstanceState, InstanceContext extends AlertInstanceContext = AlertInstanceContext - >(id: string): AlertType { + >(id: string): NormalizedAlertType { if (!this.has(id)) { throw Boom.badRequest( i18n.translate('xpack.alerts.alertTypeRegistry.get.missingAlertTypeError', { @@ -114,19 +126,32 @@ export class AlertTypeRegistry { }) ); } - return this.alertTypes.get(id)! as AlertType; + return this.alertTypes.get(id)! as NormalizedAlertType< + Params, + State, + InstanceState, + InstanceContext + >; } public list(): Set { return new Set( Array.from(this.alertTypes).map( - ([id, { name, actionGroups, defaultActionGroupId, actionVariables, producer }]: [ - string, - AlertType - ]) => ({ + ([ + id, + { + name, + actionGroups, + recoveryActionGroup, + defaultActionGroupId, + actionVariables, + producer, + }, + ]: [string, NormalizedAlertType]) => ({ id, name, actionGroups, + recoveryActionGroup, defaultActionGroupId, actionVariables, producer, @@ -144,21 +169,52 @@ function normalizedActionVariables(actionVariables: AlertType['actionVariables'] }; } -function validateActionGroups(alertTypeId: string, actionGroups: ActionGroup[]) { - const reservedActionGroups = intersection( - actionGroups.map((item) => item.id), - getBuiltinActionGroups().map((item) => item.id) +function augmentActionGroupsWithReserved< + Params extends AlertTypeParams, + State extends AlertTypeState, + InstanceState extends AlertInstanceState, + InstanceContext extends AlertInstanceContext +>( + alertType: AlertType +): NormalizedAlertType { + const reservedActionGroups = getBuiltinActionGroups(alertType.recoveryActionGroup); + const { id, actionGroups, recoveryActionGroup } = alertType; + + const activeActionGroups = new Set(actionGroups.map((item) => item.id)); + const intersectingReservedActionGroups = intersection( + [...activeActionGroups.values()], + reservedActionGroups.map((item) => item.id) ); - if (reservedActionGroups.length > 0) { + if (recoveryActionGroup && activeActionGroups.has(recoveryActionGroup.id)) { + throw new Error( + i18n.translate( + 'xpack.alerts.alertTypeRegistry.register.customRecoveryActionGroupUsageError', + { + defaultMessage: + 'Alert type [id="{id}"] cannot be registered. Action group [{actionGroup}] cannot be used as both a recovery and an active action group.', + values: { + actionGroup: recoveryActionGroup.id, + id, + }, + } + ) + ); + } else if (intersectingReservedActionGroups.length > 0) { throw new Error( i18n.translate('xpack.alerts.alertTypeRegistry.register.reservedActionGroupUsageError', { defaultMessage: - 'Alert type [id="{alertTypeId}"] cannot be registered. Action groups [{actionGroups}] are reserved by the framework.', + 'Alert type [id="{id}"] cannot be registered. Action groups [{actionGroups}] are reserved by the framework.', values: { - actionGroups: reservedActionGroups.join(', '), - alertTypeId, + actionGroups: intersectingReservedActionGroups.join(', '), + id, }, }) ); } + + return { + ...alertType, + actionGroups: [...actionGroups, ...reservedActionGroups], + recoveryActionGroup: recoveryActionGroup ?? RecoveredActionGroup, + }; } diff --git a/x-pack/plugins/alerts/server/alerts_client/alerts_client.ts b/x-pack/plugins/alerts/server/alerts_client/alerts_client.ts index c83e24c5a45f4f..d697817be734b7 100644 --- a/x-pack/plugins/alerts/server/alerts_client/alerts_client.ts +++ b/x-pack/plugins/alerts/server/alerts_client/alerts_client.ts @@ -13,7 +13,8 @@ import { SavedObjectReference, SavedObject, PluginInitializerContext, -} from 'src/core/server'; + SavedObjectsUtils, +} from '../../../../../src/core/server'; import { esKuery } from '../../../../../src/plugins/data/server'; import { ActionsClient, ActionsAuthorization } from '../../../actions/server'; import { @@ -44,10 +45,12 @@ import { IEventLogClient } from '../../../../plugins/event_log/server'; import { parseIsoOrRelativeDate } from '../lib/iso_or_relative_date'; import { alertInstanceSummaryFromEventLog } from '../lib/alert_instance_summary_from_event_log'; import { IEvent } from '../../../event_log/server'; +import { AuditLogger, EventOutcome } from '../../../security/server'; import { parseDuration } from '../../common/parse_duration'; import { retryIfConflicts } from '../lib/retry_if_conflicts'; import { partiallyUpdateAlert } from '../saved_objects'; import { markApiKeyForInvalidation } from '../invalidate_pending_api_keys/mark_api_key_for_invalidation'; +import { alertAuditEvent, AlertAuditAction } from './audit_events'; export interface RegistryAlertTypeWithAuth extends RegistryAlertType { authorizedConsumers: string[]; @@ -75,6 +78,7 @@ export interface ConstructorOptions { getActionsClient: () => Promise; getEventLogClient: () => Promise; kibanaVersion: PluginInitializerContext['env']['packageInfo']['version']; + auditLogger?: AuditLogger; } export interface MuteOptions extends IndexType { @@ -176,6 +180,7 @@ export class AlertsClient { private readonly getEventLogClient: () => Promise; private readonly encryptedSavedObjectsClient: EncryptedSavedObjectsClient; private readonly kibanaVersion!: PluginInitializerContext['env']['packageInfo']['version']; + private readonly auditLogger?: AuditLogger; constructor({ alertTypeRegistry, @@ -192,6 +197,7 @@ export class AlertsClient { actionsAuthorization, getEventLogClient, kibanaVersion, + auditLogger, }: ConstructorOptions) { this.logger = logger; this.getUserName = getUserName; @@ -207,14 +213,28 @@ export class AlertsClient { this.actionsAuthorization = actionsAuthorization; this.getEventLogClient = getEventLogClient; this.kibanaVersion = kibanaVersion; + this.auditLogger = auditLogger; } public async create({ data, options }: CreateOptions): Promise { - await this.authorization.ensureAuthorized( - data.alertTypeId, - data.consumer, - WriteOperations.Create - ); + const id = SavedObjectsUtils.generateId(); + + try { + await this.authorization.ensureAuthorized( + data.alertTypeId, + data.consumer, + WriteOperations.Create + ); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.CREATE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } // Throws an error if alert type isn't registered const alertType = this.alertTypeRegistry.get(data.alertTypeId); @@ -248,6 +268,15 @@ export class AlertsClient { error: null, }, }; + + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.CREATE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) + ); + let createdAlert: SavedObject; try { createdAlert = await this.unsecuredSavedObjectsClient.create( @@ -256,6 +285,7 @@ export class AlertsClient { { ...options, references, + id, } ); } catch (e) { @@ -297,10 +327,27 @@ export class AlertsClient { public async get({ id }: { id: string }): Promise { const result = await this.unsecuredSavedObjectsClient.get('alert', id); - await this.authorization.ensureAuthorized( - result.attributes.alertTypeId, - result.attributes.consumer, - ReadOperations.Get + try { + await this.authorization.ensureAuthorized( + result.attributes.alertTypeId, + result.attributes.consumer, + ReadOperations.Get + ); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.GET, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.GET, + savedObject: { type: 'alert', id }, + }) ); return this.getAlertFromRaw(result.id, result.attributes, result.references); } @@ -370,11 +417,23 @@ export class AlertsClient { public async find({ options: { fields, ...options } = {}, }: { options?: FindOptions } = {}): Promise { + let authorizationTuple; + try { + authorizationTuple = await this.authorization.getFindAuthorizationFilter(); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.FIND, + error, + }) + ); + throw error; + } const { filter: authorizationFilter, ensureAlertTypeIsAuthorized, logSuccessfulAuthorization, - } = await this.authorization.getFindAuthorizationFilter(); + } = authorizationTuple; const { page, @@ -392,7 +451,18 @@ export class AlertsClient { }); const authorizedData = data.map(({ id, attributes, references }) => { - ensureAlertTypeIsAuthorized(attributes.alertTypeId, attributes.consumer); + try { + ensureAlertTypeIsAuthorized(attributes.alertTypeId, attributes.consumer); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.FIND, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } return this.getAlertFromRaw( id, fields ? (pick(attributes, fields) as RawAlert) : attributes, @@ -400,6 +470,15 @@ export class AlertsClient { ); }); + authorizedData.forEach(({ id }) => + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.FIND, + savedObject: { type: 'alert', id }, + }) + ) + ); + logSuccessfulAuthorization(); return { @@ -473,10 +552,29 @@ export class AlertsClient { attributes = alert.attributes; } - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.Delete + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.Delete + ); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.DELETE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } + + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.DELETE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) ); const removeResult = await this.unsecuredSavedObjectsClient.delete('alert', id); @@ -520,10 +618,30 @@ export class AlertsClient { // Still attempt to load the object using SOC alertSavedObject = await this.unsecuredSavedObjectsClient.get('alert', id); } - await this.authorization.ensureAuthorized( - alertSavedObject.attributes.alertTypeId, - alertSavedObject.attributes.consumer, - WriteOperations.Update + + try { + await this.authorization.ensureAuthorized( + alertSavedObject.attributes.alertTypeId, + alertSavedObject.attributes.consumer, + WriteOperations.Update + ); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UPDATE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } + + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UPDATE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) ); const updateResult = await this.updateAlert({ id, data }, alertSavedObject); @@ -658,14 +776,28 @@ export class AlertsClient { attributes = alert.attributes; version = alert.version; } - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.UpdateApiKey - ); - if (attributes.actions.length && !this.authorization.shouldUseLegacyAuthorization(attributes)) { - await this.actionsAuthorization.ensureAuthorized('execute'); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.UpdateApiKey + ); + if ( + attributes.actions.length && + !this.authorization.shouldUseLegacyAuthorization(attributes) + ) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UPDATE_API_KEY, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; } const username = await this.getUserName(); @@ -678,6 +810,15 @@ export class AlertsClient { updatedAt: new Date().toISOString(), updatedBy: username, }); + + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UPDATE_API_KEY, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) + ); + try { await this.unsecuredSavedObjectsClient.update('alert', id, updateAttributes, { version }); } catch (e) { @@ -732,16 +873,35 @@ export class AlertsClient { version = alert.version; } - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.Enable - ); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.Enable + ); - if (attributes.actions.length) { - await this.actionsAuthorization.ensureAuthorized('execute'); + if (attributes.actions.length) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.ENABLE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.ENABLE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) + ); + if (attributes.enabled === false) { const username = await this.getUserName(); const updateAttributes = this.updateMeta({ @@ -816,10 +976,29 @@ export class AlertsClient { version = alert.version; } - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.Disable + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.Disable + ); + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.DISABLE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; + } + + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.DISABLE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) ); if (attributes.enabled === true) { @@ -866,16 +1045,36 @@ export class AlertsClient { 'alert', id ); - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.MuteAll - ); - if (attributes.actions.length) { - await this.actionsAuthorization.ensureAuthorized('execute'); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.MuteAll + ); + + if (attributes.actions.length) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.MUTE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.MUTE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) + ); + const updateAttributes = this.updateMeta({ muteAll: true, mutedInstanceIds: [], @@ -905,16 +1104,36 @@ export class AlertsClient { 'alert', id ); - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.UnmuteAll - ); - if (attributes.actions.length) { - await this.actionsAuthorization.ensureAuthorized('execute'); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.UnmuteAll + ); + + if (attributes.actions.length) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UNMUTE, + savedObject: { type: 'alert', id }, + error, + }) + ); + throw error; } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UNMUTE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id }, + }) + ); + const updateAttributes = this.updateMeta({ muteAll: false, mutedInstanceIds: [], @@ -945,16 +1164,35 @@ export class AlertsClient { alertId ); - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.MuteInstance - ); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.MuteInstance + ); - if (attributes.actions.length) { - await this.actionsAuthorization.ensureAuthorized('execute'); + if (attributes.actions.length) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.MUTE_INSTANCE, + savedObject: { type: 'alert', id: alertId }, + error, + }) + ); + throw error; } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.MUTE_INSTANCE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id: alertId }, + }) + ); + const mutedInstanceIds = attributes.mutedInstanceIds || []; if (!attributes.muteAll && !mutedInstanceIds.includes(alertInstanceId)) { mutedInstanceIds.push(alertInstanceId); @@ -991,15 +1229,34 @@ export class AlertsClient { alertId ); - await this.authorization.ensureAuthorized( - attributes.alertTypeId, - attributes.consumer, - WriteOperations.UnmuteInstance - ); - if (attributes.actions.length) { - await this.actionsAuthorization.ensureAuthorized('execute'); + try { + await this.authorization.ensureAuthorized( + attributes.alertTypeId, + attributes.consumer, + WriteOperations.UnmuteInstance + ); + if (attributes.actions.length) { + await this.actionsAuthorization.ensureAuthorized('execute'); + } + } catch (error) { + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UNMUTE_INSTANCE, + savedObject: { type: 'alert', id: alertId }, + error, + }) + ); + throw error; } + this.auditLogger?.log( + alertAuditEvent({ + action: AlertAuditAction.UNMUTE_INSTANCE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id: alertId }, + }) + ); + const mutedInstanceIds = attributes.mutedInstanceIds || []; if (!attributes.muteAll && mutedInstanceIds.includes(alertInstanceId)) { await this.unsecuredSavedObjectsClient.update( diff --git a/x-pack/plugins/alerts/server/alerts_client/audit_events.test.ts b/x-pack/plugins/alerts/server/alerts_client/audit_events.test.ts new file mode 100644 index 00000000000000..9cd48248320c08 --- /dev/null +++ b/x-pack/plugins/alerts/server/alerts_client/audit_events.test.ts @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EventOutcome } from '../../../security/server/audit'; +import { AlertAuditAction, alertAuditEvent } from './audit_events'; + +describe('#alertAuditEvent', () => { + test('creates event with `unknown` outcome', () => { + expect( + alertAuditEvent({ + action: AlertAuditAction.CREATE, + outcome: EventOutcome.UNKNOWN, + savedObject: { type: 'alert', id: 'ALERT_ID' }, + }) + ).toMatchInlineSnapshot(` + Object { + "error": undefined, + "event": Object { + "action": "alert_create", + "category": "database", + "outcome": "unknown", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ALERT_ID", + "type": "alert", + }, + }, + "message": "User is creating alert [id=ALERT_ID]", + } + `); + }); + + test('creates event with `success` outcome', () => { + expect( + alertAuditEvent({ + action: AlertAuditAction.CREATE, + savedObject: { type: 'alert', id: 'ALERT_ID' }, + }) + ).toMatchInlineSnapshot(` + Object { + "error": undefined, + "event": Object { + "action": "alert_create", + "category": "database", + "outcome": "success", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ALERT_ID", + "type": "alert", + }, + }, + "message": "User has created alert [id=ALERT_ID]", + } + `); + }); + + test('creates event with `failure` outcome', () => { + expect( + alertAuditEvent({ + action: AlertAuditAction.CREATE, + savedObject: { type: 'alert', id: 'ALERT_ID' }, + error: new Error('ERROR_MESSAGE'), + }) + ).toMatchInlineSnapshot(` + Object { + "error": Object { + "code": "Error", + "message": "ERROR_MESSAGE", + }, + "event": Object { + "action": "alert_create", + "category": "database", + "outcome": "failure", + "type": "creation", + }, + "kibana": Object { + "saved_object": Object { + "id": "ALERT_ID", + "type": "alert", + }, + }, + "message": "Failed attempt to create alert [id=ALERT_ID]", + } + `); + }); +}); diff --git a/x-pack/plugins/alerts/server/alerts_client/audit_events.ts b/x-pack/plugins/alerts/server/alerts_client/audit_events.ts new file mode 100644 index 00000000000000..f3e39598240847 --- /dev/null +++ b/x-pack/plugins/alerts/server/alerts_client/audit_events.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AuditEvent, EventOutcome, EventCategory, EventType } from '../../../security/server'; + +export enum AlertAuditAction { + CREATE = 'alert_create', + GET = 'alert_get', + UPDATE = 'alert_update', + UPDATE_API_KEY = 'alert_update_api_key', + ENABLE = 'alert_enable', + DISABLE = 'alert_disable', + DELETE = 'alert_delete', + FIND = 'alert_find', + MUTE = 'alert_mute', + UNMUTE = 'alert_unmute', + MUTE_INSTANCE = 'alert_instance_mute', + UNMUTE_INSTANCE = 'alert_instance_unmute', +} + +type VerbsTuple = [string, string, string]; + +const eventVerbs: Record = { + alert_create: ['create', 'creating', 'created'], + alert_get: ['access', 'accessing', 'accessed'], + alert_update: ['update', 'updating', 'updated'], + alert_update_api_key: ['update API key of', 'updating API key of', 'updated API key of'], + alert_enable: ['enable', 'enabling', 'enabled'], + alert_disable: ['disable', 'disabling', 'disabled'], + alert_delete: ['delete', 'deleting', 'deleted'], + alert_find: ['access', 'accessing', 'accessed'], + alert_mute: ['mute', 'muting', 'muted'], + alert_unmute: ['unmute', 'unmuting', 'unmuted'], + alert_instance_mute: ['mute instance of', 'muting instance of', 'muted instance of'], + alert_instance_unmute: ['unmute instance of', 'unmuting instance of', 'unmuted instance of'], +}; + +const eventTypes: Record = { + alert_create: EventType.CREATION, + alert_get: EventType.ACCESS, + alert_update: EventType.CHANGE, + alert_update_api_key: EventType.CHANGE, + alert_enable: EventType.CHANGE, + alert_disable: EventType.CHANGE, + alert_delete: EventType.DELETION, + alert_find: EventType.ACCESS, + alert_mute: EventType.CHANGE, + alert_unmute: EventType.CHANGE, + alert_instance_mute: EventType.CHANGE, + alert_instance_unmute: EventType.CHANGE, +}; + +export interface AlertAuditEventParams { + action: AlertAuditAction; + outcome?: EventOutcome; + savedObject?: NonNullable['saved_object']; + error?: Error; +} + +export function alertAuditEvent({ + action, + savedObject, + outcome, + error, +}: AlertAuditEventParams): AuditEvent { + const doc = savedObject ? `alert [id=${savedObject.id}]` : 'an alert'; + const [present, progressive, past] = eventVerbs[action]; + const message = error + ? `Failed attempt to ${present} ${doc}` + : outcome === EventOutcome.UNKNOWN + ? `User is ${progressive} ${doc}` + : `User has ${past} ${doc}`; + const type = eventTypes[action]; + + return { + message, + event: { + action, + category: EventCategory.DATABASE, + type, + outcome: outcome ?? (error ? EventOutcome.FAILURE : EventOutcome.SUCCESS), + }, + kibana: { + saved_object: savedObject, + }, + error: error && { + code: error.name, + message: error.message, + }, + }; +} diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/aggregate.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/aggregate.test.ts index cc5d10c3346e81..b21e3dcdf563d3 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/aggregate.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/aggregate.test.ts @@ -14,6 +14,7 @@ import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; import { getBeforeSetup, setGlobalDate } from './lib'; import { AlertExecutionStatusValues } from '../../types'; +import { RecoveredActionGroup } from '../../../common'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); @@ -53,6 +54,7 @@ describe('aggregate()', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myType', name: 'myType', producer: 'myApp', @@ -102,6 +104,7 @@ describe('aggregate()', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', authorizedConsumers: { myApp: { read: true, all: true }, diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/create.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/create.test.ts index 171ed13763c46b..b943a21ba9bb63 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/create.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/create.test.ts @@ -14,7 +14,16 @@ import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization, ActionsClient } from '../../../../actions/server'; import { TaskStatus } from '../../../../task_manager/server'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; import { getBeforeSetup, setGlobalDate } from './lib'; +import { RecoveredActionGroup } from '../../../common'; + +jest.mock('../../../../../../src/core/server/saved_objects/service/lib/utils', () => ({ + SavedObjectsUtils: { + generateId: () => 'mock-saved-object-id', + }, +})); const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); @@ -22,6 +31,7 @@ const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -39,10 +49,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -184,6 +196,62 @@ describe('create()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when creating an alert', async () => { + const data = getMockData({ + enabled: false, + actions: [], + }); + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: data, + references: [], + }); + await alertsClient.create({ data }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_create', + outcome: 'unknown', + }), + kibana: { saved_object: { id: 'mock-saved-object-id', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to create an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect( + alertsClient.create({ + data: getMockData({ + enabled: false, + actions: [], + }), + }) + ).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_create', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: 'mock-saved-object-id', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); + test('creates an alert', async () => { const data = getMockData(); const createdAttributes = { @@ -336,16 +404,17 @@ describe('create()', () => { } `); expect(unsecuredSavedObjectsClient.create.mock.calls[0][2]).toMatchInlineSnapshot(` - Object { - "references": Array [ - Object { - "id": "1", - "name": "action_0", - "type": "action", - }, - ], - } - `); + Object { + "id": "mock-saved-object-id", + "references": Array [ + Object { + "id": "1", + "name": "action_0", + "type": "action", + }, + ], + } + `); expect(taskManager.schedule).toHaveBeenCalledTimes(1); expect(taskManager.schedule.mock.calls[0]).toMatchInlineSnapshot(` Array [ @@ -683,6 +752,7 @@ describe('create()', () => { }, ], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, validate: { params: schema.object({ param1: schema.string(), @@ -989,6 +1059,7 @@ describe('create()', () => { }, }, { + id: 'mock-saved-object-id', references: [ { id: '1', @@ -1111,6 +1182,7 @@ describe('create()', () => { }, }, { + id: 'mock-saved-object-id', references: [ { id: '1', diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/delete.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/delete.test.ts index e7b975aec8eb0b..a7ef008eaa2ee7 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/delete.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/delete.test.ts @@ -12,6 +12,8 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup } from './lib'; const taskManager = taskManagerMock.createStart(); @@ -20,6 +22,7 @@ const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -37,10 +40,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); describe('delete()', () => { @@ -239,4 +244,43 @@ describe('delete()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('myType', 'myApp', 'delete'); }); }); + + describe('auditLogger', () => { + test('logs audit event when deleting an alert', async () => { + await alertsClient.delete({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_delete', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to delete an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.delete({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_delete', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/disable.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/disable.test.ts index 8c9ab9494a50af..ce0688a5ab2ff4 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/disable.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/disable.test.ts @@ -12,16 +12,18 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; -import { getBeforeSetup, setGlobalDate } from './lib'; import { InvalidatePendingApiKey } from '../../types'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; +import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -39,10 +41,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -109,6 +113,45 @@ describe('disable()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when disabling an alert', async () => { + await alertsClient.disable({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_disable', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to disable an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.disable({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_disable', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); + test('disables an alert', async () => { unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ id: '1', diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/enable.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/enable.test.ts index feec1d1b9334a1..daac6689a183b2 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/enable.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/enable.test.ts @@ -13,16 +13,18 @@ import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; import { TaskStatus } from '../../../../task_manager/server'; -import { getBeforeSetup, setGlobalDate } from './lib'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { InvalidatePendingApiKey } from '../../types'; +import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -40,10 +42,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -148,6 +152,45 @@ describe('enable()', () => { }); }); + describe('auditLogger', () => { + test('logs audit event when enabling an alert', async () => { + await alertsClient.enable({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_enable', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to enable an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.enable({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_enable', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); + test('enables an alert', async () => { const createdAt = new Date().toISOString(); unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/find.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/find.test.ts index 3d7473a7469869..232d48e258256a 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/find.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/find.test.ts @@ -14,15 +14,18 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; +import { RecoveredActionGroup } from '../../../common'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -44,6 +47,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -52,6 +56,7 @@ describe('find()', () => { const listedTypes = new Set([ { actionGroups: [], + recoveryActionGroup: RecoveredActionGroup, actionVariables: undefined, defaultActionGroupId: 'default', id: 'myType', @@ -108,6 +113,7 @@ describe('find()', () => { id: 'myType', name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup: RecoveredActionGroup, defaultActionGroupId: 'default', producer: 'alerts', authorizedConsumers: { @@ -248,4 +254,64 @@ describe('find()', () => { expect(logSuccessfulAuthorization).toHaveBeenCalled(); }); }); + + describe('auditLogger', () => { + test('logs audit event when searching alerts', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + await alertsClient.find(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_find', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to search alerts', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + authorization.getFindAuthorizationFilter.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.find()).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_find', + outcome: 'failure', + }), + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + + test('logs audit event when not authorised to search alert type', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + authorization.getFindAuthorizationFilter.mockResolvedValue({ + ensureAlertTypeIsAuthorized: jest.fn(() => { + throw new Error('Unauthorized'); + }), + logSuccessfulAuthorization: jest.fn(), + }); + + await expect(async () => await alertsClient.find()).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_find', + outcome: 'failure', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/get.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/get.test.ts index 3f0c783f424d13..32ac57459795eb 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/get.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/get.test.ts @@ -12,15 +12,17 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -42,6 +44,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -191,4 +194,61 @@ describe('get()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('myType', 'myApp', 'get'); }); }); + + describe('auditLogger', () => { + beforeEach(() => { + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + alertTypeId: '123', + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [], + }, + references: [], + }); + }); + + test('logs audit event when getting an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + await alertsClient.get({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_get', + outcome: 'success', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to get an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.get({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_get', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/get_alert_instance_summary.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/get_alert_instance_summary.test.ts index 9bd61c0fe66d2d..0a764ea7685913 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/get_alert_instance_summary.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/get_alert_instance_summary.test.ts @@ -122,7 +122,7 @@ describe('getAlertInstanceSummary()', () => { .addActiveInstance('instance-previously-active', 'action group B') .advanceTime(10000) .addExecute() - .addResolvedInstance('instance-previously-active') + .addRecoveredInstance('instance-previously-active') .addActiveInstance('instance-currently-active', 'action group A') .getEvents(); const eventsResult = { diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/lib.ts b/x-pack/plugins/alerts/server/alerts_client/tests/lib.ts index 028a7c6737474a..8f692cf548a9a5 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/lib.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/lib.ts @@ -9,6 +9,7 @@ import { actionsClientMock } from '../../../../actions/server/mocks'; import { ConstructorOptions } from '../alerts_client'; import { eventLogClientMock } from '../../../../event_log/server/mocks'; import { AlertTypeRegistry } from '../../alert_type_registry'; +import { RecoveredActionGroup } from '../../../common'; export const mockedDateString = '2019-02-12T21:01:22.479Z'; @@ -82,6 +83,7 @@ export function getBeforeSetup( id: '123', name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], + recoveryActionGroup: RecoveredActionGroup, defaultActionGroupId: 'default', async executor() {}, producer: 'alerts', diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/list_alert_types.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/list_alert_types.test.ts index 8cbe47655ef68c..f3521965d615dc 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/list_alert_types.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/list_alert_types.test.ts @@ -13,6 +13,7 @@ import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; import { getBeforeSetup } from './lib'; +import { RecoveredActionGroup } from '../../../common'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); @@ -50,6 +51,7 @@ describe('listAlertTypes', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'alertingAlertType', name: 'alertingAlertType', producer: 'alerts', @@ -58,6 +60,7 @@ describe('listAlertTypes', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -96,6 +99,7 @@ describe('listAlertTypes', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myType', name: 'myType', producer: 'myApp', @@ -105,6 +109,7 @@ describe('listAlertTypes', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', }, ]); @@ -119,6 +124,7 @@ describe('listAlertTypes', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, producer: 'alerts', authorizedConsumers: { myApp: { read: true, all: true }, diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/mute_all.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/mute_all.test.ts index 14ebca21355879..b3c3e1bdd2ede4 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/mute_all.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/mute_all.test.ts @@ -12,6 +12,8 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); @@ -20,6 +22,7 @@ const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -41,6 +44,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -137,4 +141,85 @@ describe('muteAll()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('myType', 'myApp', 'muteAll'); }); }); + + describe('auditLogger', () => { + test('logs audit event when muting an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [ + { + group: 'default', + id: '1', + actionTypeId: '1', + actionRef: '1', + params: { + foo: true, + }, + }, + ], + muteAll: false, + }, + references: [], + version: '123', + }); + await alertsClient.muteAll({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_mute', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to mute an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [ + { + group: 'default', + id: '1', + actionTypeId: '1', + actionRef: '1', + params: { + foo: true, + }, + }, + ], + muteAll: false, + }, + references: [], + version: '123', + }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.muteAll({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_mute', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/mute_instance.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/mute_instance.test.ts index c2188f128cb4d5..ec69dbdeac55f9 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/mute_instance.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/mute_instance.test.ts @@ -12,15 +12,17 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -42,6 +44,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -180,4 +183,75 @@ describe('muteInstance()', () => { ); }); }); + + describe('auditLogger', () => { + test('logs audit event when muting an alert instance', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [], + schedule: { interval: '10s' }, + alertTypeId: '2', + enabled: true, + scheduledTaskId: 'task-123', + mutedInstanceIds: [], + }, + version: '123', + references: [], + }); + await alertsClient.muteInstance({ alertId: '1', alertInstanceId: '2' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_instance_mute', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to mute an alert instance', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [], + schedule: { interval: '10s' }, + alertTypeId: '2', + enabled: true, + scheduledTaskId: 'task-123', + mutedInstanceIds: [], + }, + version: '123', + references: [], + }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect( + alertsClient.muteInstance({ alertId: '1', alertInstanceId: '2' }) + ).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_instance_mute', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/unmute_all.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/unmute_all.test.ts index d92304ab873be7..fd0157091e3a53 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/unmute_all.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/unmute_all.test.ts @@ -12,15 +12,17 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -42,6 +44,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -138,4 +141,85 @@ describe('unmuteAll()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('myType', 'myApp', 'unmuteAll'); }); }); + + describe('auditLogger', () => { + test('logs audit event when unmuting an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [ + { + group: 'default', + id: '1', + actionTypeId: '1', + actionRef: '1', + params: { + foo: true, + }, + }, + ], + muteAll: false, + }, + references: [], + version: '123', + }); + await alertsClient.unmuteAll({ id: '1' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_unmute', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to unmute an alert', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [ + { + group: 'default', + id: '1', + actionTypeId: '1', + actionRef: '1', + params: { + foo: true, + }, + }, + ], + muteAll: false, + }, + references: [], + version: '123', + }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.unmuteAll({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_unmute', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/unmute_instance.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/unmute_instance.test.ts index 3486df98f2f057..c7d084a01a2a0e 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/unmute_instance.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/unmute_instance.test.ts @@ -12,15 +12,17 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -42,6 +44,7 @@ const alertsClientParams: jest.Mocked = { beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -178,4 +181,75 @@ describe('unmuteInstance()', () => { ); }); }); + + describe('auditLogger', () => { + test('logs audit event when unmuting an alert instance', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [], + schedule: { interval: '10s' }, + alertTypeId: '2', + enabled: true, + scheduledTaskId: 'task-123', + mutedInstanceIds: [], + }, + version: '123', + references: [], + }); + await alertsClient.unmuteInstance({ alertId: '1', alertInstanceId: '2' }); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_instance_unmute', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to unmute an alert instance', async () => { + const alertsClient = new AlertsClient({ ...alertsClientParams, auditLogger }); + unsecuredSavedObjectsClient.get.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + actions: [], + schedule: { interval: '10s' }, + alertTypeId: '2', + enabled: true, + scheduledTaskId: 'task-123', + mutedInstanceIds: [], + }, + version: '123', + references: [], + }); + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect( + alertsClient.unmuteInstance({ alertId: '1', alertInstanceId: '2' }) + ).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_instance_unmute', + outcome: 'failure', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/update.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/update.test.ts index 046d7ec63c048c..15fb1e2ec0092c 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/update.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/update.test.ts @@ -11,21 +11,24 @@ import { taskManagerMock } from '../../../../task_manager/server/mocks'; import { alertTypeRegistryMock } from '../../alert_type_registry.mock'; import { alertsAuthorizationMock } from '../../authorization/alerts_authorization.mock'; import { IntervalSchedule, InvalidatePendingApiKey } from '../../types'; +import { RecoveredActionGroup } from '../../../common'; import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/server/mocks'; import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { resolvable } from '../../test_utils'; import { ActionsAuthorization, ActionsClient } from '../../../../actions/server'; import { TaskStatus } from '../../../../task_manager/server'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); - const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -43,10 +46,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -97,6 +102,7 @@ describe('update()', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, async executor() {}, producer: 'alerts', }); @@ -676,6 +682,7 @@ describe('update()', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, validate: { params: schema.object({ param1: schema.string(), @@ -1021,6 +1028,7 @@ describe('update()', () => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, async executor() {}, producer: 'alerts', }); @@ -1298,4 +1306,89 @@ describe('update()', () => { expect(authorization.ensureAuthorized).toHaveBeenCalledWith('myType', 'myApp', 'update'); }); }); + + describe('auditLogger', () => { + beforeEach(() => { + unsecuredSavedObjectsClient.create.mockResolvedValueOnce({ + id: '1', + type: 'alert', + attributes: { + enabled: true, + schedule: { interval: '10s' }, + params: { + bar: true, + }, + actions: [], + scheduledTaskId: 'task-123', + createdAt: new Date().toISOString(), + }, + updated_at: new Date().toISOString(), + references: [], + }); + }); + + test('logs audit event when updating an alert', async () => { + await alertsClient.update({ + id: '1', + data: { + schedule: { interval: '10s' }, + name: 'abc', + tags: ['foo'], + params: { + bar: true, + }, + throttle: null, + actions: [], + }, + }); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_update', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to update an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect( + alertsClient.update({ + id: '1', + data: { + schedule: { interval: '10s' }, + name: 'abc', + tags: ['foo'], + params: { + bar: true, + }, + throttle: null, + actions: [], + }, + }) + ).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + outcome: 'failure', + action: 'alert_update', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client/tests/update_api_key.test.ts b/x-pack/plugins/alerts/server/alerts_client/tests/update_api_key.test.ts index ca5f44078f5138..bf21256bb8413e 100644 --- a/x-pack/plugins/alerts/server/alerts_client/tests/update_api_key.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client/tests/update_api_key.test.ts @@ -12,8 +12,10 @@ import { encryptedSavedObjectsMock } from '../../../../encrypted_saved_objects/s import { actionsAuthorizationMock } from '../../../../actions/server/mocks'; import { AlertsAuthorization } from '../../authorization/alerts_authorization'; import { ActionsAuthorization } from '../../../../actions/server'; -import { getBeforeSetup, setGlobalDate } from './lib'; +import { httpServerMock } from '../../../../../../src/core/server/mocks'; +import { auditServiceMock } from '../../../../security/server/audit/index.mock'; import { InvalidatePendingApiKey } from '../../types'; +import { getBeforeSetup, setGlobalDate } from './lib'; const taskManager = taskManagerMock.createStart(); const alertTypeRegistry = alertTypeRegistryMock.create(); @@ -21,6 +23,7 @@ const unsecuredSavedObjectsClient = savedObjectsClientMock.create(); const encryptedSavedObjects = encryptedSavedObjectsMock.createClient(); const authorization = alertsAuthorizationMock.create(); const actionsAuthorization = actionsAuthorizationMock.create(); +const auditLogger = auditServiceMock.create().asScoped(httpServerMock.createKibanaRequest()); const kibanaVersion = 'v7.10.0'; const alertsClientParams: jest.Mocked = { @@ -38,10 +41,12 @@ const alertsClientParams: jest.Mocked = { getActionsClient: jest.fn(), getEventLogClient: jest.fn(), kibanaVersion, + auditLogger, }; beforeEach(() => { getBeforeSetup(alertsClientParams, taskManager, alertTypeRegistry); + (auditLogger.log as jest.Mock).mockClear(); }); setGlobalDate(); @@ -269,4 +274,44 @@ describe('updateApiKey()', () => { ); }); }); + + describe('auditLogger', () => { + test('logs audit event when updating the API key of an alert', async () => { + await alertsClient.updateApiKey({ id: '1' }); + + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + action: 'alert_update_api_key', + outcome: 'unknown', + }), + kibana: { saved_object: { id: '1', type: 'alert' } }, + }) + ); + }); + + test('logs audit event when not authorised to update the API key of an alert', async () => { + authorization.ensureAuthorized.mockRejectedValue(new Error('Unauthorized')); + + await expect(alertsClient.updateApiKey({ id: '1' })).rejects.toThrow(); + expect(auditLogger.log).toHaveBeenCalledWith( + expect.objectContaining({ + event: expect.objectContaining({ + outcome: 'failure', + action: 'alert_update_api_key', + }), + kibana: { + saved_object: { + id: '1', + type: 'alert', + }, + }, + error: { + code: 'Error', + message: 'Unauthorized', + }, + }) + ); + }); + }); }); diff --git a/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts b/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts index ca9389ece310c3..60e733b49b0415 100644 --- a/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts +++ b/x-pack/plugins/alerts/server/alerts_client_conflict_retries.test.ts @@ -18,6 +18,7 @@ import { ActionsAuthorization } from '../../actions/server'; import { SavedObjectsErrorHelpers } from '../../../../src/core/server'; import { RetryForConflictsAttempts } from './lib/retry_if_conflicts'; import { TaskStatus } from '../../../plugins/task_manager/server/task'; +import { RecoveredActionGroup } from '../common'; let alertsClient: AlertsClient; @@ -331,6 +332,7 @@ beforeEach(() => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, async executor() {}, producer: 'alerts', })); @@ -340,6 +342,7 @@ beforeEach(() => { name: 'Test', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, async executor() {}, producer: 'alerts', }); diff --git a/x-pack/plugins/alerts/server/alerts_client_factory.ts b/x-pack/plugins/alerts/server/alerts_client_factory.ts index 069703be72f8a5..9d71b5f817b2c0 100644 --- a/x-pack/plugins/alerts/server/alerts_client_factory.ts +++ b/x-pack/plugins/alerts/server/alerts_client_factory.ts @@ -100,6 +100,7 @@ export class AlertsClientFactory { actionsAuthorization: actions.getActionsAuthorizationWithRequest(request), namespace: this.spaceIdToNamespace(spaceId), encryptedSavedObjectsClient: this.encryptedSavedObjectsClient, + auditLogger: securityPluginSetup?.audit.asScoped(request), async getUserName() { if (!securityPluginSetup) { return null; diff --git a/x-pack/plugins/alerts/server/authorization/alerts_authorization.test.ts b/x-pack/plugins/alerts/server/authorization/alerts_authorization.test.ts index eb116b9e208dc2..ccc325d468c543 100644 --- a/x-pack/plugins/alerts/server/authorization/alerts_authorization.test.ts +++ b/x-pack/plugins/alerts/server/authorization/alerts_authorization.test.ts @@ -16,6 +16,7 @@ import { AlertsAuthorization, WriteOperations, ReadOperations } from './alerts_a import { alertsAuthorizationAuditLoggerMock } from './audit_logger.mock'; import { AlertsAuthorizationAuditLogger, AuthorizationResult } from './audit_logger'; import uuid from 'uuid'; +import { RecoveredActionGroup } from '../../common'; const alertTypeRegistry = alertTypeRegistryMock.create(); const features: jest.Mocked = featuresPluginMock.createStart(); @@ -172,6 +173,7 @@ beforeEach(() => { name: 'My Alert Type', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, async executor() {}, producer: 'myApp', })); @@ -534,6 +536,7 @@ describe('AlertsAuthorization', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myOtherAppAlertType', name: 'myOtherAppAlertType', producer: 'alerts', @@ -542,6 +545,7 @@ describe('AlertsAuthorization', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -550,6 +554,7 @@ describe('AlertsAuthorization', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'mySecondAppAlertType', name: 'mySecondAppAlertType', producer: 'myApp', @@ -824,6 +829,7 @@ describe('AlertsAuthorization', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myOtherAppAlertType', name: 'myOtherAppAlertType', producer: 'myOtherApp', @@ -832,6 +838,7 @@ describe('AlertsAuthorization', () => { actionGroups: [], actionVariables: undefined, defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -880,6 +887,10 @@ describe('AlertsAuthorization', () => { "id": "myAppAlertType", "name": "myAppAlertType", "producer": "myApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, Object { "actionGroups": Array [], @@ -906,6 +917,10 @@ describe('AlertsAuthorization', () => { "id": "myOtherAppAlertType", "name": "myOtherAppAlertType", "producer": "myOtherApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); @@ -972,6 +987,10 @@ describe('AlertsAuthorization', () => { "id": "myOtherAppAlertType", "name": "myOtherAppAlertType", "producer": "myOtherApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, Object { "actionGroups": Array [], @@ -994,6 +1013,10 @@ describe('AlertsAuthorization', () => { "id": "myAppAlertType", "name": "myAppAlertType", "producer": "myApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); @@ -1055,6 +1078,10 @@ describe('AlertsAuthorization', () => { "id": "myAppAlertType", "name": "myAppAlertType", "producer": "myApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); @@ -1145,6 +1172,10 @@ describe('AlertsAuthorization', () => { "id": "myOtherAppAlertType", "name": "myOtherAppAlertType", "producer": "myOtherApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, Object { "actionGroups": Array [], @@ -1167,6 +1198,10 @@ describe('AlertsAuthorization', () => { "id": "myAppAlertType", "name": "myAppAlertType", "producer": "myApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); @@ -1241,6 +1276,10 @@ describe('AlertsAuthorization', () => { "id": "myOtherAppAlertType", "name": "myOtherAppAlertType", "producer": "myOtherApp", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, } `); diff --git a/x-pack/plugins/alerts/server/authorization/alerts_authorization_kuery.test.ts b/x-pack/plugins/alerts/server/authorization/alerts_authorization_kuery.test.ts index e4b9f8c54c38d7..4be52f12da9c7e 100644 --- a/x-pack/plugins/alerts/server/authorization/alerts_authorization_kuery.test.ts +++ b/x-pack/plugins/alerts/server/authorization/alerts_authorization_kuery.test.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { esKuery } from '../../../../../src/plugins/data/server'; +import { RecoveredActionGroup } from '../../common'; import { asFiltersByAlertTypeAndConsumer, ensureFieldIsSafeForQuery, @@ -17,6 +18,7 @@ describe('asFiltersByAlertTypeAndConsumer', () => { { actionGroups: [], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -40,6 +42,7 @@ describe('asFiltersByAlertTypeAndConsumer', () => { { actionGroups: [], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -65,6 +68,7 @@ describe('asFiltersByAlertTypeAndConsumer', () => { { actionGroups: [], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myAppAlertType', name: 'myAppAlertType', producer: 'myApp', @@ -78,6 +82,7 @@ describe('asFiltersByAlertTypeAndConsumer', () => { { actionGroups: [], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'myOtherAppAlertType', name: 'myOtherAppAlertType', producer: 'alerts', @@ -91,6 +96,7 @@ describe('asFiltersByAlertTypeAndConsumer', () => { { actionGroups: [], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, id: 'mySecondAppAlertType', name: 'mySecondAppAlertType', producer: 'myApp', diff --git a/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.test.ts b/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.test.ts index f9e4a2908d6ce3..1d5ebe2b5911e9 100644 --- a/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.test.ts +++ b/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.test.ts @@ -6,7 +6,7 @@ import { SanitizedAlert, AlertInstanceSummary } from '../types'; import { IValidatedEvent } from '../../../event_log/server'; -import { EVENT_LOG_ACTIONS, EVENT_LOG_PROVIDER } from '../plugin'; +import { EVENT_LOG_ACTIONS, EVENT_LOG_PROVIDER, LEGACY_EVENT_LOG_ACTIONS } from '../plugin'; import { alertInstanceSummaryFromEventLog } from './alert_instance_summary_from_event_log'; const ONE_HOUR_IN_MILLIS = 60 * 60 * 1000; @@ -189,7 +189,43 @@ describe('alertInstanceSummaryFromEventLog', () => { .addActiveInstance('instance-1', 'action group A') .advanceTime(10000) .addExecute() - .addResolvedInstance('instance-1') + .addRecoveredInstance('instance-1') + .getEvents(); + + const summary: AlertInstanceSummary = alertInstanceSummaryFromEventLog({ + alert, + events, + dateStart, + dateEnd, + }); + + const { lastRun, status, instances } = summary; + expect({ lastRun, status, instances }).toMatchInlineSnapshot(` + Object { + "instances": Object { + "instance-1": Object { + "actionGroupId": undefined, + "activeStartDate": undefined, + "muted": false, + "status": "OK", + }, + }, + "lastRun": "2020-06-18T00:00:10.000Z", + "status": "OK", + } + `); + }); + + test('legacy alert with currently inactive instance', async () => { + const alert = createAlert({}); + const eventsFactory = new EventsFactory(); + const events = eventsFactory + .addExecute() + .addNewInstance('instance-1') + .addActiveInstance('instance-1', 'action group A') + .advanceTime(10000) + .addExecute() + .addLegacyResolvedInstance('instance-1') .getEvents(); const summary: AlertInstanceSummary = alertInstanceSummaryFromEventLog({ @@ -224,7 +260,7 @@ describe('alertInstanceSummaryFromEventLog', () => { .addActiveInstance('instance-1', 'action group A') .advanceTime(10000) .addExecute() - .addResolvedInstance('instance-1') + .addRecoveredInstance('instance-1') .getEvents(); const summary: AlertInstanceSummary = alertInstanceSummaryFromEventLog({ @@ -406,7 +442,7 @@ describe('alertInstanceSummaryFromEventLog', () => { .advanceTime(10000) .addExecute() .addActiveInstance('instance-1', 'action group A') - .addResolvedInstance('instance-2') + .addRecoveredInstance('instance-2') .getEvents(); const summary: AlertInstanceSummary = alertInstanceSummaryFromEventLog({ @@ -451,7 +487,7 @@ describe('alertInstanceSummaryFromEventLog', () => { .advanceTime(10000) .addExecute() .addActiveInstance('instance-1', 'action group A') - .addResolvedInstance('instance-2') + .addRecoveredInstance('instance-2') .advanceTime(10000) .addExecute() .addActiveInstance('instance-1', 'action group B') @@ -561,12 +597,24 @@ export class EventsFactory { return this; } - addResolvedInstance(instanceId: string): EventsFactory { + addRecoveredInstance(instanceId: string): EventsFactory { + this.events.push({ + '@timestamp': this.date, + event: { + provider: EVENT_LOG_PROVIDER, + action: EVENT_LOG_ACTIONS.recoveredInstance, + }, + kibana: { alerting: { instance_id: instanceId } }, + }); + return this; + } + + addLegacyResolvedInstance(instanceId: string): EventsFactory { this.events.push({ '@timestamp': this.date, event: { provider: EVENT_LOG_PROVIDER, - action: EVENT_LOG_ACTIONS.resolvedInstance, + action: LEGACY_EVENT_LOG_ACTIONS.resolvedInstance, }, kibana: { alerting: { instance_id: instanceId } }, }); diff --git a/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.ts b/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.ts index 8fed97a74435dc..6fed8b4aa4ee6a 100644 --- a/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.ts +++ b/x-pack/plugins/alerts/server/lib/alert_instance_summary_from_event_log.ts @@ -6,7 +6,7 @@ import { SanitizedAlert, AlertInstanceSummary, AlertInstanceStatus } from '../types'; import { IEvent } from '../../../event_log/server'; -import { EVENT_LOG_ACTIONS, EVENT_LOG_PROVIDER } from '../plugin'; +import { EVENT_LOG_ACTIONS, EVENT_LOG_PROVIDER, LEGACY_EVENT_LOG_ACTIONS } from '../plugin'; export interface AlertInstanceSummaryFromEventLogParams { alert: SanitizedAlert; @@ -80,7 +80,8 @@ export function alertInstanceSummaryFromEventLog( status.status = 'Active'; status.actionGroupId = event?.kibana?.alerting?.action_group_id; break; - case EVENT_LOG_ACTIONS.resolvedInstance: + case LEGACY_EVENT_LOG_ACTIONS.resolvedInstance: + case EVENT_LOG_ACTIONS.recoveredInstance: status.status = 'OK'; status.activeStartDate = undefined; status.actionGroupId = undefined; diff --git a/x-pack/plugins/alerts/server/plugin.ts b/x-pack/plugins/alerts/server/plugin.ts index 4bfb44425544a9..bafb89c64076b0 100644 --- a/x-pack/plugins/alerts/server/plugin.ts +++ b/x-pack/plugins/alerts/server/plugin.ts @@ -82,9 +82,12 @@ export const EVENT_LOG_ACTIONS = { execute: 'execute', executeAction: 'execute-action', newInstance: 'new-instance', - resolvedInstance: 'resolved-instance', + recoveredInstance: 'recovered-instance', activeInstance: 'active-instance', }; +export const LEGACY_EVENT_LOG_ACTIONS = { + resolvedInstance: 'resolved-instance', +}; export interface PluginSetupContract { registerType: AlertTypeRegistry['register']; diff --git a/x-pack/plugins/alerts/server/routes/list_alert_types.test.ts b/x-pack/plugins/alerts/server/routes/list_alert_types.test.ts index af20dd6e202ba7..b18c79fd67484c 100644 --- a/x-pack/plugins/alerts/server/routes/list_alert_types.test.ts +++ b/x-pack/plugins/alerts/server/routes/list_alert_types.test.ts @@ -10,6 +10,7 @@ import { mockLicenseState } from '../lib/license_state.mock'; import { verifyApiAccess } from '../lib/license_api_access'; import { mockHandlerArguments } from './_mock_handler_arguments'; import { alertsClientMock } from '../alerts_client.mock'; +import { RecoveredActionGroup } from '../../common'; const alertsClient = alertsClientMock.create(); @@ -43,6 +44,7 @@ describe('listAlertTypesRoute', () => { }, ], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, authorizedConsumers: {}, actionVariables: { context: [], @@ -74,6 +76,10 @@ describe('listAlertTypesRoute', () => { "id": "1", "name": "name", "producer": "test", + "recoveryActionGroup": Object { + "id": "recovered", + "name": "Recovered", + }, }, ], } @@ -107,6 +113,7 @@ describe('listAlertTypesRoute', () => { }, ], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, authorizedConsumers: {}, actionVariables: { context: [], @@ -156,6 +163,7 @@ describe('listAlertTypesRoute', () => { }, ], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, authorizedConsumers: {}, actionVariables: { context: [], diff --git a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.test.ts b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.test.ts index ed73fec24db261..59eca88a9ada30 100644 --- a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.test.ts +++ b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.test.ts @@ -20,6 +20,10 @@ const alertType: AlertType = { { id: 'other-group', name: 'Other Group' }, ], defaultActionGroupId: 'default', + recoveryActionGroup: { + id: 'recovered', + name: 'Recovered', + }, executor: jest.fn(), producer: 'alerts', }; diff --git a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts index ccd1f6c20ba527..3d68ba3adbd6be 100644 --- a/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts +++ b/x-pack/plugins/alerts/server/task_runner/create_execution_handler.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import { map } from 'lodash'; import { Logger, KibanaRequest } from '../../../../../src/core/server'; import { transformActionParams } from './transform_action_params'; import { @@ -58,7 +57,9 @@ export function createExecutionHandler({ request, alertParams, }: CreateExecutionHandlerOptions) { - const alertTypeActionGroups = new Set(map(alertType.actionGroups, 'id')); + const alertTypeActionGroups = new Map( + alertType.actionGroups.map((actionGroup) => [actionGroup.id, actionGroup.name]) + ); return async ({ actionGroup, context, state, alertInstanceId }: ExecutionHandlerOptions) => { if (!alertTypeActionGroups.has(actionGroup)) { logger.error(`Invalid action group "${actionGroup}" for alert "${alertType.id}".`); @@ -76,6 +77,7 @@ export function createExecutionHandler({ tags, alertInstanceId, alertActionGroup: actionGroup, + alertActionGroupName: alertTypeActionGroups.get(actionGroup)!, context, actionParams: action.params, state, diff --git a/x-pack/plugins/alerts/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerts/server/task_runner/task_runner.test.ts index 07d08f5837d54a..2c49eed0cf6e39 100644 --- a/x-pack/plugins/alerts/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerts/server/task_runner/task_runner.test.ts @@ -26,13 +26,14 @@ import { alertsMock, alertsClientMock } from '../mocks'; import { eventLoggerMock } from '../../../event_log/server/event_logger.mock'; import { IEventLogger } from '../../../event_log/server'; import { SavedObjectsErrorHelpers } from '../../../../../src/core/server'; -import { Alert, ResolvedActionGroup } from '../../common'; +import { Alert, RecoveredActionGroup } from '../../common'; import { omit } from 'lodash'; const alertType = { id: 'test', name: 'My test alert', - actionGroups: [{ id: 'default', name: 'Default' }, ResolvedActionGroup], + actionGroups: [{ id: 'default', name: 'Default' }, RecoveredActionGroup], defaultActionGroupId: 'default', + recoveryActionGroup: RecoveredActionGroup, executor: jest.fn(), producer: 'alerts', }; @@ -114,7 +115,7 @@ describe('Task Runner', () => { }, }, { - group: ResolvedActionGroup.id, + group: RecoveredActionGroup.id, id: '2', actionTypeId: 'action', params: { @@ -189,6 +190,14 @@ describe('Task Runner', () => { expect(call.services.callCluster).toBeTruthy(); expect(call.services).toBeTruthy(); + const logger = taskRunnerFactoryInitializerParams.logger; + expect(logger.debug).toHaveBeenCalledTimes(2); + expect(logger.debug).nthCalledWith(1, 'executing alert test:1 at 1970-01-01T00:00:00.000Z'); + expect(logger.debug).nthCalledWith( + 2, + 'alertExecutionStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"ok"}' + ); + const eventLogger = taskRunnerFactoryInitializerParams.eventLogger; expect(eventLogger.logEvent).toHaveBeenCalledTimes(1); expect(eventLogger.logEvent.mock.calls[0][0]).toMatchInlineSnapshot(` @@ -260,6 +269,18 @@ describe('Task Runner', () => { ] `); + const logger = taskRunnerFactoryInitializerParams.logger; + expect(logger.debug).toHaveBeenCalledTimes(3); + expect(logger.debug).nthCalledWith(1, 'executing alert test:1 at 1970-01-01T00:00:00.000Z'); + expect(logger.debug).nthCalledWith( + 2, + `alert test:1: 'alert-name' has 1 active alert instances: [{\"instanceId\":\"1\",\"actionGroup\":\"default\"}]` + ); + expect(logger.debug).nthCalledWith( + 3, + 'alertExecutionStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"active"}' + ); + const eventLogger = taskRunnerFactoryInitializerParams.eventLogger; expect(eventLogger.logEvent).toHaveBeenCalledTimes(4); expect(eventLogger.logEvent).toHaveBeenNthCalledWith(1, { @@ -351,6 +372,161 @@ describe('Task Runner', () => { }); }); + test('actionsPlugin.execute is skipped if muteAll is true', async () => { + taskRunnerFactoryInitializerParams.actionsPlugin.isActionTypeEnabled.mockReturnValue(true); + taskRunnerFactoryInitializerParams.actionsPlugin.isActionExecutable.mockReturnValue(true); + alertType.executor.mockImplementation( + ({ services: executorServices }: AlertExecutorOptions) => { + executorServices.alertInstanceFactory('1').scheduleActions('default'); + } + ); + const taskRunner = new TaskRunner( + alertType, + mockedTaskInstance, + taskRunnerFactoryInitializerParams + ); + alertsClient.get.mockResolvedValue({ + ...mockedAlertTypeSavedObject, + muteAll: true, + }); + encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue({ + id: '1', + type: 'alert', + attributes: { + apiKey: Buffer.from('123:abc').toString('base64'), + }, + references: [], + }); + await taskRunner.run(); + expect(actionsClient.enqueueExecution).toHaveBeenCalledTimes(0); + + const logger = taskRunnerFactoryInitializerParams.logger; + expect(logger.debug).toHaveBeenCalledTimes(4); + expect(logger.debug).nthCalledWith(1, 'executing alert test:1 at 1970-01-01T00:00:00.000Z'); + expect(logger.debug).nthCalledWith( + 2, + `alert test:1: 'alert-name' has 1 active alert instances: [{\"instanceId\":\"1\",\"actionGroup\":\"default\"}]` + ); + expect(logger.debug).nthCalledWith( + 3, + `no scheduling of actions for alert test:1: 'alert-name': alert is muted.` + ); + expect(logger.debug).nthCalledWith( + 4, + 'alertExecutionStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"active"}' + ); + + const eventLogger = taskRunnerFactoryInitializerParams.eventLogger; + expect(eventLogger.logEvent).toHaveBeenCalledTimes(3); + expect(eventLogger.logEvent).toHaveBeenNthCalledWith(1, { + event: { + action: 'new-instance', + }, + kibana: { + alerting: { + action_group_id: 'default', + instance_id: '1', + }, + saved_objects: [ + { + id: '1', + namespace: undefined, + rel: 'primary', + type: 'alert', + }, + ], + }, + message: "test:1: 'alert-name' created new instance: '1'", + }); + expect(eventLogger.logEvent).toHaveBeenNthCalledWith(2, { + event: { + action: 'active-instance', + }, + kibana: { + alerting: { + instance_id: '1', + action_group_id: 'default', + }, + saved_objects: [ + { + id: '1', + namespace: undefined, + rel: 'primary', + type: 'alert', + }, + ], + }, + message: "test:1: 'alert-name' active instance: '1' in actionGroup: 'default'", + }); + expect(eventLogger.logEvent).toHaveBeenNthCalledWith(3, { + '@timestamp': '1970-01-01T00:00:00.000Z', + event: { + action: 'execute', + outcome: 'success', + }, + kibana: { + alerting: { + status: 'active', + }, + saved_objects: [ + { + id: '1', + namespace: undefined, + rel: 'primary', + type: 'alert', + }, + ], + }, + message: "alert executed: test:1: 'alert-name'", + }); + }); + + test('skips firing actions for active instance if instance is muted', async () => { + taskRunnerFactoryInitializerParams.actionsPlugin.isActionTypeEnabled.mockReturnValue(true); + taskRunnerFactoryInitializerParams.actionsPlugin.isActionExecutable.mockReturnValue(true); + alertType.executor.mockImplementation( + ({ services: executorServices }: AlertExecutorOptions) => { + executorServices.alertInstanceFactory('1').scheduleActions('default'); + executorServices.alertInstanceFactory('2').scheduleActions('default'); + } + ); + const taskRunner = new TaskRunner( + alertType, + mockedTaskInstance, + taskRunnerFactoryInitializerParams + ); + alertsClient.get.mockResolvedValue({ + ...mockedAlertTypeSavedObject, + mutedInstanceIds: ['2'], + }); + encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue({ + id: '1', + type: 'alert', + attributes: { + apiKey: Buffer.from('123:abc').toString('base64'), + }, + references: [], + }); + await taskRunner.run(); + expect(actionsClient.enqueueExecution).toHaveBeenCalledTimes(1); + + const logger = taskRunnerFactoryInitializerParams.logger; + expect(logger.debug).toHaveBeenCalledTimes(4); + expect(logger.debug).nthCalledWith(1, 'executing alert test:1 at 1970-01-01T00:00:00.000Z'); + expect(logger.debug).nthCalledWith( + 2, + `alert test:1: 'alert-name' has 2 active alert instances: [{\"instanceId\":\"1\",\"actionGroup\":\"default\"},{\"instanceId\":\"2\",\"actionGroup\":\"default\"}]` + ); + expect(logger.debug).nthCalledWith( + 3, + `skipping scheduling of actions for '2' in alert test:1: 'alert-name': instance is muted` + ); + expect(logger.debug).nthCalledWith( + 4, + 'alertExecutionStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"active"}' + ); + }); + test('includes the apiKey in the request used to initialize the actionsClient', async () => { taskRunnerFactoryInitializerParams.actionsPlugin.isActionTypeEnabled.mockReturnValue(true); taskRunnerFactoryInitializerParams.actionsPlugin.isActionExecutable.mockReturnValue(true); @@ -517,7 +693,7 @@ describe('Task Runner', () => { `); }); - test('fire resolved actions for execution for the alertInstances which is in the resolved state', async () => { + test('fire recovered actions for execution for the alertInstances which is in the recovered state', async () => { taskRunnerFactoryInitializerParams.actionsPlugin.isActionTypeEnabled.mockReturnValue(true); taskRunnerFactoryInitializerParams.actionsPlugin.isActionExecutable.mockReturnValue(true); @@ -566,6 +742,125 @@ describe('Task Runner', () => { } `); + const logger = taskRunnerFactoryInitializerParams.logger; + expect(logger.debug).toHaveBeenCalledTimes(4); + expect(logger.debug).nthCalledWith(1, 'executing alert test:1 at 1970-01-01T00:00:00.000Z'); + expect(logger.debug).nthCalledWith( + 2, + `alert test:1: 'alert-name' has 1 active alert instances: [{\"instanceId\":\"1\",\"actionGroup\":\"default\"}]` + ); + expect(logger.debug).nthCalledWith( + 3, + `alert test:1: 'alert-name' has 1 recovered alert instances: [\"2\"]` + ); + expect(logger.debug).nthCalledWith( + 4, + 'alertExecutionStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"active"}' + ); + + const eventLogger = taskRunnerFactoryInitializerParams.eventLogger; + expect(eventLogger.logEvent).toHaveBeenCalledTimes(5); + expect(actionsClient.enqueueExecution).toHaveBeenCalledTimes(2); + expect(actionsClient.enqueueExecution.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + Object { + "apiKey": "MTIzOmFiYw==", + "id": "2", + "params": Object { + "isResolved": true, + }, + "source": Object { + "source": Object { + "id": "1", + "type": "alert", + }, + "type": "SAVED_OBJECT", + }, + "spaceId": undefined, + }, + ] + `); + }); + + test('fire actions under a custom recovery group when specified on an alert type for alertInstances which are in the recovered state', async () => { + taskRunnerFactoryInitializerParams.actionsPlugin.isActionTypeEnabled.mockReturnValue(true); + taskRunnerFactoryInitializerParams.actionsPlugin.isActionExecutable.mockReturnValue(true); + + const recoveryActionGroup = { + id: 'customRecovered', + name: 'Custom Recovered', + }; + const alertTypeWithCustomRecovery = { + ...alertType, + recoveryActionGroup, + actionGroups: [{ id: 'default', name: 'Default' }, recoveryActionGroup], + }; + + alertTypeWithCustomRecovery.executor.mockImplementation( + ({ services: executorServices }: AlertExecutorOptions) => { + executorServices.alertInstanceFactory('1').scheduleActions('default'); + } + ); + const taskRunner = new TaskRunner( + alertTypeWithCustomRecovery, + { + ...mockedTaskInstance, + state: { + ...mockedTaskInstance.state, + alertInstances: { + '1': { meta: {}, state: { bar: false } }, + '2': { meta: {}, state: { bar: false } }, + }, + }, + }, + taskRunnerFactoryInitializerParams + ); + alertsClient.get.mockResolvedValue({ + ...mockedAlertTypeSavedObject, + actions: [ + { + group: 'default', + id: '1', + actionTypeId: 'action', + params: { + foo: true, + }, + }, + { + group: recoveryActionGroup.id, + id: '2', + actionTypeId: 'action', + params: { + isResolved: true, + }, + }, + ], + }); + encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue({ + id: '1', + type: 'alert', + attributes: { + apiKey: Buffer.from('123:abc').toString('base64'), + }, + references: [], + }); + const runnerResult = await taskRunner.run(); + expect(runnerResult.state.alertInstances).toMatchInlineSnapshot(` + Object { + "1": Object { + "meta": Object { + "lastScheduledActions": Object { + "date": 1970-01-01T00:00:00.000Z, + "group": "default", + }, + }, + "state": Object { + "bar": false, + }, + }, + } + `); + const eventLogger = taskRunnerFactoryInitializerParams.eventLogger; expect(eventLogger.logEvent).toHaveBeenCalledTimes(5); expect(actionsClient.enqueueExecution).toHaveBeenCalledTimes(2); @@ -650,7 +945,7 @@ describe('Task Runner', () => { Array [ Object { "event": Object { - "action": "resolved-instance", + "action": "recovered-instance", }, "kibana": Object { "alerting": Object { @@ -666,7 +961,7 @@ describe('Task Runner', () => { }, ], }, - "message": "test:1: 'alert-name' resolved instance: '2'", + "message": "test:1: 'alert-name' instance '2' has recovered", }, ], Array [ diff --git a/x-pack/plugins/alerts/server/task_runner/task_runner.ts b/x-pack/plugins/alerts/server/task_runner/task_runner.ts index 24d96788c33959..0c486dad070ef5 100644 --- a/x-pack/plugins/alerts/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerts/server/task_runner/task_runner.ts @@ -20,7 +20,6 @@ import { ErrorWithReason, } from '../lib'; import { - AlertType, RawAlert, IntervalSchedule, Services, @@ -39,7 +38,8 @@ import { IEvent, IEventLogger, SAVED_OBJECT_REL_PRIMARY } from '../../../event_l import { isAlertSavedObjectNotFoundError } from '../lib/is_alert_not_found_error'; import { AlertsClient } from '../alerts_client'; import { partiallyUpdateAlert } from '../saved_objects'; -import { ResolvedActionGroup } from '../../common'; +import { ActionGroup } from '../../common'; +import { NormalizedAlertType } from '../alert_type_registry'; const FALLBACK_RETRY_INTERVAL = '5m'; @@ -58,10 +58,10 @@ export class TaskRunner { private context: TaskRunnerContext; private logger: Logger; private taskInstance: AlertTaskInstance; - private alertType: AlertType; + private alertType: NormalizedAlertType; constructor( - alertType: AlertType, + alertType: NormalizedAlertType, taskInstance: ConcreteTaskInstance, context: TaskRunnerContext ) { @@ -218,37 +218,61 @@ export class TaskRunner { const instancesWithScheduledActions = pickBy(alertInstances, (alertInstance: AlertInstance) => alertInstance.hasScheduledActions() ); + const recoveredAlertInstances = pickBy( + alertInstances, + (alertInstance: AlertInstance) => !alertInstance.hasScheduledActions() + ); + + logActiveAndRecoveredInstances({ + logger: this.logger, + activeAlertInstances: instancesWithScheduledActions, + recoveredAlertInstances, + alertLabel, + }); - generateNewAndResolvedInstanceEvents({ + generateNewAndRecoveredInstanceEvents({ eventLogger, originalAlertInstances, currentAlertInstances: instancesWithScheduledActions, + recoveredAlertInstances, alertId, alertLabel, namespace, }); if (!muteAll) { - scheduleActionsForResolvedInstances( - alertInstances, - executionHandler, - originalAlertInstances, - instancesWithScheduledActions, - alert.mutedInstanceIds - ); - const mutedInstanceIdsSet = new Set(mutedInstanceIds); + scheduleActionsForRecoveredInstances({ + recoveryActionGroup: this.alertType.recoveryActionGroup, + recoveredAlertInstances, + executionHandler, + mutedInstanceIdsSet, + logger: this.logger, + alertLabel, + }); + await Promise.all( Object.entries(instancesWithScheduledActions) - .filter( - ([alertInstanceName, alertInstance]: [string, AlertInstance]) => - !alertInstance.isThrottled(throttle) && !mutedInstanceIdsSet.has(alertInstanceName) - ) + .filter(([alertInstanceName, alertInstance]: [string, AlertInstance]) => { + const throttled = alertInstance.isThrottled(throttle); + const muted = mutedInstanceIdsSet.has(alertInstanceName); + const shouldExecuteAction = !throttled && !muted; + if (!shouldExecuteAction) { + this.logger.debug( + `skipping scheduling of actions for '${alertInstanceName}' in alert ${alertLabel}: instance is ${ + muted ? 'muted' : 'throttled' + }` + ); + } + return shouldExecuteAction; + }) .map(([id, alertInstance]: [string, AlertInstance]) => this.executeAlertInstance(id, alertInstance, executionHandler) ) ); + } else { + this.logger.debug(`no scheduling of actions for alert ${alertLabel}: alert is muted.`); } return { @@ -332,12 +356,15 @@ export class TaskRunner { schedule: taskSchedule, } = this.taskInstance; + const runDate = new Date().toISOString(); + this.logger.debug(`executing alert ${this.alertType.id}:${alertId} at ${runDate}`); + const namespace = this.context.spaceIdToNamespace(spaceId); const eventLogger = this.context.eventLogger; const event: IEvent = { // explicitly set execute timestamp so it will be before other events // generated here (new-instance, schedule-action, etc) - '@timestamp': new Date().toISOString(), + '@timestamp': runDate, event: { action: EVENT_LOG_ACTIONS.execute }, kibana: { saved_objects: [ @@ -436,27 +463,37 @@ export class TaskRunner { } } -interface GenerateNewAndResolvedInstanceEventsParams { +interface GenerateNewAndRecoveredInstanceEventsParams { eventLogger: IEventLogger; originalAlertInstances: Dictionary; currentAlertInstances: Dictionary; + recoveredAlertInstances: Dictionary; alertId: string; alertLabel: string; namespace: string | undefined; } -function generateNewAndResolvedInstanceEvents(params: GenerateNewAndResolvedInstanceEventsParams) { - const { eventLogger, alertId, namespace, currentAlertInstances, originalAlertInstances } = params; +function generateNewAndRecoveredInstanceEvents( + params: GenerateNewAndRecoveredInstanceEventsParams +) { + const { + eventLogger, + alertId, + namespace, + currentAlertInstances, + originalAlertInstances, + recoveredAlertInstances, + } = params; const originalAlertInstanceIds = Object.keys(originalAlertInstances); const currentAlertInstanceIds = Object.keys(currentAlertInstances); + const recoveredAlertInstanceIds = Object.keys(recoveredAlertInstances); const newIds = without(currentAlertInstanceIds, ...originalAlertInstanceIds); - const resolvedIds = without(originalAlertInstanceIds, ...currentAlertInstanceIds); - for (const id of resolvedIds) { + for (const id of recoveredAlertInstanceIds) { const actionGroup = originalAlertInstances[id].getLastScheduledActions()?.group; - const message = `${params.alertLabel} resolved instance: '${id}'`; - logInstanceEvent(id, EVENT_LOG_ACTIONS.resolvedInstance, message, actionGroup); + const message = `${params.alertLabel} instance '${id}' has recovered`; + logInstanceEvent(id, EVENT_LOG_ACTIONS.recoveredInstance, message, actionGroup); } for (const id of newIds) { @@ -496,31 +533,72 @@ function generateNewAndResolvedInstanceEvents(params: GenerateNewAndResolvedInst } } -function scheduleActionsForResolvedInstances( - alertInstancesMap: Record, - executionHandler: ReturnType, - originalAlertInstances: Record, - currentAlertInstances: Dictionary, - mutedInstanceIds: string[] -) { - const currentAlertInstanceIds = Object.keys(currentAlertInstances); - const originalAlertInstanceIds = Object.keys(originalAlertInstances); - const resolvedIds = without( - originalAlertInstanceIds, - ...currentAlertInstanceIds, - ...mutedInstanceIds - ); - for (const id of resolvedIds) { - const instance = alertInstancesMap[id]; - instance.updateLastScheduledActions(ResolvedActionGroup.id); - instance.unscheduleActions(); - executionHandler({ - actionGroup: ResolvedActionGroup.id, - context: {}, - state: {}, - alertInstanceId: id, - }); - instance.scheduleActions(ResolvedActionGroup.id); +interface ScheduleActionsForRecoveredInstancesParams { + logger: Logger; + recoveryActionGroup: ActionGroup; + recoveredAlertInstances: Dictionary; + executionHandler: ReturnType; + mutedInstanceIdsSet: Set; + alertLabel: string; +} + +function scheduleActionsForRecoveredInstances(params: ScheduleActionsForRecoveredInstancesParams) { + const { + logger, + recoveryActionGroup, + recoveredAlertInstances, + executionHandler, + mutedInstanceIdsSet, + alertLabel, + } = params; + const recoveredIds = Object.keys(recoveredAlertInstances); + for (const id of recoveredIds) { + if (mutedInstanceIdsSet.has(id)) { + logger.debug( + `skipping scheduling of actions for '${id}' in alert ${alertLabel}: instance is muted` + ); + } else { + const instance = recoveredAlertInstances[id]; + instance.updateLastScheduledActions(recoveryActionGroup.id); + instance.unscheduleActions(); + executionHandler({ + actionGroup: recoveryActionGroup.id, + context: {}, + state: {}, + alertInstanceId: id, + }); + instance.scheduleActions(recoveryActionGroup.id); + } + } +} + +interface LogActiveAndRecoveredInstancesParams { + logger: Logger; + activeAlertInstances: Dictionary; + recoveredAlertInstances: Dictionary; + alertLabel: string; +} + +function logActiveAndRecoveredInstances(params: LogActiveAndRecoveredInstancesParams) { + const { logger, activeAlertInstances, recoveredAlertInstances, alertLabel } = params; + const activeInstanceIds = Object.keys(activeAlertInstances); + const recoveredInstanceIds = Object.keys(recoveredAlertInstances); + if (activeInstanceIds.length > 0) { + logger.debug( + `alert ${alertLabel} has ${activeInstanceIds.length} active alert instances: ${JSON.stringify( + activeInstanceIds.map((instanceId) => ({ + instanceId, + actionGroup: activeAlertInstances[instanceId].getScheduledActionOptions()?.actionGroup, + })) + )}` + ); + } + if (recoveredInstanceIds.length > 0) { + logger.debug( + `alert ${alertLabel} has ${ + recoveredInstanceIds.length + } recovered alert instances: ${JSON.stringify(recoveredInstanceIds)}` + ); } } diff --git a/x-pack/plugins/alerts/server/task_runner/task_runner_factory.test.ts b/x-pack/plugins/alerts/server/task_runner/task_runner_factory.test.ts index 1c10a997d8cdd1..4c685d2fdec82e 100644 --- a/x-pack/plugins/alerts/server/task_runner/task_runner_factory.test.ts +++ b/x-pack/plugins/alerts/server/task_runner/task_runner_factory.test.ts @@ -22,6 +22,10 @@ const alertType = { name: 'My test alert', actionGroups: [{ id: 'default', name: 'Default' }], defaultActionGroupId: 'default', + recoveryActionGroup: { + id: 'recovered', + name: 'Recovered', + }, executor: jest.fn(), producer: 'alerts', }; diff --git a/x-pack/plugins/alerts/server/task_runner/task_runner_factory.ts b/x-pack/plugins/alerts/server/task_runner/task_runner_factory.ts index 2a2d74c1fc259d..405afbf53c0757 100644 --- a/x-pack/plugins/alerts/server/task_runner/task_runner_factory.ts +++ b/x-pack/plugins/alerts/server/task_runner/task_runner_factory.ts @@ -13,10 +13,11 @@ import { import { RunContext } from '../../../task_manager/server'; import { EncryptedSavedObjectsClient } from '../../../encrypted_saved_objects/server'; import { PluginStartContract as ActionsPluginStartContract } from '../../../actions/server'; -import { AlertType, GetServicesFunction, SpaceIdToNamespaceFunction } from '../types'; +import { GetServicesFunction, SpaceIdToNamespaceFunction } from '../types'; import { TaskRunner } from './task_runner'; import { IEventLogger } from '../../../event_log/server'; import { AlertsClient } from '../alerts_client'; +import { NormalizedAlertType } from '../alert_type_registry'; export interface TaskRunnerContext { logger: Logger; @@ -42,7 +43,7 @@ export class TaskRunnerFactory { this.taskRunnerContext = taskRunnerContext; } - public create(alertType: AlertType, { taskInstance }: RunContext) { + public create(alertType: NormalizedAlertType, { taskInstance }: RunContext) { if (!this.isInitialized) { throw new Error('TaskRunnerFactory not initialized'); } diff --git a/x-pack/plugins/alerts/server/task_runner/transform_action_params.test.ts b/x-pack/plugins/alerts/server/task_runner/transform_action_params.test.ts index 9a4cfbbca792d4..782b9fc07207b5 100644 --- a/x-pack/plugins/alerts/server/task_runner/transform_action_params.test.ts +++ b/x-pack/plugins/alerts/server/task_runner/transform_action_params.test.ts @@ -25,6 +25,7 @@ test('skips non string parameters', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: { foo: 'test', }, @@ -56,6 +57,7 @@ test('missing parameters get emptied out', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -80,6 +82,7 @@ test('context parameters are passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -103,6 +106,7 @@ test('state parameters are passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -126,6 +130,7 @@ test('alertId is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -149,6 +154,7 @@ test('alertName is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -172,6 +178,7 @@ test('tags is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -194,6 +201,7 @@ test('undefined tags is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -217,6 +225,7 @@ test('empty tags is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -240,6 +249,7 @@ test('spaceId is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -263,6 +273,7 @@ test('alertInstanceId is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -286,6 +297,7 @@ test('alertActionGroup is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -295,6 +307,30 @@ test('alertActionGroup is passed to templates', () => { `); }); +test('alertActionGroupName is passed to templates', () => { + const actionParams = { + message: 'Value "{{alertActionGroupName}}" exists', + }; + const result = transformActionParams({ + actionParams, + state: {}, + context: {}, + alertId: '1', + alertName: 'alert-name', + tags: ['tag-A', 'tag-B'], + spaceId: 'spaceId-A', + alertInstanceId: '2', + alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', + alertParams: {}, + }); + expect(result).toMatchInlineSnapshot(` + Object { + "message": "Value \\"Action Group\\" exists", + } + `); +}); + test('date is passed to templates', () => { const actionParams = { message: '{{date}}', @@ -310,6 +346,7 @@ test('date is passed to templates', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); const dateAfter = Date.now(); @@ -335,6 +372,7 @@ test('works recursively', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` @@ -362,6 +400,7 @@ test('works recursively with arrays', () => { spaceId: 'spaceId-A', alertInstanceId: '2', alertActionGroup: 'action-group', + alertActionGroupName: 'Action Group', alertParams: {}, }); expect(result).toMatchInlineSnapshot(` diff --git a/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts b/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts index b02285d56aa9a3..fa4a5b7f1b4ab6 100644 --- a/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts +++ b/x-pack/plugins/alerts/server/task_runner/transform_action_params.ts @@ -20,6 +20,7 @@ interface TransformActionParamsOptions { tags?: string[]; alertInstanceId: string; alertActionGroup: string; + alertActionGroupName: string; actionParams: AlertActionParams; alertParams: AlertTypeParams; state: AlertInstanceState; @@ -33,6 +34,7 @@ export function transformActionParams({ tags, alertInstanceId, alertActionGroup, + alertActionGroupName, context, actionParams, state, @@ -51,6 +53,7 @@ export function transformActionParams({ tags, alertInstanceId, alertActionGroup, + alertActionGroupName, context, date: new Date().toISOString(), state, diff --git a/x-pack/plugins/alerts/server/types.ts b/x-pack/plugins/alerts/server/types.ts index 500c681a1d2b94..7847b6f6249a8e 100644 --- a/x-pack/plugins/alerts/server/types.ts +++ b/x-pack/plugins/alerts/server/types.ts @@ -96,6 +96,7 @@ export interface AlertType< }; actionGroups: ActionGroup[]; defaultActionGroupId: ActionGroup['id']; + recoveryActionGroup?: ActionGroup; executor: ({ services, params, diff --git a/x-pack/plugins/apm/common/agent_configuration/runtime_types/log_level_rt.ts b/x-pack/plugins/apm/common/agent_configuration/runtime_types/log_level_rt.ts new file mode 100644 index 00000000000000..b488faa8e8fdc9 --- /dev/null +++ b/x-pack/plugins/apm/common/agent_configuration/runtime_types/log_level_rt.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as t from 'io-ts'; + +export const logLevelRt = t.union([ + t.literal('trace'), + t.literal('debug'), + t.literal('info'), + t.literal('warning'), + t.literal('error'), + t.literal('critical'), + t.literal('off'), +]); diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap index 2962a5fd2df3b1..fc42af5ff77243 100644 --- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap +++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/__snapshots__/index.test.ts.snap @@ -64,8 +64,38 @@ Array [ }, Object { "key": "log_level", - "type": "text", - "validationName": "string", + "options": Array [ + Object { + "text": "trace", + "value": "trace", + }, + Object { + "text": "debug", + "value": "debug", + }, + Object { + "text": "info", + "value": "info", + }, + Object { + "text": "warning", + "value": "warning", + }, + Object { + "text": "error", + "value": "error", + }, + Object { + "text": "critical", + "value": "critical", + }, + Object { + "text": "off", + "value": "off", + }, + ], + "type": "select", + "validationName": "(\\"trace\\" | \\"debug\\" | \\"info\\" | \\"warning\\" | \\"error\\" | \\"critical\\" | \\"off\\")", }, Object { "key": "profiling_inferred_spans_enabled", @@ -110,6 +140,11 @@ Array [ "type": "boolean", "validationName": "(\\"true\\" | \\"false\\")", }, + Object { + "key": "sanitize_field_names", + "type": "text", + "validationName": "string", + }, Object { "key": "server_timeout", "min": "1ms", @@ -170,6 +205,11 @@ Array [ "type": "float", "validationName": "floatRt", }, + Object { + "key": "transaction_ignore_urls", + "type": "text", + "validationName": "string", + }, Object { "key": "transaction_max_spans", "max": undefined, diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts index e777e1fd09d0bc..43b37482312903 100644 --- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts +++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/general_settings.ts @@ -6,6 +6,7 @@ import { i18n } from '@kbn/i18n'; import { captureBodyRt } from '../runtime_types/capture_body_rt'; +import { logLevelRt } from '../runtime_types/log_level_rt'; import { RawSettingDefinition } from './types'; export const generalSettings: RawSettingDefinition[] = [ @@ -91,7 +92,8 @@ export const generalSettings: RawSettingDefinition[] = [ // LOG_LEVEL { key: 'log_level', - type: 'text', + validation: logLevelRt, + type: 'select', defaultValue: 'info', label: i18n.translate('xpack.apm.agentConfig.logLevel.label', { defaultMessage: 'Log level', @@ -99,7 +101,16 @@ export const generalSettings: RawSettingDefinition[] = [ description: i18n.translate('xpack.apm.agentConfig.logLevel.description', { defaultMessage: 'Sets the logging level for the agent', }), - includeAgents: ['dotnet', 'ruby'], + options: [ + { text: 'trace', value: 'trace' }, + { text: 'debug', value: 'debug' }, + { text: 'info', value: 'info' }, + { text: 'warning', value: 'warning' }, + { text: 'error', value: 'error' }, + { text: 'critical', value: 'critical' }, + { text: 'off', value: 'off' }, + ], + includeAgents: ['dotnet', 'ruby', 'java', 'python'], }, // Recording @@ -207,4 +218,42 @@ export const generalSettings: RawSettingDefinition[] = [ } ), }, + + // Sanitize field names + { + key: 'sanitize_field_names', + type: 'text', + defaultValue: + 'password, passwd, pwd, secret, *key, *token*, *session*, *credit*, *card*, authorization, set-cookie', + label: i18n.translate('xpack.apm.agentConfig.sanitizeFiledNames.label', { + defaultMessage: 'Sanitize field names', + }), + description: i18n.translate( + 'xpack.apm.agentConfig.sanitizeFiledNames.description', + { + defaultMessage: + 'Sometimes it is necessary to sanitize, i.e., remove, sensitive data sent to Elastic APM. This config accepts a list of wildcard patterns of field names which should be sanitized. These apply to HTTP headers (including cookies) and `application/x-www-form-urlencoded` data (POST form fields). The query string and the captured request body (such as `application/json` data) will not get sanitized.', + } + ), + includeAgents: ['java', 'python'], + }, + + // Ignore transactions based on URLs + { + key: 'transaction_ignore_urls', + type: 'text', + defaultValue: + 'Agent specific - check out the documentation of this config option in the corresponding agent documentation.', + label: i18n.translate('xpack.apm.agentConfig.transactionIgnoreUrl.label', { + defaultMessage: 'Ignore transactions based on URLs', + }), + description: i18n.translate( + 'xpack.apm.agentConfig.transactionIgnoreUrl.description', + { + defaultMessage: + 'Used to restrict requests to certain URLs from being instrumented. This config accepts a comma-separated list of wildcard patterns of URL paths that should be ignored. When an incoming HTTP request is detected, its request path will be tested against each element in this list. For example, adding `/home/index` to this list would match and remove instrumentation from `http://localhost/home/index` as well as `http://whatever.com/home/index?value1=123`', + } + ), + includeAgents: ['java'], + }, ]; diff --git a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts index 1f247813104ec3..c9637f20a51bc4 100644 --- a/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts +++ b/x-pack/plugins/apm/common/agent_configuration/setting_definitions/index.test.ts @@ -61,12 +61,14 @@ describe('filterByAgent', () => { 'capture_headers', 'circuit_breaker_enabled', 'enable_log_correlation', + 'log_level', 'profiling_inferred_spans_enabled', 'profiling_inferred_spans_excluded_classes', 'profiling_inferred_spans_included_classes', 'profiling_inferred_spans_min_duration', 'profiling_inferred_spans_sampling_interval', 'recording', + 'sanitize_field_names', 'server_timeout', 'span_frames_min_duration', 'stack_trace_limit', @@ -75,6 +77,7 @@ describe('filterByAgent', () => { 'stress_monitor_gc_stress_threshold', 'stress_monitor_system_cpu_relief_threshold', 'stress_monitor_system_cpu_stress_threshold', + 'transaction_ignore_urls', 'transaction_max_spans', 'transaction_sample_rate', ]); @@ -108,7 +111,9 @@ describe('filterByAgent', () => { 'api_request_time', 'capture_body', 'capture_headers', + 'log_level', 'recording', + 'sanitize_field_names', 'span_frames_min_duration', 'transaction_max_spans', 'transaction_sample_rate', diff --git a/x-pack/plugins/apm/common/agent_name.test.ts b/x-pack/plugins/apm/common/agent_name.test.ts new file mode 100644 index 00000000000000..10afefc264ae9b --- /dev/null +++ b/x-pack/plugins/apm/common/agent_name.test.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { isJavaAgentName, isRumAgentName } from './agent_name'; + +describe('agent name helpers', () => { + describe('isJavaAgentName', () => { + describe('when the agent name is java', () => { + it('returns true', () => { + expect(isJavaAgentName('java')).toEqual(true); + }); + }); + describe('when the agent name is not java', () => { + it('returns true', () => { + expect(isJavaAgentName('not java')).toEqual(false); + }); + }); + }); + + describe('isRumAgentName', () => { + describe('when the agent name is js-base', () => { + it('returns true', () => { + expect(isRumAgentName('js-base')).toEqual(true); + }); + }); + + describe('when the agent name is rum-js', () => { + it('returns true', () => { + expect(isRumAgentName('rum-js')).toEqual(true); + }); + }); + + describe('when the agent name is opentelemetry/webjs', () => { + it('returns true', () => { + expect(isRumAgentName('opentelemetry/webjs')).toEqual(true); + }); + }); + + describe('when the agent name something else', () => { + it('returns true', () => { + expect(isRumAgentName('java')).toEqual(false); + }); + }); + }); +}); diff --git a/x-pack/plugins/apm/common/agent_name.ts b/x-pack/plugins/apm/common/agent_name.ts index ca9e59e050c95c..7fb79aa59595be 100644 --- a/x-pack/plugins/apm/common/agent_name.ts +++ b/x-pack/plugins/apm/common/agent_name.ts @@ -46,14 +46,14 @@ export const RUM_AGENT_NAMES: AgentName[] = [ 'opentelemetry/webjs', ]; -export function isRumAgentName( - agentName?: string -): agentName is 'js-base' | 'rum-js' | 'opentelemetry/webjs' { - return RUM_AGENT_NAMES.includes(agentName! as AgentName); -} - export function isJavaAgentName( agentName: string | undefined ): agentName is 'java' { return agentName === 'java'; } + +export function isRumAgentName( + agentName?: string +): agentName is 'js-base' | 'rum-js' | 'opentelemetry/webjs' { + return RUM_AGENT_NAMES.includes(agentName! as AgentName); +} diff --git a/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts b/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts index 733fb7bb5eea1f..76f01c170ba995 100644 --- a/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts +++ b/x-pack/plugins/apm/common/utils/formatters/datetime.test.ts @@ -73,19 +73,37 @@ describe('date time formatters', () => { const dateRange = asRelativeDateTimeRange(start, end); expect(dateRange).toEqual('Oct 29, 2019, 10:01 - 15:01 (UTC+1)'); }); - }); - describe('MMM D, YYYY, HH:mm:ss - HH:mm:ss (UTC)', () => { it('range: 14 minutes', () => { const start = formatDateToTimezone('2019-10-29 10:01:01'); const end = formatDateToTimezone('2019-10-29 10:15:01'); const dateRange = asRelativeDateTimeRange(start, end); - expect(dateRange).toEqual('Oct 29, 2019, 10:01:01 - 10:15:01 (UTC+1)'); + expect(dateRange).toEqual('Oct 29, 2019, 10:01 - 10:15 (UTC+1)'); }); it('range: 5 minutes', () => { const start = formatDateToTimezone('2019-10-29 10:01:01'); const end = formatDateToTimezone('2019-10-29 10:06:01'); const dateRange = asRelativeDateTimeRange(start, end); - expect(dateRange).toEqual('Oct 29, 2019, 10:01:01 - 10:06:01 (UTC+1)'); + expect(dateRange).toEqual('Oct 29, 2019, 10:01 - 10:06 (UTC+1)'); + }); + it('range: 1 minute', () => { + const start = formatDateToTimezone('2019-10-29 10:01:01'); + const end = formatDateToTimezone('2019-10-29 10:02:01'); + const dateRange = asRelativeDateTimeRange(start, end); + expect(dateRange).toEqual('Oct 29, 2019, 10:01 - 10:02 (UTC+1)'); + }); + }); + describe('MMM D, YYYY, HH:mm:ss - HH:mm:ss (UTC)', () => { + it('range: 50 seconds', () => { + const start = formatDateToTimezone('2019-10-29 10:01:01'); + const end = formatDateToTimezone('2019-10-29 10:01:50'); + const dateRange = asRelativeDateTimeRange(start, end); + expect(dateRange).toEqual('Oct 29, 2019, 10:01:01 - 10:01:50 (UTC+1)'); + }); + it('range: 10 seconds', () => { + const start = formatDateToTimezone('2019-10-29 10:01:01'); + const end = formatDateToTimezone('2019-10-29 10:01:11'); + const dateRange = asRelativeDateTimeRange(start, end); + expect(dateRange).toEqual('Oct 29, 2019, 10:01:01 - 10:01:11 (UTC+1)'); }); }); describe('MMM D, YYYY, HH:mm:ss.SSS - HH:mm:ss.SSS (UTC)', () => { diff --git a/x-pack/plugins/apm/common/utils/formatters/datetime.ts b/x-pack/plugins/apm/common/utils/formatters/datetime.ts index da08b3f49edcef..6da71512befc57 100644 --- a/x-pack/plugins/apm/common/utils/formatters/datetime.ts +++ b/x-pack/plugins/apm/common/utils/formatters/datetime.ts @@ -80,14 +80,14 @@ function getFormatsAccordingToDateDifference( return { dateFormat: dateFormatWithDays }; } - if (getDateDifference(start, end, 'hours') >= 5) { + if (getDateDifference(start, end, 'minutes') >= 1) { return { dateFormat: dateFormatWithDays, timeFormat: getTimeFormat('minutes'), }; } - if (getDateDifference(start, end, 'minutes') >= 5) { + if (getDateDifference(start, end, 'seconds') >= 10) { return { dateFormat: dateFormatWithDays, timeFormat: getTimeFormat('seconds'), @@ -121,8 +121,8 @@ export function asAbsoluteDateTime( * | >= 5 years | YYYY - YYYY | * | >= 5 months | MMM YYYY - MMM YYYY | * | > 1 day | MMM D, YYYY - MMM D, YYYY | - * | >= 5 hours | MMM D, YYYY, HH:mm - HH:mm (UTC) | - * | >= 5 minutes | MMM D, YYYY, HH:mm:ss - HH:mm:ss (UTC) | + * | >= 1 minute | MMM D, YYYY, HH:mm - HH:mm (UTC) | + * | >= 10 seconds | MMM D, YYYY, HH:mm:ss - HH:mm:ss (UTC) | * | default | MMM D, YYYY, HH:mm:ss.SSS - HH:mm:ss.SSS (UTC) | * * @param start timestamp diff --git a/x-pack/plugins/apm/common/utils/formatters/formatters.ts b/x-pack/plugins/apm/common/utils/formatters/formatters.ts index 2314e915e3161c..50ce9db096610f 100644 --- a/x-pack/plugins/apm/common/utils/formatters/formatters.ts +++ b/x-pack/plugins/apm/common/utils/formatters/formatters.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ import numeral from '@elastic/numeral'; -import { i18n } from '@kbn/i18n'; import { Maybe } from '../../../typings/common'; import { NOT_AVAILABLE_LABEL } from '../../i18n'; import { isFiniteNumber } from '../is_finite_number'; @@ -17,16 +16,6 @@ export function asInteger(value: number) { return numeral(value).format('0,0'); } -export function tpmUnit(type?: string) { - return type === 'request' - ? i18n.translate('xpack.apm.formatters.requestsPerMinLabel', { - defaultMessage: 'rpm', - }) - : i18n.translate('xpack.apm.formatters.transactionsPerMinLabel', { - defaultMessage: 'tpm', - }); -} - export function asPercent( numerator: Maybe, denominator: number | undefined, diff --git a/x-pack/plugins/apm/jest.config.js b/x-pack/plugins/apm/jest.config.js index 849dd7f5c3e2df..827e7e293cd8c9 100644 --- a/x-pack/plugins/apm/jest.config.js +++ b/x-pack/plugins/apm/jest.config.js @@ -3,40 +3,10 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - -// This is an APM-specific Jest configuration which overrides the x-pack -// configuration. It's intended for use in development and does not run in CI, -// which runs the entire x-pack suite. Run `npx jest`. - -require('../../../src/setup_node_env'); - -const { createJestConfig } = require('../../dev-tools/jest/create_jest_config'); -const { resolve } = require('path'); - -const rootDir = resolve(__dirname, '.'); -const xPackKibanaDirectory = resolve(__dirname, '../..'); -const kibanaDirectory = resolve(__dirname, '../../..'); - -const jestConfig = createJestConfig({ - kibanaDirectory, - rootDir, - xPackKibanaDirectory, -}); +const path = require('path'); module.exports = { - ...jestConfig, - reporters: ['default'], - roots: [`${rootDir}/common`, `${rootDir}/public`, `${rootDir}/server`], - collectCoverage: true, - collectCoverageFrom: [ - ...(jestConfig.collectCoverageFrom || []), - '**/*.{js,mjs,jsx,ts,tsx}', - '!**/*.stories.{js,mjs,ts,tsx}', - '!**/dev_docs/**', - '!**/e2e/**', - '!**/target/**', - '!**/typings/**', - ], - coverageDirectory: `${rootDir}/target/coverage/jest`, - coverageReporters: ['html'], + preset: '@kbn/test', + rootDir: path.resolve(__dirname, '../../..'), + roots: ['/x-pack/plugins/apm'], }; diff --git a/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.test.tsx b/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.test.tsx index b90f606d276eb1..399a24a8bc1650 100644 --- a/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.test.tsx +++ b/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render, fireEvent, waitFor } from '@testing-library/react'; import { MissingJobsAlert } from './anomaly_detection_setup_link'; -import * as hooks from '../../hooks/useFetcher'; +import * as hooks from '../../hooks/use_fetcher'; async function renderTooltipAnchor({ jobs, diff --git a/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.tsx b/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.tsx index e6fc80ed7c3b7f..8a1d73c8189445 100644 --- a/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.tsx +++ b/x-pack/plugins/apm/public/application/action_menu/anomaly_detection_setup_link.tsx @@ -16,14 +16,14 @@ import { getEnvironmentLabel, } from '../../../common/environment_filter_values'; import { getAPMHref } from '../../components/shared/Links/apm/APMLink'; -import { useApmPluginContext } from '../../hooks/useApmPluginContext'; -import { FETCH_STATUS, useFetcher } from '../../hooks/useFetcher'; -import { useLicense } from '../../hooks/useLicense'; -import { useUrlParams } from '../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../context/apm_plugin/use_apm_plugin_context'; +import { FETCH_STATUS, useFetcher } from '../../hooks/use_fetcher'; +import { useLicenseContext } from '../../context/license/use_license_context'; +import { useUrlParams } from '../../context/url_params_context/use_url_params'; import { APIReturnType } from '../../services/rest/createCallApmApi'; import { units } from '../../style/variables'; -export type AnomalyDetectionApiResponse = APIReturnType<'GET /api/apm/settings/anomaly-detection'>; +export type AnomalyDetectionApiResponse = APIReturnType<'GET /api/apm/settings/anomaly-detection/jobs'>; const DEFAULT_DATA = { jobs: [], hasLegacyJobs: false }; @@ -32,7 +32,7 @@ export function AnomalyDetectionSetupLink() { const environment = uiFilters.environment; const { core } = useApmPluginContext(); const canGetJobs = !!core.application.capabilities.ml?.canGetJobs; - const license = useLicense(); + const license = useLicenseContext(); const hasValidLicense = license?.isActive && license?.hasAtLeast('platinum'); const { basePath } = core.http; @@ -57,7 +57,7 @@ export function AnomalyDetectionSetupLink() { export function MissingJobsAlert({ environment }: { environment?: string }) { const { data = DEFAULT_DATA, status } = useFetcher( (callApmApi) => - callApmApi({ endpoint: `GET /api/apm/settings/anomaly-detection` }), + callApmApi({ endpoint: `GET /api/apm/settings/anomaly-detection/jobs` }), [], { preservePreviousData: false, showToastOnError: false } ); diff --git a/x-pack/plugins/apm/public/application/action_menu/index.tsx b/x-pack/plugins/apm/public/application/action_menu/index.tsx index 1713ef61fac1ee..438eb2bca7f243 100644 --- a/x-pack/plugins/apm/public/application/action_menu/index.tsx +++ b/x-pack/plugins/apm/public/application/action_menu/index.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { useParams } from 'react-router-dom'; import { getAlertingCapabilities } from '../../components/alerting/get_alert_capabilities'; import { getAPMHref } from '../../components/shared/Links/apm/APMLink'; -import { useApmPluginContext } from '../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../context/apm_plugin/use_apm_plugin_context'; import { AlertingPopoverAndFlyout } from './alerting_popover_flyout'; import { AnomalyDetectionSetupLink } from './anomaly_detection_setup_link'; diff --git a/x-pack/plugins/apm/public/application/application.test.tsx b/x-pack/plugins/apm/public/application/application.test.tsx index 75b7835c13151b..57e5e4b49bd40b 100644 --- a/x-pack/plugins/apm/public/application/application.test.tsx +++ b/x-pack/plugins/apm/public/application/application.test.tsx @@ -8,11 +8,13 @@ import { act } from '@testing-library/react'; import { createMemoryHistory } from 'history'; import { Observable } from 'rxjs'; import { AppMountParameters, CoreStart, HttpSetup } from 'src/core/public'; -import { mockApmPluginContextValue } from '../context/ApmPluginContext/MockApmPluginContext'; -import { ApmPluginSetupDeps } from '../plugin'; +import { mockApmPluginContextValue } from '../context/apm_plugin/mock_apm_plugin_context'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { renderApp } from './'; import { disableConsoleWarning } from '../utils/testHelpers'; +import { dataPluginMock } from 'src/plugins/data/public/mocks'; +import { embeddablePluginMock } from 'src/plugins/embeddable/public/mocks'; jest.mock('../services/rest/index_pattern', () => ({ createStaticIndexPattern: () => Promise.resolve(undefined), @@ -41,7 +43,7 @@ describe('renderApp', () => { const plugins = { licensing: { license$: new Observable() }, triggersActionsUi: { actionTypeRegistry: {}, alertTypeRegistry: {} }, - usageCollection: { reportUiStats: () => {} }, + usageCollection: { reportUiCounter: () => {} }, data: { query: { timefilter: { @@ -55,6 +57,19 @@ describe('renderApp', () => { history: createMemoryHistory(), setHeaderActionMenu: () => {}, }; + + const data = dataPluginMock.createStartContract(); + const embeddable = embeddablePluginMock.createStartContract(); + const startDeps = { + triggersActionsUi: { + actionTypeRegistry: {}, + alertTypeRegistry: {}, + getAddAlertFlyout: jest.fn(), + getEditAlertFlyout: jest.fn(), + }, + data, + embeddable, + }; jest.spyOn(window, 'scrollTo').mockReturnValueOnce(undefined); createCallApmApi((core.http as unknown) as HttpSetup); @@ -75,7 +90,8 @@ describe('renderApp', () => { (core as unknown) as CoreStart, (plugins as unknown) as ApmPluginSetupDeps, (params as unknown) as AppMountParameters, - config + config, + (startDeps as unknown) as ApmPluginStartDeps ); }); diff --git a/x-pack/plugins/apm/public/application/csmApp.tsx b/x-pack/plugins/apm/public/application/csmApp.tsx index 7fcbe7c518cd0b..4d16643a83fe98 100644 --- a/x-pack/plugins/apm/public/application/csmApp.tsx +++ b/x-pack/plugins/apm/public/application/csmApp.tsx @@ -20,8 +20,8 @@ import { APMRouteDefinition } from '../application/routes'; import { renderAsRedirectTo } from '../components/app/Main/route_config'; import { ScrollToTopOnPathChange } from '../components/app/Main/ScrollToTopOnPathChange'; import { RumHome, UX_LABEL } from '../components/app/RumDashboard/RumHome'; -import { ApmPluginContext } from '../context/ApmPluginContext'; -import { UrlParamsProvider } from '../context/UrlParamsContext'; +import { ApmPluginContext } from '../context/apm_plugin/apm_plugin_context'; +import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; import { ConfigSchema } from '../index'; import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; diff --git a/x-pack/plugins/apm/public/application/index.tsx b/x-pack/plugins/apm/public/application/index.tsx index 79c29867cb8e31..16b3aaf9a6cd86 100644 --- a/x-pack/plugins/apm/public/application/index.tsx +++ b/x-pack/plugins/apm/public/application/index.tsx @@ -19,17 +19,16 @@ import { RedirectAppLinks, useUiSetting$, } from '../../../../../src/plugins/kibana_react/public'; -import { AlertsContextProvider } from '../../../triggers_actions_ui/public'; import { routes } from '../components/app/Main/route_config'; import { ScrollToTopOnPathChange } from '../components/app/Main/ScrollToTopOnPathChange'; import { ApmPluginContext, ApmPluginContextValue, -} from '../context/ApmPluginContext'; -import { LicenseProvider } from '../context/LicenseContext'; -import { UrlParamsProvider } from '../context/UrlParamsContext'; +} from '../context/apm_plugin/apm_plugin_context'; +import { LicenseProvider } from '../context/license/license_context'; +import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; import { useBreadcrumbs } from '../hooks/use_breadcrumbs'; -import { ApmPluginSetupDeps } from '../plugin'; +import { ApmPluginSetupDeps, ApmPluginStartDeps } from '../plugin'; import { createCallApmApi } from '../services/rest/createCallApmApi'; import { createStaticIndexPattern } from '../services/rest/index_pattern'; import { setHelpExtension } from '../setHelpExtension'; @@ -66,38 +65,29 @@ function App() { export function ApmAppRoot({ apmPluginContextValue, + startDeps, }: { apmPluginContextValue: ApmPluginContextValue; + startDeps: ApmPluginStartDeps; }) { - const { appMountParameters, core, plugins } = apmPluginContextValue; + const { appMountParameters, core } = apmPluginContextValue; const { history } = appMountParameters; const i18nCore = core.i18n; return ( - - - - - - - - - - - - - + + + + + + + + + + + ); @@ -111,7 +101,8 @@ export const renderApp = ( core: CoreStart, setupDeps: ApmPluginSetupDeps, appMountParameters: AppMountParameters, - config: ConfigSchema + config: ConfigSchema, + startDeps: ApmPluginStartDeps ) => { const { element } = appMountParameters; const apmPluginContextValue = { @@ -133,7 +124,10 @@ export const renderApp = ( }); ReactDOM.render( - , + , element ); return () => { diff --git a/x-pack/plugins/apm/public/components/alerting/AlertingFlyout/index.tsx b/x-pack/plugins/apm/public/components/alerting/AlertingFlyout/index.tsx index 3bee6b2388264c..aa1d21dd1d580c 100644 --- a/x-pack/plugins/apm/public/components/alerting/AlertingFlyout/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/AlertingFlyout/index.tsx @@ -3,29 +3,37 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { useMemo } from 'react'; +import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import { AlertType } from '../../../../common/alert_types'; -import { AlertAdd } from '../../../../../triggers_actions_ui/public'; - -type AlertAddProps = React.ComponentProps; +import { TriggersAndActionsUIPublicPluginStart } from '../../../../../triggers_actions_ui/public'; interface Props { - addFlyoutVisible: AlertAddProps['addFlyoutVisible']; - setAddFlyoutVisibility: AlertAddProps['setAddFlyoutVisibility']; + addFlyoutVisible: boolean; + setAddFlyoutVisibility: React.Dispatch>; alertType: AlertType | null; } +interface KibanaDeps { + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; +} + export function AlertingFlyout(props: Props) { const { addFlyoutVisible, setAddFlyoutVisibility, alertType } = props; - return ( - alertType && ( - - ) + const { + services: { triggersActionsUi }, + } = useKibana(); + const addAlertFlyout = useMemo( + () => + alertType && + triggersActionsUi.getAddAlertFlyout({ + consumer: 'apm', + addFlyoutVisible, + setAddFlyoutVisibility, + alertTypeId: alertType, + canChangeTrigger: false, + }), + [addFlyoutVisible, alertType, setAddFlyoutVisibility, triggersActionsUi] ); + return <>{addAlertFlyout}; } diff --git a/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.stories.tsx b/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.stories.tsx index 1a565ab8708bc5..f4f2be0a6e8897 100644 --- a/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.stories.tsx +++ b/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.stories.tsx @@ -7,11 +7,11 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import { ErrorCountAlertTrigger } from '.'; -import { ApmPluginContextValue } from '../../../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../../../context/ApmPluginContext/MockApmPluginContext'; +} from '../../../context/apm_plugin/mock_apm_plugin_context'; export default { title: 'app/ErrorCountAlertTrigger', diff --git a/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.tsx b/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.tsx index a465b90e7bf05f..efa792ff442734 100644 --- a/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/ErrorCountAlertTrigger/index.tsx @@ -10,8 +10,8 @@ import { useParams } from 'react-router-dom'; import { ForLastExpression } from '../../../../../triggers_actions_ui/public'; import { ALERT_TYPES_CONFIG, AlertType } from '../../../../common/alert_types'; import { ENVIRONMENT_ALL } from '../../../../common/environment_filter_values'; -import { useEnvironments } from '../../../hooks/useEnvironments'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useEnvironmentsFetcher } from '../../../hooks/use_environments_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { EnvironmentField, ServiceField, IsAboveField } from '../fields'; import { ServiceAlertTrigger } from '../ServiceAlertTrigger'; @@ -34,7 +34,11 @@ export function ErrorCountAlertTrigger(props: Props) { const { serviceName } = useParams<{ serviceName?: string }>(); const { urlParams } = useUrlParams(); const { start, end } = urlParams; - const { environmentOptions } = useEnvironments({ serviceName, start, end }); + const { environmentOptions } = useEnvironmentsFetcher({ + serviceName, + start, + end, + }); const defaults = { threshold: 25, diff --git a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.stories.tsx b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.stories.tsx index d20aae29fb8ce5..8b2d4e235ac256 100644 --- a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.stories.tsx +++ b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.stories.tsx @@ -8,12 +8,12 @@ import { cloneDeep, merge } from 'lodash'; import React, { ComponentType } from 'react'; import { MemoryRouter, Route } from 'react-router-dom'; import { TransactionDurationAlertTrigger } from '.'; -import { ApmPluginContextValue } from '../../../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { MockUrlParamsContextProvider } from '../../../context/UrlParamsContext/MockUrlParamsContextProvider'; +} from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; export default { title: 'app/TransactionDurationAlertTrigger', diff --git a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.tsx b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.tsx index ce98354c94c7eb..3566850aa24c46 100644 --- a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAlertTrigger/index.tsx @@ -10,9 +10,8 @@ import { map } from 'lodash'; import React from 'react'; import { ForLastExpression } from '../../../../../triggers_actions_ui/public'; import { ALERT_TYPES_CONFIG } from '../../../../common/alert_types'; -import { useEnvironments } from '../../../hooks/useEnvironments'; -import { useServiceTransactionTypes } from '../../../hooks/useServiceTransactionTypes'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useEnvironmentsFetcher } from '../../../hooks/use_environments_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { ServiceAlertTrigger } from '../ServiceAlertTrigger'; import { PopoverExpression } from '../ServiceAlertTrigger/PopoverExpression'; import { ENVIRONMENT_ALL } from '../../../../common/environment_filter_values'; @@ -22,6 +21,7 @@ import { TransactionTypeField, IsAboveField, } from '../fields'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; interface AlertParams { windowSize: number; @@ -63,10 +63,14 @@ interface Props { export function TransactionDurationAlertTrigger(props: Props) { const { setAlertParams, alertParams, setAlertProperty } = props; const { urlParams } = useUrlParams(); - const transactionTypes = useServiceTransactionTypes(urlParams); + const { transactionTypes } = useApmServiceContext(); const { serviceName } = useParams<{ serviceName?: string }>(); const { start, end, transactionType } = urlParams; - const { environmentOptions } = useEnvironments({ serviceName, start, end }); + const { environmentOptions } = useEnvironmentsFetcher({ + serviceName, + start, + end, + }); if (!transactionTypes.length || !serviceName) { return null; diff --git a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAnomalyAlertTrigger/index.tsx b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAnomalyAlertTrigger/index.tsx index 4f87e131043714..ff5939c6013758 100644 --- a/x-pack/plugins/apm/public/components/alerting/TransactionDurationAnomalyAlertTrigger/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/TransactionDurationAnomalyAlertTrigger/index.tsx @@ -9,9 +9,8 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { ANOMALY_SEVERITY } from '../../../../../ml/common'; import { ALERT_TYPES_CONFIG } from '../../../../common/alert_types'; -import { useEnvironments } from '../../../hooks/useEnvironments'; -import { useServiceTransactionTypes } from '../../../hooks/useServiceTransactionTypes'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useEnvironmentsFetcher } from '../../../hooks/use_environments_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { ServiceAlertTrigger } from '../ServiceAlertTrigger'; import { PopoverExpression } from '../ServiceAlertTrigger/PopoverExpression'; import { @@ -24,6 +23,7 @@ import { ServiceField, TransactionTypeField, } from '../fields'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; interface Params { windowSize: number; @@ -47,10 +47,14 @@ interface Props { export function TransactionDurationAnomalyAlertTrigger(props: Props) { const { setAlertParams, alertParams, setAlertProperty } = props; const { urlParams } = useUrlParams(); - const transactionTypes = useServiceTransactionTypes(urlParams); + const { transactionTypes } = useApmServiceContext(); const { serviceName } = useParams<{ serviceName?: string }>(); const { start, end, transactionType } = urlParams; - const { environmentOptions } = useEnvironments({ serviceName, start, end }); + const { environmentOptions } = useEnvironmentsFetcher({ + serviceName, + start, + end, + }); if (serviceName && !transactionTypes.length) { return null; diff --git a/x-pack/plugins/apm/public/components/alerting/TransactionErrorRateAlertTrigger/index.tsx b/x-pack/plugins/apm/public/components/alerting/TransactionErrorRateAlertTrigger/index.tsx index a9ad212393ac47..f723febde389d6 100644 --- a/x-pack/plugins/apm/public/components/alerting/TransactionErrorRateAlertTrigger/index.tsx +++ b/x-pack/plugins/apm/public/components/alerting/TransactionErrorRateAlertTrigger/index.tsx @@ -7,9 +7,8 @@ import { useParams } from 'react-router-dom'; import React from 'react'; import { ForLastExpression } from '../../../../../triggers_actions_ui/public'; import { ALERT_TYPES_CONFIG, AlertType } from '../../../../common/alert_types'; -import { useEnvironments } from '../../../hooks/useEnvironments'; -import { useServiceTransactionTypes } from '../../../hooks/useServiceTransactionTypes'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useEnvironmentsFetcher } from '../../../hooks/use_environments_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { ServiceAlertTrigger } from '../ServiceAlertTrigger'; import { ENVIRONMENT_ALL } from '../../../../common/environment_filter_values'; @@ -19,6 +18,7 @@ import { EnvironmentField, IsAboveField, } from '../fields'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; interface AlertParams { windowSize: number; @@ -38,10 +38,14 @@ interface Props { export function TransactionErrorRateAlertTrigger(props: Props) { const { setAlertParams, alertParams, setAlertProperty } = props; const { urlParams } = useUrlParams(); - const transactionTypes = useServiceTransactionTypes(urlParams); + const { transactionTypes } = useApmServiceContext(); const { serviceName } = useParams<{ serviceName?: string }>(); const { start, end, transactionType } = urlParams; - const { environmentOptions } = useEnvironments({ serviceName, start, end }); + const { environmentOptions } = useEnvironmentsFetcher({ + serviceName, + start, + end, + }); if (serviceName && !transactionTypes.length) { return null; diff --git a/x-pack/plugins/apm/public/components/app/Correlations/ErrorCorrelations.tsx b/x-pack/plugins/apm/public/components/app/Correlations/ErrorCorrelations.tsx index 3ad71b52b6037d..07ab89afd41088 100644 --- a/x-pack/plugins/apm/public/components/app/Correlations/ErrorCorrelations.tsx +++ b/x-pack/plugins/apm/public/components/app/Correlations/ErrorCorrelations.tsx @@ -17,8 +17,8 @@ import { import React, { useState } from 'react'; import { useParams } from 'react-router-dom'; import { EuiTitle, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { useUrlParams } from '../../../hooks/useUrlParams'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { APIReturnType, callApmApi, diff --git a/x-pack/plugins/apm/public/components/app/Correlations/LatencyCorrelations.tsx b/x-pack/plugins/apm/public/components/app/Correlations/LatencyCorrelations.tsx index 4364731501b898..30659cf3f93191 100644 --- a/x-pack/plugins/apm/public/components/app/Correlations/LatencyCorrelations.tsx +++ b/x-pack/plugins/apm/public/components/app/Correlations/LatencyCorrelations.tsx @@ -19,8 +19,8 @@ import React, { useState } from 'react'; import { useParams } from 'react-router-dom'; import { EuiTitle, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { getDurationFormatter } from '../../../../common/utils/formatters'; -import { useUrlParams } from '../../../hooks/useUrlParams'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { APIReturnType, callApmApi, diff --git a/x-pack/plugins/apm/public/components/app/Correlations/SignificantTermsTable.tsx b/x-pack/plugins/apm/public/components/app/Correlations/SignificantTermsTable.tsx index b74517902f89be..350f64367b766f 100644 --- a/x-pack/plugins/apm/public/components/app/Correlations/SignificantTermsTable.tsx +++ b/x-pack/plugins/apm/public/components/app/Correlations/SignificantTermsTable.tsx @@ -10,7 +10,7 @@ import { useHistory } from 'react-router-dom'; import { EuiBasicTable } from '@elastic/eui'; import { asPercent, asInteger } from '../../../../common/utils/formatters'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { createHref } from '../../shared/Links/url_helpers'; type CorrelationsApiResponse = diff --git a/x-pack/plugins/apm/public/components/app/Correlations/index.tsx b/x-pack/plugins/apm/public/components/app/Correlations/index.tsx index b0f6b83485e39a..16a21e28fc08d7 100644 --- a/x-pack/plugins/apm/public/components/app/Correlations/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Correlations/index.tsx @@ -19,10 +19,10 @@ import { } from '@elastic/eui'; import { useHistory } from 'react-router-dom'; import { enableCorrelations } from '../../../../common/ui_settings_keys'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { LatencyCorrelations } from './LatencyCorrelations'; import { ErrorCorrelations } from './ErrorCorrelations'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { createHref } from '../../shared/Links/url_helpers'; export function Correlations() { diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx index 643064b2f31764..c0ce2ed388a12b 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx @@ -22,7 +22,7 @@ import { useHistory } from 'react-router-dom'; import styled from 'styled-components'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { APMError } from '../../../../../typings/es_schemas/ui/apm_error'; -import { IUrlParams } from '../../../../context/UrlParamsContext/types'; +import type { IUrlParams } from '../../../../context/url_params_context/types'; import { px, unit, units } from '../../../../style/variables'; import { TransactionDetailLink } from '../../../shared/Links/apm/TransactionDetailLink'; import { DiscoverErrorLink } from '../../../shared/Links/DiscoverLinks/DiscoverErrorLink'; diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx index 99316e3520a763..ab99c6ffa8da03 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/Distribution/index.tsx @@ -20,7 +20,7 @@ import d3 from 'd3'; import React from 'react'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { asRelativeDateTimeRange } from '../../../../../common/utils/formatters'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; type ErrorDistributionAPIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/errors/distribution'>; @@ -90,7 +90,12 @@ export function ErrorDistribution({ distribution, title }: Props) { showOverlappingTicks tickFormat={xFormatter} /> - + { - if (start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/errors/distribution', - params: { - path: { - serviceName, - }, - query: { - start, - end, - groupId, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, [serviceName, start, end, groupId, uiFilters]); + const { errorDistributionData } = useErrorGroupDistributionFetcher({ + serviceName, + groupId, + }); useTrackPageview({ app: 'apm', path: 'error_group_details' }); useTrackPageview({ app: 'apm', path: 'error_group_details', delay: 15000 }); diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/List.test.tsx b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/List.test.tsx index 84b72b62248b0f..4022caedadaabc 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/List.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/List.test.tsx @@ -6,8 +6,8 @@ import { mount } from 'enzyme'; import React from 'react'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; -import { MockUrlParamsContextProvider } from '../../../../../context/UrlParamsContext/MockUrlParamsContextProvider'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; +import { MockUrlParamsContextProvider } from '../../../../../context/url_params_context/mock_url_params_context_provider'; import { mockMoment, toJson } from '../../../../../utils/testHelpers'; import { ErrorGroupList } from '../index'; import props from './props.json'; diff --git a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap index 1f34a0cef1ccf5..4b332b69042828 100644 --- a/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/app/ErrorGroupOverview/List/__test__/__snapshots__/List.test.tsx.snap @@ -94,11 +94,6 @@ exports[`ErrorGroupOverview -> List should render empty state 1`] = ` >
List should render with data 1`] = ` >
{ - if (start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/errors/distribution', - params: { - path: { - serviceName, - }, - query: { - start, - end, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, [serviceName, start, end, uiFilters]); + const { errorDistributionData } = useErrorGroupDistributionFetcher({ + serviceName, + groupId: undefined, + }); const { data: errorGroupListData } = useFetcher(() => { const normalizedSortDirection = sortDirection === 'asc' ? 'asc' : 'desc'; diff --git a/x-pack/plugins/apm/public/components/app/Home/Home.test.tsx b/x-pack/plugins/apm/public/components/app/Home/Home.test.tsx index ab4ca1dfbb49d5..148e0733b93ca2 100644 --- a/x-pack/plugins/apm/public/components/app/Home/Home.test.tsx +++ b/x-pack/plugins/apm/public/components/app/Home/Home.test.tsx @@ -7,7 +7,7 @@ import { shallow } from 'enzyme'; import React from 'react'; import { Home } from '../Home'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; describe('Home component', () => { it('should render services', () => { diff --git a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx index 63fb69d6d7cbfb..839c087305bd85 100644 --- a/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Main/route_config/index.tsx @@ -7,6 +7,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { Redirect, RouteComponentProps } from 'react-router-dom'; +import { ApmServiceContextProvider } from '../../../../context/apm_service/apm_service_context'; import { UNIDENTIFIED_SERVICE_NODES_LABEL } from '../../../../../common/i18n'; import { SERVICE_NODE_NAME_MISSING } from '../../../../../common/service_nodes'; import { APMRouteDefinition } from '../../../../application/routes'; @@ -227,19 +228,19 @@ export const routes: APMRouteDefinition[] = [ breadcrumb: i18n.translate('xpack.apm.breadcrumb.overviewTitle', { defaultMessage: 'Overview', }), - component: ServiceDetailsOverview, + component: withApmServiceContext(ServiceDetailsOverview), } as APMRouteDefinition<{ serviceName: string }>, // errors { exact: true, path: '/services/:serviceName/errors/:groupId', - component: ErrorGroupDetails, + component: withApmServiceContext(ErrorGroupDetails), breadcrumb: ({ match }) => match.params.groupId, } as APMRouteDefinition<{ groupId: string; serviceName: string }>, { exact: true, path: '/services/:serviceName/errors', - component: ServiceDetailsErrors, + component: withApmServiceContext(ServiceDetailsErrors), breadcrumb: i18n.translate('xpack.apm.breadcrumb.errorsTitle', { defaultMessage: 'Errors', }), @@ -248,7 +249,7 @@ export const routes: APMRouteDefinition[] = [ { exact: true, path: '/services/:serviceName/transactions', - component: ServiceDetailsTransactions, + component: withApmServiceContext(ServiceDetailsTransactions), breadcrumb: i18n.translate('xpack.apm.breadcrumb.transactionsTitle', { defaultMessage: 'Transactions', }), @@ -257,7 +258,7 @@ export const routes: APMRouteDefinition[] = [ { exact: true, path: '/services/:serviceName/metrics', - component: ServiceDetailsMetrics, + component: withApmServiceContext(ServiceDetailsMetrics), breadcrumb: i18n.translate('xpack.apm.breadcrumb.metricsTitle', { defaultMessage: 'Metrics', }), @@ -266,7 +267,7 @@ export const routes: APMRouteDefinition[] = [ { exact: true, path: '/services/:serviceName/nodes', - component: ServiceDetailsNodes, + component: withApmServiceContext(ServiceDetailsNodes), breadcrumb: i18n.translate('xpack.apm.breadcrumb.nodesTitle', { defaultMessage: 'JVMs', }), @@ -275,7 +276,7 @@ export const routes: APMRouteDefinition[] = [ { exact: true, path: '/services/:serviceName/nodes/:serviceNodeName/metrics', - component: ServiceNodeMetrics, + component: withApmServiceContext(ServiceNodeMetrics), breadcrumb: ({ match }) => { const { serviceNodeName } = match.params; @@ -289,12 +290,20 @@ export const routes: APMRouteDefinition[] = [ { exact: true, path: '/services/:serviceName/transactions/view', - component: TransactionDetails, + component: withApmServiceContext(TransactionDetails), breadcrumb: ({ location }) => { const query = toQuery(location.search); return query.transactionName as string; }, }, + { + exact: true, + path: '/services/:serviceName/service-map', + component: withApmServiceContext(ServiceDetailsServiceMap), + breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', { + defaultMessage: 'Service Map', + }), + }, { exact: true, path: '/link-to/trace/:traceId', @@ -309,14 +318,6 @@ export const routes: APMRouteDefinition[] = [ defaultMessage: 'Service Map', }), }, - { - exact: true, - path: '/services/:serviceName/service-map', - component: ServiceDetailsServiceMap, - breadcrumb: i18n.translate('xpack.apm.breadcrumb.serviceMapTitle', { - defaultMessage: 'Service Map', - }), - }, { exact: true, path: '/settings/customize-ui', @@ -337,3 +338,13 @@ export const routes: APMRouteDefinition[] = [ ), }, ]; + +function withApmServiceContext(WrappedComponent: React.ComponentType) { + return (props: any) => { + return ( + + + + ); + }; +} diff --git a/x-pack/plugins/apm/public/components/app/Main/route_config/route_handlers/agent_configuration.tsx b/x-pack/plugins/apm/public/components/app/Main/route_config/route_handlers/agent_configuration.tsx index ac1668a54ab952..10c8417223c773 100644 --- a/x-pack/plugins/apm/public/components/app/Main/route_config/route_handlers/agent_configuration.tsx +++ b/x-pack/plugins/apm/public/components/app/Main/route_config/route_handlers/agent_configuration.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { RouteComponentProps } from 'react-router-dom'; -import { useFetcher } from '../../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../../hooks/use_fetcher'; import { toQuery } from '../../../../shared/Links/url_helpers'; import { Settings } from '../../../Settings'; import { AgentConfigurationCreateEdit } from '../../../Settings/AgentConfigurations/AgentConfigurationCreateEdit'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageViewsChart.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageViewsChart.tsx index 3787202f5dee4c..6a56dbf40b33b3 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageViewsChart.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/Charts/PageViewsChart.tsx @@ -27,7 +27,7 @@ import moment from 'moment'; import React from 'react'; import { useHistory } from 'react-router-dom'; import { useUiSetting$ } from '../../../../../../../../src/plugins/kibana_react/public'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; import { ChartWrapper } from '../ChartWrapper'; import { I18LABELS } from '../translations'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx index 237d33a6a89a38..9fdb34935fee5e 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/ClientMetrics/index.tsx @@ -14,7 +14,7 @@ import { EuiToolTip, EuiIconTip, } from '@elastic/eui'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { I18LABELS } from '../translations'; import { useUxQuery } from '../hooks/useUxQuery'; import { formatToSec } from '../UXMetrics/KeyUXMetrics'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/ImpactfulMetrics/JSErrors.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/ImpactfulMetrics/JSErrors.tsx index 4c4f7110cafb90..2e6c5c8e23ee52 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/ImpactfulMetrics/JSErrors.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/ImpactfulMetrics/JSErrors.tsx @@ -16,8 +16,8 @@ import { } from '@elastic/eui'; import numeral from '@elastic/numeral'; import { FormattedMessage } from '@kbn/i18n/react'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { I18LABELS } from '../translations'; import { CsmSharedContext } from '../CsmSharedContext'; import { ErrorDetailLink } from '../../../shared/Links/apm/ErrorDetailLink'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx index 4b94b98704da76..d7bc94e6564f19 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/index.tsx @@ -6,8 +6,8 @@ import React, { useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { I18LABELS } from '../translations'; import { BreakdownFilter } from '../Breakdowns/BreakdownFilter'; import { PageLoadDistChart } from '../Charts/PageLoadDistChart'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/use_breakdowns.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/use_breakdowns.ts index c3f4ab44179fe3..5c545a63d6d056 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/use_breakdowns.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageLoadDistribution/use_breakdowns.ts @@ -4,8 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useFetcher } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { PercentileRange } from './index'; interface Props { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx index 84668f4b06d772..b339cc7774d754 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/PageViewsTrend/index.tsx @@ -6,8 +6,8 @@ import React, { useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiTitle } from '@elastic/eui'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { I18LABELS } from '../translations'; import { BreakdownFilter } from '../Breakdowns/BreakdownFilter'; import { PageViewsChart } from '../Charts/PageViewsChart'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/Panels/MainFilters.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/Panels/MainFilters.tsx index 6c7e2e22a9893b..8d759d80352d79 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/Panels/MainFilters.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/Panels/MainFilters.tsx @@ -8,9 +8,9 @@ import React from 'react'; import { EuiFlexItem } from '@elastic/eui'; import { EnvironmentFilter } from '../../../shared/EnvironmentFilter'; import { ServiceNameFilter } from '../URLFilter/ServiceNameFilter'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { RUM_AGENT_NAMES } from '../../../../../common/agent_name'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { UserPercentile } from '../UserPercentile'; export function MainFilters() { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/RumDashboard.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/RumDashboard.tsx index e4e9109f007e75..c810bd3e7c4893 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/RumDashboard.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/RumDashboard.tsx @@ -20,7 +20,7 @@ import { PageLoadAndViews } from './Panels/PageLoadAndViews'; import { VisitorBreakdownsPanel } from './Panels/VisitorBreakdowns'; import { useBreakPoints } from './hooks/useBreakPoints'; import { getPercentileLabel } from './UXMetrics/translations'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; export function RumDashboard() { const { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/ServiceNameFilter/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/ServiceNameFilter/index.tsx index b70621b1e4cbc4..756014004cc9bb 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/ServiceNameFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/ServiceNameFilter/index.tsx @@ -8,7 +8,7 @@ import { EuiSelect } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useEffect, useCallback } from 'react'; import { useHistory } from 'react-router-dom'; -import { useUrlParams } from '../../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../../../../shared/Links/url_helpers'; interface Props { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/__tests__/SelectableUrlList.test.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/__tests__/SelectableUrlList.test.tsx index abafdf089748bf..a492938deffab6 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/__tests__/SelectableUrlList.test.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/__tests__/SelectableUrlList.test.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { createMemoryHistory } from 'history'; -import * as fetcherHook from '../../../../../../hooks/useFetcher'; +import * as fetcherHook from '../../../../../../hooks/use_fetcher'; import { SelectableUrlList } from '../SelectableUrlList'; import { render } from '../../../utils/test_helper'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx index 67692a9a8554b8..61f75a430706c1 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/URLSearch/index.tsx @@ -8,8 +8,8 @@ import useDebounce from 'react-use/lib/useDebounce'; import React, { useEffect, useState, FormEvent, useCallback } from 'react'; import { useHistory } from 'react-router-dom'; import { EuiTitle } from '@elastic/eui'; -import { useUrlParams } from '../../../../../hooks/useUrlParams'; -import { useFetcher } from '../../../../../hooks/useFetcher'; +import { useUrlParams } from '../../../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../../../hooks/use_fetcher'; import { I18LABELS } from '../../translations'; import { fromQuery, toQuery } from '../../../../shared/Links/url_helpers'; import { formatToSec } from '../../UXMetrics/KeyUXMetrics'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx index ef829ebf7f0cf5..655cdaaca933b0 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/URLFilter/index.tsx @@ -10,9 +10,9 @@ import { useHistory } from 'react-router-dom'; import { omit } from 'lodash'; import { URLSearch } from './URLSearch'; import { UrlList } from './UrlList'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; -import { removeUndefinedProps } from '../../../../context/UrlParamsContext/helpers'; +import { removeUndefinedProps } from '../../../../context/url_params_context/helpers'; import { LocalUIFilterName } from '../../../../../common/ui_filter'; export function URLFilter() { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx index 2ded35deb58f2d..690595caa6c0e0 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/KeyUXMetrics.tsx @@ -20,7 +20,7 @@ import { TBT_LABEL, TBT_TOOLTIP, } from './translations'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { useUxQuery } from '../hooks/useUxQuery'; import { UXMetrics } from '../../../../../../observability/public'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/__tests__/KeyUXMetrics.test.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/__tests__/KeyUXMetrics.test.tsx index 3a6323a747a702..baa9cb7dd74f9f 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/__tests__/KeyUXMetrics.test.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/__tests__/KeyUXMetrics.test.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { render } from '@testing-library/react'; -import * as fetcherHook from '../../../../../hooks/useFetcher'; +import * as fetcherHook from '../../../../../hooks/use_fetcher'; import { KeyUXMetrics } from '../KeyUXMetrics'; describe('KeyUXMetrics', () => { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx index 95a42ce3018f12..392b42cba12e57 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UXMetrics/index.tsx @@ -15,11 +15,11 @@ import { } from '@elastic/eui'; import { I18LABELS } from '../translations'; import { KeyUXMetrics } from './KeyUXMetrics'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { useUxQuery } from '../hooks/useUxQuery'; import { CoreVitals } from '../../../../../../observability/public'; import { CsmSharedContext } from '../CsmSharedContext'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { getPercentileLabel } from './translations'; export function UXMetrics() { diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx index 04c7e3cc00287f..260c775c7129b5 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/UserPercentile/index.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useEffect } from 'react'; import { EuiSelect } from '@elastic/eui'; import { useHistory } from 'react-router-dom'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../../../shared/Links/url_helpers'; import { I18LABELS } from '../translations'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx index ce9485690b9301..77d5697c317504 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdown/index.tsx @@ -8,8 +8,8 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiSpacer } from '@elastic/eui'; import { VisitorBreakdownChart } from '../Charts/VisitorBreakdownChart'; import { I18LABELS, VisitorBreakdownLabel } from '../translations'; -import { useFetcher } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; export function VisitorBreakdown() { const { urlParams, uiFilters } = useUrlParams(); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx index 3a5c3d80ca7d19..eff03c58e99912 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/EmbeddedMap.tsx @@ -21,7 +21,7 @@ import { isErrorEmbeddable, } from '../../../../../../../../src/plugins/embeddable/public'; import { useLayerList } from './useLayerList'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { RenderTooltipContentParams } from '../../../../../../maps/public'; import { MapToolTip } from './MapToolTip'; import { useMapFilters } from './useMapFilters'; diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useLayerList.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useLayerList.ts index a1cdf7bb646e5d..54bfa81f26add3 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useLayerList.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useLayerList.ts @@ -22,7 +22,7 @@ import { } from '../../../../../../maps/common/constants'; import { APM_STATIC_INDEX_PATTERN_ID } from '../../../../../../../../src/plugins/apm_oss/public'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { SERVICE_NAME, TRANSACTION_TYPE, diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts index 774ac23d231966..c5cf081311f66a 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/VisitorBreakdownMap/useMapFilters.ts @@ -5,7 +5,7 @@ */ import { useMemo } from 'react'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { FieldFilter as Filter } from '../../../../../../../../src/plugins/data/common'; import { CLIENT_GEO_COUNTRY_ISO_CODE, diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts b/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts index 16396dc9fc15bd..c8cd2c2c64da8f 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/hooks/useUxQuery.ts @@ -5,7 +5,7 @@ */ import { useMemo } from 'react'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; export function useUxQuery() { const { urlParams, uiFilters } = useUrlParams(); diff --git a/x-pack/plugins/apm/public/components/app/RumDashboard/utils/test_helper.tsx b/x-pack/plugins/apm/public/components/app/RumDashboard/utils/test_helper.tsx index 5522cad5690bc3..d5b8cd83d437c4 100644 --- a/x-pack/plugins/apm/public/components/app/RumDashboard/utils/test_helper.tsx +++ b/x-pack/plugins/apm/public/components/app/RumDashboard/utils/test_helper.tsx @@ -13,7 +13,7 @@ import { Router } from 'react-router-dom'; import { MemoryHistory } from 'history'; import { EuiThemeProvider } from '../../../../../../observability/public'; import { KibanaContextProvider } from '../../../../../../../../src/plugins/kibana_react/public'; -import { UrlParamsProvider } from '../../../../context/UrlParamsContext'; +import { UrlParamsProvider } from '../../../../context/url_params_context/url_params_context'; export const core = ({ http: { diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.test.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.test.tsx index 1187b71dff8256..659f9f63d0cfa0 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.test.tsx @@ -9,7 +9,7 @@ import { render } from '@testing-library/react'; import cytoscape from 'cytoscape'; import React, { ReactNode } from 'react'; import { ThemeContext } from 'styled-components'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { Controls } from './Controls'; import { CytoscapeContext } from './Cytoscape'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.tsx index b4408e20c04d2f..a23fa72314aed8 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Controls.tsx @@ -8,9 +8,9 @@ import { EuiButtonIcon, EuiPanel, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useContext, useEffect, useState } from 'react'; import styled from 'styled-components'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; -import { useTheme } from '../../../hooks/useTheme'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; +import { useTheme } from '../../../hooks/use_theme'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { getAPMHref } from '../../shared/Links/apm/APMLink'; import { APMQueryParams } from '../../shared/Links/url_helpers'; import { CytoscapeContext } from './Cytoscape'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx index 8a76c5f7bd8f1a..1dea95d369966b 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Cytoscape.tsx @@ -16,7 +16,7 @@ import React, { useRef, useState, } from 'react'; -import { useTheme } from '../../../hooks/useTheme'; +import { useTheme } from '../../../hooks/use_theme'; import { getCytoscapeOptions } from './cytoscape_options'; import { useCytoscapeEventHandlers } from './use_cytoscape_event_handlers'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/EmptyBanner.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/EmptyBanner.tsx index 63a9cf985959f5..07e88294caadbc 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/EmptyBanner.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/EmptyBanner.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; import { CytoscapeContext } from './Cytoscape'; -import { useTheme } from '../../../hooks/useTheme'; +import { useTheme } from '../../../hooks/use_theme'; const EmptyBannerContainer = styled.div` margin: ${({ theme }) => theme.eui.gutterTypes.gutterSmall}; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/AnomalyDetection.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/AnomalyDetection.tsx index 788e5f25b6310a..36c0c9f37f9c71 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/AnomalyDetection.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/AnomalyDetection.tsx @@ -18,7 +18,7 @@ import { getServiceHealthStatus, getServiceHealthStatusColor, } from '../../../../../common/service_health_status'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; import { fontSize, px } from '../../../../style/variables'; import { asInteger, asDuration } from '../../../../../common/utils/formatters'; import { MLJobLink } from '../../../shared/Links/MachineLearningLinks/MLJobLink'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.test.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.test.tsx index f98a7a1b33dd88..d9f33b8fca4cd4 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.test.tsx @@ -7,7 +7,7 @@ import React, { ReactNode } from 'react'; import { Buttons } from './Buttons'; import { render } from '@testing-library/react'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; function Wrapper({ children }: { children?: ReactNode }) { return {children}; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.tsx index 8670cf623c2532..56110a89ed888c 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Buttons.tsx @@ -9,8 +9,8 @@ import { EuiButton, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { MouseEvent } from 'react'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { getAPMHref } from '../../../shared/Links/apm/APMLink'; import { APMQueryParams } from '../../../shared/Links/url_helpers'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Info.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Info.tsx index d0902c427aac8a..95373113695f4f 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Info.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Info.tsx @@ -24,7 +24,7 @@ const ItemRow = styled.div` const SubduedDescriptionListTitle = styled(EuiDescriptionListTitle)` &&& { - color: ${({ theme }) => theme.eui.textColors.subdued}; + color: ${({ theme }) => theme.eui.euiTextSubduedColor}; } `; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Popover.stories.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Popover.stories.tsx index 70eb5eaf8e576c..313b262508c613 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Popover.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/Popover.stories.tsx @@ -8,8 +8,8 @@ import cytoscape from 'cytoscape'; import { HttpSetup } from 'kibana/public'; import React, { ComponentType } from 'react'; import { EuiThemeProvider } from '../../../../../../observability/public'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; -import { MockUrlParamsContextProvider } from '../../../../context/UrlParamsContext/MockUrlParamsContextProvider'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; +import { MockUrlParamsContextProvider } from '../../../../context/url_params_context/mock_url_params_context_provider'; import { createCallApmApi } from '../../../../services/rest/createCallApmApi'; import { CytoscapeContext } from '../Cytoscape'; import { Popover } from './'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsFetcher.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsFetcher.tsx index be8c5cf8cd4355..3b737c6fa4170f 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsFetcher.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsFetcher.tsx @@ -15,8 +15,8 @@ import { i18n } from '@kbn/i18n'; import { isNumber } from 'lodash'; import { ServiceNodeStats } from '../../../../../common/service_map'; import { ServiceStatsList } from './ServiceStatsList'; -import { useFetcher, FETCH_STATUS } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useFetcher, FETCH_STATUS } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { AnomalyDetection } from './AnomalyDetection'; import { ServiceAnomalyStats } from '../../../../../common/anomaly_detection'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsList.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsList.tsx index 8463da0824bde7..cc41c254ffb507 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsList.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/ServiceStatsList.tsx @@ -11,7 +11,7 @@ import styled from 'styled-components'; import { asDuration, asPercent, - tpmUnit, + asTransactionRate, } from '../../../../../common/utils/formatters'; import { ServiceNodeStats } from '../../../../../common/service_map'; @@ -20,7 +20,7 @@ export const ItemRow = styled('tr')` `; export const ItemTitle = styled('td')` - color: ${({ theme }) => theme.eui.textColors.subdued}; + color: ${({ theme }) => theme.eui.euiTextSubduedColor}; padding-right: 1rem; `; @@ -55,11 +55,7 @@ export function ServiceStatsList({ defaultMessage: 'Req. per minute (avg.)', } ), - description: isNumber(transactionStats.avgRequestsPerMinute) - ? `${transactionStats.avgRequestsPerMinute.toFixed(2)} ${tpmUnit( - 'request' - )}` - : null, + description: asTransactionRate(transactionStats.avgRequestsPerMinute), }, { title: i18n.translate('xpack.apm.serviceMap.errorRatePopoverStat', { diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/index.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/index.tsx index 7b7e3b46bb317a..036d02531f7944 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/Popover/index.tsx @@ -15,7 +15,7 @@ import React, { } from 'react'; import { EuiPopover } from '@elastic/eui'; import cytoscape from 'cytoscape'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; import { SERVICE_NAME } from '../../../../../common/elasticsearch_fieldnames'; import { CytoscapeContext } from '../Cytoscape'; import { getAnimationOptions } from '../cytoscape_options'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/cytoscape_options.ts b/x-pack/plugins/apm/public/components/app/ServiceMap/cytoscape_options.ts index d8a8a3c8e9ab4d..f2f51496fcca84 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/cytoscape_options.ts +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/cytoscape_options.ts @@ -15,7 +15,7 @@ import { getServiceHealthStatusColor, ServiceHealthStatus, } from '../../../../common/service_health_status'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { defaultIcon, iconForNode } from './icons'; export const popoverWidth = 280; @@ -129,7 +129,7 @@ const getStyle = (theme: EuiTheme): cytoscape.Stylesheet[] => { color: (el: cytoscape.NodeSingular) => el.hasClass('primary') || el.selected() ? theme.eui.euiColorPrimaryText - : theme.eui.textColors.text, + : theme.eui.euiTextColor, // theme.euiFontFamily doesn't work here for some reason, so we're just // specifying a subset of the fonts for the label text. 'font-family': 'Inter UI, Segoe UI, Helvetica, Arial, sans-serif', diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/empty_banner.test.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/empty_banner.test.tsx index ae27d4d3baf759..a1fb7e7077add6 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/empty_banner.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/empty_banner.test.tsx @@ -7,7 +7,7 @@ import { act, waitFor } from '@testing-library/react'; import cytoscape from 'cytoscape'; import React, { ReactNode } from 'react'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { renderWithTheme } from '../../../utils/testHelpers'; import { CytoscapeContext } from './Cytoscape'; import { EmptyBanner } from './EmptyBanner'; diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx index 2a5b4ce44ff467..2f05842b6bdec2 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/index.test.tsx @@ -11,13 +11,13 @@ import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; import { License } from '../../../../../licensing/common/license'; import { EuiThemeProvider } from '../../../../../observability/public'; import { FETCH_STATUS } from '../../../../../observability/public/hooks/use_fetcher'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { LicenseContext } from '../../../context/LicenseContext'; -import * as useFetcherModule from '../../../hooks/useFetcher'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { LicenseContext } from '../../../context/license/license_context'; +import * as useFetcherModule from '../../../hooks/use_fetcher'; import { ServiceMap } from './'; const KibanaReactContext = createKibanaReactContext({ - usageCollection: { reportUiStats: () => {} }, + usageCollection: { reportUiCounter: () => {} }, } as Partial); const activeLicense = new License({ diff --git a/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx b/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx index 1731d3f9430d42..48a7f8f77ab840 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceMap/index.tsx @@ -13,10 +13,10 @@ import { isActivePlatinumLicense, SERVICE_MAP_TIMEOUT_ERROR, } from '../../../../common/service_map'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; -import { useLicense } from '../../../hooks/useLicense'; -import { useTheme } from '../../../hooks/useTheme'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; +import { useLicenseContext } from '../../../context/license/use_license_context'; +import { useTheme } from '../../../hooks/use_theme'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { callApmApi } from '../../../services/rest/createCallApmApi'; import { DatePicker } from '../../shared/DatePicker'; import { LicensePrompt } from '../../shared/LicensePrompt'; @@ -70,7 +70,7 @@ export function ServiceMap({ serviceName, }: PropsWithChildren) { const theme = useTheme(); - const license = useLicense(); + const license = useLicenseContext(); const { urlParams } = useUrlParams(); const { data = { elements: [] }, status, error } = useFetcher(() => { diff --git a/x-pack/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx b/x-pack/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx index 74e7b652d0ebe0..c4c227deb69184 100644 --- a/x-pack/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/ServiceNodeOverview/index.tsx @@ -21,8 +21,8 @@ import { asInteger, asPercent, } from '../../../../common/utils/formatters'; -import { useFetcher } from '../../../hooks/useFetcher'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useFetcher } from '../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { px, truncate, unit } from '../../../style/variables'; import { ServiceNodeMetricOverviewLink } from '../../shared/Links/apm/ServiceNodeMetricOverviewLink'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/ServicePage/ServicePage.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/ServicePage/ServicePage.tsx index 7c0869afe0cd1a..18067a43861bdb 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/ServicePage/ServicePage.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/ServicePage/ServicePage.tsx @@ -21,7 +21,7 @@ import { omitAllOption, getOptionLabel, } from '../../../../../../../common/agent_configuration/all_option'; -import { useFetcher, FETCH_STATUS } from '../../../../../../hooks/useFetcher'; +import { useFetcher, FETCH_STATUS } from '../../../../../../hooks/use_fetcher'; import { FormRowSelect } from './FormRowSelect'; import { APMLink } from '../../../../../shared/Links/apm/APMLink'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/SettingsPage/SettingsPage.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/SettingsPage/SettingsPage.tsx index 54440559070ad8..7e1146596dd877 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/SettingsPage/SettingsPage.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/SettingsPage/SettingsPage.tsx @@ -32,8 +32,8 @@ import { validateSetting, } from '../../../../../../../common/agent_configuration/setting_definitions'; import { AgentName } from '../../../../../../../typings/es_schemas/ui/fields/agent'; -import { useApmPluginContext } from '../../../../../../hooks/useApmPluginContext'; -import { FETCH_STATUS } from '../../../../../../hooks/useFetcher'; +import { useApmPluginContext } from '../../../../../../context/apm_plugin/use_apm_plugin_context'; +import { FETCH_STATUS } from '../../../../../../hooks/use_fetcher'; import { saveConfig } from './saveConfig'; import { SettingFormRow } from './SettingFormRow'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.stories.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.stories.tsx index db3f2c374a1ae6..5ca643428e49c1 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.stories.tsx @@ -14,13 +14,13 @@ import { storiesOf } from '@storybook/react'; import React from 'react'; import { HttpSetup } from 'kibana/public'; import { AgentConfiguration } from '../../../../../../common/agent_configuration/configuration_types'; -import { FETCH_STATUS } from '../../../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../../../hooks/use_fetcher'; import { createCallApmApi } from '../../../../../services/rest/createCallApmApi'; import { AgentConfigurationCreateEdit } from './index'; import { ApmPluginContext, ApmPluginContextValue, -} from '../../../../../context/ApmPluginContext'; +} from '../../../../../context/apm_plugin/apm_plugin_context'; import { EuiThemeProvider } from '../../../../../../../observability/public'; storiesOf( diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.tsx index 4f94f255a4e4c2..998175c895557b 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/AgentConfigurationCreateEdit/index.tsx @@ -14,7 +14,7 @@ import { AgentConfiguration, AgentConfigurationIntake, } from '../../../../../../common/agent_configuration/configuration_types'; -import { FetcherResult } from '../../../../../hooks/useFetcher'; +import { FetcherResult } from '../../../../../hooks/use_fetcher'; import { fromQuery, toQuery } from '../../../../shared/Links/url_helpers'; import { ServicePage } from './ServicePage/ServicePage'; import { SettingsPage } from './SettingsPage/SettingsPage'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/ConfirmDeleteModal.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/ConfirmDeleteModal.tsx index adae50db85ada1..958aafa8159df7 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/ConfirmDeleteModal.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/ConfirmDeleteModal.tsx @@ -13,7 +13,7 @@ import { APIReturnType, callApmApi, } from '../../../../../services/rest/createCallApmApi'; -import { useApmPluginContext } from '../../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../../context/apm_plugin/use_apm_plugin_context'; type Config = APIReturnType<'GET /api/apm/settings/agent-configuration'>[0]; diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/index.tsx index 81079d78a148a5..be4edbe2ea270f 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/List/index.tsx @@ -18,9 +18,9 @@ import React, { useState } from 'react'; import { useLocation } from 'react-router-dom'; import { APIReturnType } from '../../../../../services/rest/createCallApmApi'; import { getOptionLabel } from '../../../../../../common/agent_configuration/all_option'; -import { useApmPluginContext } from '../../../../../hooks/useApmPluginContext'; -import { FETCH_STATUS } from '../../../../../hooks/useFetcher'; -import { useTheme } from '../../../../../hooks/useTheme'; +import { useApmPluginContext } from '../../../../../context/apm_plugin/use_apm_plugin_context'; +import { FETCH_STATUS } from '../../../../../hooks/use_fetcher'; +import { useTheme } from '../../../../../hooks/use_theme'; import { px, units } from '../../../../../style/variables'; import { createAgentConfigurationHref, diff --git a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/index.tsx index 12c63f8702f256..c408d5e960cf3b 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/AgentConfigurations/index.tsx @@ -16,8 +16,8 @@ import { isEmpty } from 'lodash'; import React from 'react'; import { useLocation } from 'react-router-dom'; import { useTrackPageview } from '../../../../../../observability/public'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { createAgentConfigurationHref } from '../../../shared/Links/apm/agentConfigurationLinks'; import { AgentConfigurationList } from './List'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.test.tsx b/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.test.tsx index 53794ca9965ff8..2adf85181886c8 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.test.tsx @@ -7,8 +7,8 @@ import { render } from '@testing-library/react'; import React from 'react'; import { ApmIndices } from '.'; -import * as hooks from '../../../../hooks/useFetcher'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import * as hooks from '../../../../hooks/use_fetcher'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; describe('ApmIndices', () => { it('should not get stuck in infinite loop', () => { diff --git a/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.tsx index a1ef9ddd87271a..5a5d20cde9ade4 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/ApmIndices/index.tsx @@ -19,10 +19,10 @@ import { EuiButton, EuiButtonEmpty, } from '@elastic/eui'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { callApmApi } from '../../../../services/rest/createCallApmApi'; import { clearCache } from '../../../../services/rest/callApi'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; const APM_INDEX_LABELS = [ { diff --git a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/DeleteButton.tsx b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/DeleteButton.tsx index 5014584c3928af..ffcb85384642ac 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/DeleteButton.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/DeleteButton.tsx @@ -10,7 +10,7 @@ import { NotificationsStart } from 'kibana/public'; import React, { useState } from 'react'; import { px, unit } from '../../../../../../style/variables'; import { callApmApi } from '../../../../../../services/rest/createCallApmApi'; -import { useApmPluginContext } from '../../../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../../../context/apm_plugin/use_apm_plugin_context'; interface Props { onDelete: () => void; diff --git a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/index.tsx index c6566af3a8b61b..f9c5aa17e411a8 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout/index.tsx @@ -15,7 +15,7 @@ import { import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import { Filter } from '../../../../../../../common/custom_link/custom_link_types'; -import { useApmPluginContext } from '../../../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../../../context/apm_plugin/use_apm_plugin_context'; import { FiltersSection } from './FiltersSection'; import { FlyoutFooter } from './FlyoutFooter'; import { LinkSection } from './LinkSection'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.test.tsx b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.test.tsx index 96a634828f6696..1da7d415b56609 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.test.tsx @@ -14,15 +14,15 @@ import React from 'react'; import { act } from 'react-dom/test-utils'; import * as apmApi from '../../../../../services/rest/createCallApmApi'; import { License } from '../../../../../../../licensing/common/license'; -import * as hooks from '../../../../../hooks/useFetcher'; -import { LicenseContext } from '../../../../../context/LicenseContext'; +import * as hooks from '../../../../../hooks/use_fetcher'; +import { LicenseContext } from '../../../../../context/license/license_context'; import { CustomLinkOverview } from '.'; import { expectTextsInDocument, expectTextsNotInDocument, } from '../../../../../utils/testHelpers'; import * as saveCustomLink from './CreateEditCustomLinkFlyout/saveCustomLink'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; const data = [ { diff --git a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.tsx index 771a8c6154dc04..6b5c7d583ee8a8 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/CustomizeUI/CustomLink/index.tsx @@ -17,8 +17,8 @@ import { isEmpty } from 'lodash'; import React, { useEffect, useState } from 'react'; import { INVALID_LICENSE } from '../../../../../../common/custom_link'; import { CustomLink } from '../../../../../../common/custom_link/custom_link_types'; -import { FETCH_STATUS, useFetcher } from '../../../../../hooks/useFetcher'; -import { useLicense } from '../../../../../hooks/useLicense'; +import { FETCH_STATUS, useFetcher } from '../../../../../hooks/use_fetcher'; +import { useLicenseContext } from '../../../../../context/license/use_license_context'; import { LicensePrompt } from '../../../../shared/LicensePrompt'; import { CreateCustomLinkButton } from './CreateCustomLinkButton'; import { CreateEditCustomLinkFlyout } from './CreateEditCustomLinkFlyout'; @@ -26,7 +26,7 @@ import { CustomLinkTable } from './CustomLinkTable'; import { EmptyPrompt } from './EmptyPrompt'; export function CustomLinkOverview() { - const license = useLicense(); + const license = useLicenseContext(); const hasValidLicense = license?.isActive && license?.hasAtLeast('gold'); const [isFlyoutOpen, setIsFlyoutOpen] = useState(false); diff --git a/x-pack/plugins/apm/public/components/app/Settings/Settings.test.tsx b/x-pack/plugins/apm/public/components/app/Settings/Settings.test.tsx index 21da12477b0246..cfef7ca937f66e 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/Settings.test.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/Settings.test.tsx @@ -5,7 +5,7 @@ */ import { render } from '@testing-library/react'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import React, { ReactNode } from 'react'; import { Settings } from './'; import { createMemoryHistory } from 'history'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/add_environments.tsx b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/add_environments.tsx index ccc1778e9fbdea..e709c7e104472a 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/add_environments.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/add_environments.tsx @@ -21,8 +21,8 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { ML_ERRORS } from '../../../../../common/anomaly_detection'; -import { useFetcher, FETCH_STATUS } from '../../../../hooks/useFetcher'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useFetcher, FETCH_STATUS } from '../../../../hooks/use_fetcher'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { createJobs } from './create_jobs'; import { getEnvironmentLabel } from '../../../../../common/environment_filter_values'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx index 2cda5fcf859099..addfd64a9ef624 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/index.tsx @@ -9,15 +9,15 @@ import { EuiTitle, EuiSpacer, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EuiPanel, EuiEmptyPrompt } from '@elastic/eui'; import { ML_ERRORS } from '../../../../../common/anomaly_detection'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { JobsList } from './jobs_list'; import { AddEnvironments } from './add_environments'; -import { useFetcher } from '../../../../hooks/useFetcher'; +import { useFetcher } from '../../../../hooks/use_fetcher'; import { LicensePrompt } from '../../../shared/LicensePrompt'; -import { useLicense } from '../../../../hooks/useLicense'; +import { useLicenseContext } from '../../../../context/license/use_license_context'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -export type AnomalyDetectionApiResponse = APIReturnType<'GET /api/apm/settings/anomaly-detection'>; +export type AnomalyDetectionApiResponse = APIReturnType<'GET /api/apm/settings/anomaly-detection/jobs'>; const DEFAULT_VALUE: AnomalyDetectionApiResponse = { jobs: [], @@ -27,7 +27,7 @@ const DEFAULT_VALUE: AnomalyDetectionApiResponse = { export function AnomalyDetection() { const plugin = useApmPluginContext(); const canGetJobs = !!plugin.core.application.capabilities.ml?.canGetJobs; - const license = useLicense(); + const license = useLicenseContext(); const hasValidLicense = license?.isActive && license?.hasAtLeast('platinum'); const [viewAddEnvironments, setViewAddEnvironments] = useState(false); @@ -36,7 +36,7 @@ export function AnomalyDetection() { (callApmApi) => { if (canGetJobs) { return callApmApi({ - endpoint: `GET /api/apm/settings/anomaly-detection`, + endpoint: `GET /api/apm/settings/anomaly-detection/jobs`, }); } }, diff --git a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/jobs_list.tsx b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/jobs_list.tsx index 137dcfcdbb4f07..8d6a0740a8a080 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/jobs_list.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/jobs_list.tsx @@ -16,7 +16,7 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; -import { FETCH_STATUS } from '../../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { ITableColumn, ManagedTable } from '../../../shared/ManagedTable'; import { LoadingStatePrompt } from '../../../shared/LoadingStatePrompt'; import { MLJobLink } from '../../../shared/Links/MachineLearningLinks/MLJobLink'; diff --git a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/legacy_jobs_callout.tsx b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/legacy_jobs_callout.tsx index 1844e5754cfba5..9e21eb2ffc870a 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/legacy_jobs_callout.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/anomaly_detection/legacy_jobs_callout.tsx @@ -7,7 +7,7 @@ import { EuiCallOut, EuiButton } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { useMlHref } from '../../../../../../ml/public'; export function LegacyJobsCallout() { diff --git a/x-pack/plugins/apm/public/components/app/Settings/index.tsx b/x-pack/plugins/apm/public/components/app/Settings/index.tsx index c9c577285ee807..e974f05fbe9941 100644 --- a/x-pack/plugins/apm/public/components/app/Settings/index.tsx +++ b/x-pack/plugins/apm/public/components/app/Settings/index.tsx @@ -16,7 +16,7 @@ import React, { ReactNode } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { HeaderMenuPortal } from '../../../../../observability/public'; import { ActionMenu } from '../../../application/action_menu'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { getAPMHref } from '../../shared/Links/apm/APMLink'; import { HomeLink } from '../../shared/Links/apm/HomeLink'; diff --git a/x-pack/plugins/apm/public/components/app/TraceLink/index.tsx b/x-pack/plugins/apm/public/components/app/TraceLink/index.tsx index 1a41ffe1f606f0..3f325f17af82d0 100644 --- a/x-pack/plugins/apm/public/components/app/TraceLink/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TraceLink/index.tsx @@ -8,8 +8,8 @@ import { EuiEmptyPrompt } from '@elastic/eui'; import React from 'react'; import { Redirect, RouteComponentProps } from 'react-router-dom'; import styled from 'styled-components'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { getRedirectToTransactionDetailPageUrl } from './get_redirect_to_transaction_detail_page_url'; import { getRedirectToTracePageUrl } from './get_redirect_to_trace_page_url'; @@ -27,7 +27,7 @@ export function TraceLink({ match }: RouteComponentProps<{ traceId: string }>) { (callApmApi) => { if (traceId) { return callApmApi({ - endpoint: 'GET /api/apm/transaction/{traceId}', + endpoint: 'GET /api/apm/traces/{traceId}/root_transaction', params: { path: { traceId, diff --git a/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx b/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx index e7c0400290dcb7..c07e00ef387c9c 100644 --- a/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx +++ b/x-pack/plugins/apm/public/components/app/TraceLink/trace_link.test.tsx @@ -8,13 +8,13 @@ import { shallow } from 'enzyme'; import React, { ReactNode } from 'react'; import { MemoryRouter, RouteComponentProps } from 'react-router-dom'; import { TraceLink } from './'; -import { ApmPluginContextValue } from '../../../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../../../context/ApmPluginContext/MockApmPluginContext'; -import * as hooks from '../../../hooks/useFetcher'; -import * as urlParamsHooks from '../../../hooks/useUrlParams'; +} from '../../../context/apm_plugin/mock_apm_plugin_context'; +import * as hooks from '../../../hooks/use_fetcher'; +import * as urlParamsHooks from '../../../context/url_params_context/use_url_params'; function Wrapper({ children }: { children?: ReactNode }) { return ( diff --git a/x-pack/plugins/apm/public/components/app/TraceOverview/TraceList.tsx b/x-pack/plugins/apm/public/components/app/TraceOverview/TraceList.tsx index 4704230d7c68cc..e68f8a9809bf5e 100644 --- a/x-pack/plugins/apm/public/components/app/TraceOverview/TraceList.tsx +++ b/x-pack/plugins/apm/public/components/app/TraceOverview/TraceList.tsx @@ -8,7 +8,10 @@ import { EuiIcon, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import styled from 'styled-components'; -import { asMillisecondDuration } from '../../../../common/utils/formatters'; +import { + asMillisecondDuration, + asTransactionRate, +} from '../../../../common/utils/formatters'; import { fontSizes, truncate } from '../../../style/variables'; import { EmptyMessage } from '../../shared/EmptyMessage'; import { ImpactBar } from '../../shared/ImpactBar'; @@ -78,13 +81,7 @@ const traceListColumns: Array> = [ }), sortable: true, dataType: 'number', - render: (value: number) => - `${value.toLocaleString()} ${i18n.translate( - 'xpack.apm.tracesTable.tracesPerMinuteUnitLabel', - { - defaultMessage: 'tpm', - } - )}`, + render: (value: number) => asTransactionRate(value), }, { field: 'impact', diff --git a/x-pack/plugins/apm/public/components/app/TraceOverview/index.tsx b/x-pack/plugins/apm/public/components/app/TraceOverview/index.tsx index cbab2c44132f31..ab10d6b4f46a02 100644 --- a/x-pack/plugins/apm/public/components/app/TraceOverview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TraceOverview/index.tsx @@ -8,8 +8,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiPage, EuiPanel } from '@elastic/eui'; import React, { useMemo } from 'react'; import { useTrackPageview } from '../../../../../observability/public'; import { Projection } from '../../../../common/projections'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { APIReturnType } from '../../../services/rest/createCallApmApi'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { SearchBar } from '../../shared/search_bar'; diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx index e92a6c7db8445e..309cde4dd9f650 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/Distribution/index.tsx @@ -22,22 +22,20 @@ import { EuiIconTip, EuiTitle } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import d3 from 'd3'; import { isEmpty } from 'lodash'; -import React, { useCallback } from 'react'; +import React from 'react'; import { ValuesType } from 'utility-types'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { useTheme } from '../../../../../../observability/public'; import { getDurationFormatter } from '../../../../../common/utils/formatters'; -import { IUrlParams } from '../../../../context/UrlParamsContext/types'; -import { FETCH_STATUS } from '../../../../hooks/useFetcher'; +import type { IUrlParams } from '../../../../context/url_params_context/types'; +import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { unit } from '../../../../style/variables'; import { ChartContainer } from '../../../shared/charts/chart_container'; import { EmptyMessage } from '../../../shared/EmptyMessage'; -type TransactionDistributionAPIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups/distribution'>; +type TransactionDistributionAPIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/distribution'>; -type DistributionApiResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups/distribution'>; - -type DistributionBucket = DistributionApiResponse['buckets'][0]; +type DistributionBucket = TransactionDistributionAPIResponse['buckets'][0]; interface IChartPoint { x0: number; @@ -70,46 +68,29 @@ export function getFormattedBuckets( ); } -const getFormatYShort = (transactionType: string | undefined) => ( - t: number -) => { +const formatYShort = (t: number) => { return i18n.translate( 'xpack.apm.transactionDetails.transactionsDurationDistributionChart.unitShortLabel', + { + defaultMessage: '{transCount} trans.', + values: { transCount: t }, + } + ); +}; + +const formatYLong = (t: number) => { + return i18n.translate( + 'xpack.apm.transactionDetails.transactionsDurationDistributionChart.transactionTypeUnitLongLabel', { defaultMessage: - '{transCount} {transType, select, request {req.} other {trans.}}', + '{transCount, plural, =0 {transactions} one {transaction} other {transactions}}', values: { transCount: t, - transType: transactionType, }, } ); }; -const getFormatYLong = (transactionType: string | undefined) => (t: number) => { - return transactionType === 'request' - ? i18n.translate( - 'xpack.apm.transactionDetails.transactionsDurationDistributionChart.requestTypeUnitLongLabel', - { - defaultMessage: - '{transCount, plural, =0 {request} one {request} other {requests}}', - values: { - transCount: t, - }, - } - ) - : i18n.translate( - 'xpack.apm.transactionDetails.transactionsDurationDistributionChart.transactionTypeUnitLongLabel', - { - defaultMessage: - '{transCount, plural, =0 {transaction} one {transaction} other {transactions}}', - values: { - transCount: t, - }, - } - ); -}; - interface Props { distribution?: TransactionDistributionAPIResponse; urlParams: IUrlParams; @@ -129,16 +110,6 @@ export function TransactionDistribution({ }: Props) { const theme = useTheme(); - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - const formatYShort = useCallback(getFormatYShort(transactionType), [ - transactionType, - ]); - - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - const formatYLong = useCallback(getFormatYLong(transactionType), [ - transactionType, - ]); - // no data in response if ( (!distribution || distribution.noHits) && @@ -251,7 +222,7 @@ export function TransactionDistribution({ id="y-axis" position={Position.Left} ticks={3} - showGridLines + gridLine={{ visible: true }} tickFormat={(value: number) => formatYShort(value)} /> )} - +
{renderItems(waterfall.childrenByParentId)} - +
; +type DistributionApiResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/distribution'>; type DistributionBucket = DistributionApiResponse['buckets'][0]; diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx index 8a99773a97baf6..c491b9f0e1eff9 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/index.tsx @@ -17,19 +17,19 @@ import React, { useMemo } from 'react'; import { isEmpty, flatten } from 'lodash'; import { useHistory } from 'react-router-dom'; import { RouteComponentProps } from 'react-router-dom'; -import { useTransactionCharts } from '../../../hooks/useTransactionCharts'; -import { useTransactionDistribution } from '../../../hooks/useTransactionDistribution'; -import { useWaterfall } from '../../../hooks/useWaterfall'; +import { useTransactionChartsFetcher } from '../../../hooks/use_transaction_charts_fetcher'; +import { useTransactionDistributionFetcher } from '../../../hooks/use_transaction_distribution_fetcher'; +import { useWaterfallFetcher } from './use_waterfall_fetcher'; import { ApmHeader } from '../../shared/ApmHeader'; import { TransactionCharts } from '../../shared/charts/transaction_charts'; import { TransactionDistribution } from './Distribution'; import { WaterfallWithSummmary } from './WaterfallWithSummmary'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; -import { ChartsSyncContextProvider } from '../../../context/charts_sync_context'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; +import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; import { useTrackPageview } from '../../../../../observability/public'; import { Projection } from '../../../../common/projections'; import { fromQuery, toQuery } from '../../shared/Links/url_helpers'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { HeightRetainer } from '../../shared/HeightRetainer'; import { Correlations } from '../Correlations'; @@ -50,18 +50,20 @@ export function TransactionDetails({ const { urlParams } = useUrlParams(); const history = useHistory(); const { - data: distributionData, - status: distributionStatus, - } = useTransactionDistribution(urlParams); + distributionData, + distributionStatus, + } = useTransactionDistributionFetcher(); const { - data: transactionChartsData, - status: transactionChartsStatus, - } = useTransactionCharts(); + transactionChartsData, + transactionChartsStatus, + } = useTransactionChartsFetcher(); - const { waterfall, exceedsMax, status: waterfallStatus } = useWaterfall( - urlParams - ); + const { + waterfall, + exceedsMax, + status: waterfallStatus, + } = useWaterfallFetcher(); const { transactionName, transactionType } = urlParams; useTrackPageview({ app: 'apm', path: 'transaction_details' }); @@ -125,13 +127,13 @@ export function TransactionDetails({ - + - + diff --git a/x-pack/plugins/apm/public/components/app/TransactionDetails/use_waterfall_fetcher.ts b/x-pack/plugins/apm/public/components/app/TransactionDetails/use_waterfall_fetcher.ts new file mode 100644 index 00000000000000..7458fa79bd1f3f --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/TransactionDetails/use_waterfall_fetcher.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo } from 'react'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useFetcher } from '../../../hooks/use_fetcher'; +import { getWaterfall } from './WaterfallWithSummmary/WaterfallContainer/Waterfall/waterfall_helpers/waterfall_helpers'; + +const INITIAL_DATA = { + root: undefined, + trace: { items: [], exceedsMax: false, errorDocs: [] }, + errorsPerTransaction: {}, +}; + +export function useWaterfallFetcher() { + const { urlParams } = useUrlParams(); + const { traceId, start, end, transactionId } = urlParams; + const { data = INITIAL_DATA, status, error } = useFetcher( + (callApmApi) => { + if (traceId && start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/traces/{traceId}', + params: { + path: { traceId }, + query: { + start, + end, + }, + }, + }); + } + }, + [traceId, start, end] + ); + + const waterfall = useMemo(() => getWaterfall(data, transactionId), [ + data, + transactionId, + ]); + + return { waterfall, status, error, exceedsMax: data.trace.exceedsMax }; +} diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/index.tsx deleted file mode 100644 index ece923631a2f76..00000000000000 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/index.tsx +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { EuiToolTip, EuiIconTip } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React, { useMemo } from 'react'; -import styled from 'styled-components'; -import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -import { - asDecimal, - asMillisecondDuration, -} from '../../../../../common/utils/formatters'; -import { fontFamilyCode, truncate } from '../../../../style/variables'; -import { ImpactBar } from '../../../shared/ImpactBar'; -import { ITableColumn, ManagedTable } from '../../../shared/ManagedTable'; -import { LoadingStatePrompt } from '../../../shared/LoadingStatePrompt'; -import { EmptyMessage } from '../../../shared/EmptyMessage'; -import { TransactionDetailLink } from '../../../shared/Links/apm/TransactionDetailLink'; - -type TransactionGroup = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups'>['items'][0]; - -// Truncate both the link and the child span (the tooltip anchor.) The link so -// it doesn't overflow, and the anchor so we get the ellipsis. -const TransactionNameLink = styled(TransactionDetailLink)` - font-family: ${fontFamilyCode}; - white-space: nowrap; - ${truncate('100%')}; - - > span { - ${truncate('100%')}; - } -`; - -interface Props { - items: TransactionGroup[]; - isLoading: boolean; -} - -export function TransactionList({ items, isLoading }: Props) { - const columns: Array> = useMemo( - () => [ - { - field: 'name', - name: i18n.translate('xpack.apm.transactionsTable.nameColumnLabel', { - defaultMessage: 'Name', - }), - width: '50%', - sortable: true, - render: ( - _, - { serviceName, transactionName, transactionType }: TransactionGroup - ) => { - return ( - - - <>{transactionName} - - - ); - }, - }, - { - field: 'averageResponseTime', - name: i18n.translate( - 'xpack.apm.transactionsTable.avgDurationColumnLabel', - { - defaultMessage: 'Avg. duration', - } - ), - sortable: true, - dataType: 'number', - render: (time: number) => asMillisecondDuration(time), - }, - { - field: 'p95', - name: i18n.translate( - 'xpack.apm.transactionsTable.95thPercentileColumnLabel', - { - defaultMessage: '95th percentile', - } - ), - sortable: true, - dataType: 'number', - render: (time: number) => asMillisecondDuration(time), - }, - { - field: 'transactionsPerMinute', - name: i18n.translate( - 'xpack.apm.transactionsTable.transactionsPerMinuteColumnLabel', - { - defaultMessage: 'Trans. per minute', - } - ), - sortable: true, - dataType: 'number', - render: (value: number) => - `${asDecimal(value)} ${i18n.translate( - 'xpack.apm.transactionsTable.transactionsPerMinuteUnitLabel', - { - defaultMessage: 'tpm', - } - )}`, - }, - { - field: 'impact', - name: ( - <> - {i18n.translate('xpack.apm.transactionsTable.impactColumnLabel', { - defaultMessage: 'Impact', - })}{' '} - - - ), - sortable: true, - dataType: 'number', - render: (value: number) => , - }, - ], - [] - ); - - const noItemsMessage = ( - - ); - - return ( - : noItemsMessage} - columns={columns} - items={items} - initialSortField="impact" - initialSortDirection="desc" - initialPageSize={25} - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionOverview.test.tsx b/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionOverview.test.tsx deleted file mode 100644 index 2d7992feb3760c..00000000000000 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionOverview.test.tsx +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { fireEvent, getByText, queryByLabelText } from '@testing-library/react'; -import { createMemoryHistory } from 'history'; -import { CoreStart } from 'kibana/public'; -import React from 'react'; -import { Router } from 'react-router-dom'; -import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { UrlParamsProvider } from '../../../context/UrlParamsContext'; -import { IUrlParams } from '../../../context/UrlParamsContext/types'; -import * as useFetcherHook from '../../../hooks/useFetcher'; -import * as useServiceTransactionTypesHook from '../../../hooks/useServiceTransactionTypes'; -import { - disableConsoleWarning, - renderWithTheme, -} from '../../../utils/testHelpers'; -import { fromQuery } from '../../shared/Links/url_helpers'; -import { TransactionOverview } from './'; - -const KibanaReactContext = createKibanaReactContext({ - usageCollection: { reportUiStats: () => {} }, -} as Partial); - -const history = createMemoryHistory(); -jest.spyOn(history, 'push'); -jest.spyOn(history, 'replace'); - -function setup({ - urlParams, - serviceTransactionTypes, -}: { - urlParams: IUrlParams; - serviceTransactionTypes: string[]; -}) { - const defaultLocation = { - pathname: '/services/foo/transactions', - search: fromQuery(urlParams), - } as any; - - history.replace({ - ...defaultLocation, - }); - - jest - .spyOn(useServiceTransactionTypesHook, 'useServiceTransactionTypes') - .mockReturnValue(serviceTransactionTypes); - - jest.spyOn(useFetcherHook, 'useFetcher').mockReturnValue({} as any); - - return renderWithTheme( - - - - - - - - - - ); -} - -describe('TransactionOverview', () => { - let consoleMock: jest.SpyInstance; - - beforeAll(() => { - consoleMock = disableConsoleWarning('Warning: componentWillReceiveProps'); - }); - - afterAll(() => { - consoleMock.mockRestore(); - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - describe('when no transaction type is given', () => { - it('should redirect to first type', () => { - setup({ - serviceTransactionTypes: ['firstType', 'secondType'], - urlParams: {}, - }); - expect(history.replace).toHaveBeenCalledWith( - expect.objectContaining({ - search: 'transactionType=firstType', - }) - ); - }); - }); - - const FILTER_BY_TYPE_LABEL = 'Transaction type'; - - describe('when transactionType is selected and multiple transaction types are given', () => { - it('renders a radio group with transaction types', () => { - const { container } = setup({ - serviceTransactionTypes: ['firstType', 'secondType'], - urlParams: { - transactionType: 'secondType', - }, - }); - - expect(getByText(container, 'firstType')).toBeInTheDocument(); - expect(getByText(container, 'secondType')).toBeInTheDocument(); - - expect(getByText(container, 'firstType')).not.toBeNull(); - }); - - it('should update the URL when a transaction type is selected', () => { - const { container } = setup({ - serviceTransactionTypes: ['firstType', 'secondType'], - urlParams: { - transactionType: 'secondType', - }, - }); - - expect(history.location.search).toEqual( - '?transactionType=secondType&rangeFrom=now-15m&rangeTo=now' - ); - expect(getByText(container, 'firstType')).toBeInTheDocument(); - expect(getByText(container, 'secondType')).toBeInTheDocument(); - - fireEvent.click(getByText(container, 'firstType')); - - expect(history.push).toHaveBeenCalled(); - expect(history.location.search).toEqual( - '?transactionType=firstType&rangeFrom=now-15m&rangeTo=now' - ); - }); - }); - - describe('when a transaction type is selected, and there are no other transaction types', () => { - it('does not render a radio group with transaction types', () => { - const { container } = setup({ - serviceTransactionTypes: ['firstType'], - urlParams: { - transactionType: 'firstType', - }, - }); - - expect(queryByLabelText(container, FILTER_BY_TYPE_LABEL)).toBeNull(); - }); - }); -}); diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/index.tsx b/x-pack/plugins/apm/public/components/app/TransactionOverview/index.tsx deleted file mode 100644 index a55b135c6a84e2..00000000000000 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/index.tsx +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - EuiCallOut, - EuiCode, - EuiFlexGroup, - EuiFlexItem, - EuiHorizontalRule, - EuiPage, - EuiPanel, - EuiSpacer, - EuiTitle, -} from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { Location } from 'history'; -import { first } from 'lodash'; -import React, { useMemo } from 'react'; -import { useLocation } from 'react-router-dom'; -import { useTrackPageview } from '../../../../../observability/public'; -import { Projection } from '../../../../common/projections'; -import { TRANSACTION_PAGE_LOAD } from '../../../../common/transaction_types'; -import { IUrlParams } from '../../../context/UrlParamsContext/types'; -import { useServiceTransactionTypes } from '../../../hooks/useServiceTransactionTypes'; -import { useTransactionCharts } from '../../../hooks/useTransactionCharts'; -import { useTransactionList } from '../../../hooks/useTransactionList'; -import { useUrlParams } from '../../../hooks/useUrlParams'; -import { TransactionCharts } from '../../shared/charts/transaction_charts'; -import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; -import { fromQuery, toQuery } from '../../shared/Links/url_helpers'; -import { LocalUIFilters } from '../../shared/LocalUIFilters'; -import { TransactionTypeFilter } from '../../shared/LocalUIFilters/TransactionTypeFilter'; -import { SearchBar } from '../../shared/search_bar'; -import { Correlations } from '../Correlations'; -import { TransactionList } from './TransactionList'; -import { useRedirect } from './useRedirect'; -import { UserExperienceCallout } from './user_experience_callout'; - -function getRedirectLocation({ - urlParams, - location, - serviceTransactionTypes, -}: { - location: Location; - urlParams: IUrlParams; - serviceTransactionTypes: string[]; -}): Location | undefined { - const { transactionType } = urlParams; - const firstTransactionType = first(serviceTransactionTypes); - - if (!transactionType && firstTransactionType) { - return { - ...location, - search: fromQuery({ - ...toQuery(location.search), - transactionType: firstTransactionType, - }), - }; - } -} - -interface TransactionOverviewProps { - serviceName: string; -} - -export function TransactionOverview({ serviceName }: TransactionOverviewProps) { - const location = useLocation(); - const { urlParams } = useUrlParams(); - const { transactionType } = urlParams; - - // TODO: fetching of transaction types should perhaps be lifted since it is needed in several places. Context? - const serviceTransactionTypes = useServiceTransactionTypes(urlParams); - - // redirect to first transaction type - useRedirect( - getRedirectLocation({ - urlParams, - location, - serviceTransactionTypes, - }) - ); - - const { - data: transactionCharts, - status: transactionChartsStatus, - } = useTransactionCharts(); - - useTrackPageview({ app: 'apm', path: 'transaction_overview' }); - useTrackPageview({ app: 'apm', path: 'transaction_overview', delay: 15000 }); - const { - data: transactionListData, - status: transactionListStatus, - } = useTransactionList(urlParams); - - const localFiltersConfig: React.ComponentProps< - typeof LocalUIFilters - > = useMemo( - () => ({ - filterNames: [ - 'transactionResult', - 'host', - 'containerId', - 'podName', - 'serviceVersion', - ], - params: { - serviceName, - transactionType, - }, - projection: Projection.transactionGroups, - }), - [serviceName, transactionType] - ); - - // TODO: improve urlParams typings. - // `serviceName` or `transactionType` will never be undefined here, and this check should not be needed - if (!serviceName || !transactionType) { - return null; - } - - return ( - <> - - - - - - - - - - - - - - {transactionType === TRANSACTION_PAGE_LOAD && ( - <> - - - - )} - - - - -

Transactions

-
- - {!transactionListData.isAggregationAccurate && ( - -

- - xpack.apm.ui.transactionGroupBucketSize - - ), - }} - /> - - - {i18n.translate( - 'xpack.apm.transactionCardinalityWarning.docsLink', - { defaultMessage: 'Learn more in the docs' } - )} - -

-
- )} - - -
-
-
-
- - ); -} diff --git a/x-pack/plugins/apm/public/components/app/service_details/service_detail_tabs.tsx b/x-pack/plugins/apm/public/components/app/service_details/service_detail_tabs.tsx index 22c5a2b101ddcb..ae0dd85b6a8b55 100644 --- a/x-pack/plugins/apm/public/components/app/service_details/service_detail_tabs.tsx +++ b/x-pack/plugins/apm/public/components/app/service_details/service_detail_tabs.tsx @@ -9,8 +9,7 @@ import { i18n } from '@kbn/i18n'; import React, { ReactNode } from 'react'; import { isJavaAgentName, isRumAgentName } from '../../../../common/agent_name'; import { enableServiceOverview } from '../../../../common/ui_settings_keys'; -import { useAgentName } from '../../../hooks/useAgentName'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { useErrorOverviewHref } from '../../shared/Links/apm/ErrorOverviewLink'; import { useMetricOverviewHref } from '../../shared/Links/apm/MetricOverviewLink'; import { useServiceMapHref } from '../../shared/Links/apm/ServiceMapLink'; @@ -23,7 +22,8 @@ import { ServiceMap } from '../ServiceMap'; import { ServiceMetrics } from '../service_metrics'; import { ServiceNodeOverview } from '../ServiceNodeOverview'; import { ServiceOverview } from '../service_overview'; -import { TransactionOverview } from '../TransactionOverview'; +import { TransactionOverview } from '../transaction_overview'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; interface Tab { key: string; @@ -44,7 +44,7 @@ interface Props { } export function ServiceDetailTabs({ serviceName, tab }: Props) { - const { agentName } = useAgentName(); + const { agentName } = useApmServiceContext(); const { uiSettings } = useApmPluginContext().core; const overviewTab = { diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/HealthBadge.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/HealthBadge.tsx index e8ad3e65b1a47e..3b97849b077902 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/HealthBadge.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/HealthBadge.tsx @@ -10,7 +10,7 @@ import { getServiceHealthStatusLabel, ServiceHealthStatus, } from '../../../../../common/service_health_status'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; export function HealthBadge({ healthStatus, diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/index.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/index.tsx index 547a0938bc24d3..a4c93f95dc53d7 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/index.tsx @@ -14,8 +14,8 @@ import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { ServiceHealthStatus } from '../../../../../common/service_health_status'; import { asPercent, - asDecimal, asMillisecondDuration, + asTransactionRate, } from '../../../../../common/utils/formatters'; import { NOT_AVAILABLE_LABEL } from '../../../../../common/i18n'; import { fontSizes, px, truncate, unit } from '../../../../style/variables'; @@ -35,16 +35,6 @@ interface Props { } type ServiceListItem = ValuesType; -function formatNumber(value: number) { - if (value === 0) { - return '0'; - } else if (value <= 0.1) { - return '< 0.1'; - } else { - return asDecimal(value); - } -} - function formatString(value?: string | null) { return value || NOT_AVAILABLE_LABEL; } @@ -154,14 +144,7 @@ export const SERVICE_COLUMNS: Array> = [ ), align: 'left', diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/service_list.test.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/service_list.test.tsx index 39cb73d2a0dd9b..1c6fa9fe0447e1 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/service_list.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/ServiceList/service_list.test.tsx @@ -7,7 +7,7 @@ import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { ServiceHealthStatus } from '../../../../../common/service_health_status'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; import { mockMoment, renderWithTheme } from '../../../../utils/testHelpers'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; import { ServiceList, SERVICE_COLUMNS } from './'; diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx index 3c84b3982642d4..b1d725bba0ca90 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/index.tsx @@ -17,17 +17,17 @@ import url from 'url'; import { toMountPoint } from '../../../../../../../src/plugins/kibana_react/public'; import { useTrackPageview } from '../../../../../observability/public'; import { Projection } from '../../../../common/projections'; -import { useAnomalyDetectionJobs } from '../../../hooks/useAnomalyDetectionJobs'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; import { useLocalStorage } from '../../../hooks/useLocalStorage'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { SearchBar } from '../../shared/search_bar'; import { Correlations } from '../Correlations'; import { NoServicesMessage } from './no_services_message'; import { ServiceList } from './ServiceList'; import { MLCallout } from './ServiceList/MLCallout'; +import { useAnomalyDetectionJobsFetcher } from './use_anomaly_detection_jobs_fetcher'; const initialData = { items: [], @@ -37,12 +37,10 @@ const initialData = { let hasDisplayedToast = false; -export function ServiceInventory() { +function useServicesFetcher() { + const { urlParams, uiFilters } = useUrlParams(); const { core } = useApmPluginContext(); - const { - urlParams: { start, end }, - uiFilters, - } = useUrlParams(); + const { start, end } = urlParams; const { data = initialData, status } = useFetcher( (callApmApi) => { if (start && end) { @@ -92,6 +90,13 @@ export function ServiceInventory() { } }, [data.hasLegacyData, core.http.basePath, core.notifications.toasts]); + return { servicesData: data, servicesStatus: status }; +} + +export function ServiceInventory() { + const { core } = useApmPluginContext(); + const { servicesData, servicesStatus } = useServicesFetcher(); + // The page is called "service inventory" to avoid confusion with the // "service overview", but this is tracked in some dashboards because it's the // initial landing page for APM, so it stays as "services_overview" (plural.) @@ -110,9 +115,9 @@ export function ServiceInventory() { ); const { - data: anomalyDetectionJobsData, - status: anomalyDetectionJobsStatus, - } = useAnomalyDetectionJobs(); + anomalyDetectionJobsData, + anomalyDetectionJobsStatus, + } = useAnomalyDetectionJobsFetcher(); const [userHasDismissedCallout, setUserHasDismissedCallout] = useLocalStorage( 'apm.userHasDismissedServiceInventoryMlCallout', @@ -148,11 +153,11 @@ export function ServiceInventory() { } /> diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.test.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.test.tsx index 0fc2a2b4cdcef0..cf1ccfbd36aaf3 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.test.tsx @@ -6,8 +6,8 @@ import { render } from '@testing-library/react'; import React, { ReactNode } from 'react'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { NoServicesMessage } from './no_services_message'; function Wrapper({ children }: { children?: ReactNode }) { diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.tsx index d2763c6632c652..b20efc440312c8 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/no_services_message.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { KibanaLink } from '../../shared/Links/KibanaLink'; import { SetupInstructionsLink } from '../../shared/Links/SetupInstructionsLink'; import { LoadingStatePrompt } from '../../shared/LoadingStatePrompt'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { ErrorStatePrompt } from '../../shared/ErrorStatePrompt'; interface Props { diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx b/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx index de5e92664a769c..6bb1ea2919c166 100644 --- a/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_inventory/service_inventory.test.tsx @@ -13,20 +13,20 @@ import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; import { ServiceHealthStatus } from '../../../../common/service_health_status'; import { ServiceInventory } from '.'; import { EuiThemeProvider } from '../../../../../observability/public'; -import { ApmPluginContextValue } from '../../../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../../../context/ApmPluginContext/MockApmPluginContext'; -import * as useAnomalyDetectionJobs from '../../../hooks/useAnomalyDetectionJobs'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +} from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import * as useLocalUIFilters from '../../../hooks/useLocalUIFilters'; -import * as useDynamicIndexPatternHooks from '../../../hooks/useDynamicIndexPattern'; +import * as useDynamicIndexPatternHooks from '../../../hooks/use_dynamic_index_pattern'; import { SessionStorageMock } from '../../../services/__test__/SessionStorageMock'; -import { MockUrlParamsContextProvider } from '../../../context/UrlParamsContext/MockUrlParamsContextProvider'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; +import * as hook from './use_anomaly_detection_jobs_fetcher'; const KibanaReactContext = createKibanaReactContext({ - usageCollection: { reportUiStats: () => {} }, + usageCollection: { reportUiCounter: () => {} }, } as Partial); const addWarning = jest.fn(); @@ -80,19 +80,13 @@ describe('ServiceInventory', () => { status: FETCH_STATUS.SUCCESS, }); - jest - .spyOn(useAnomalyDetectionJobs, 'useAnomalyDetectionJobs') - .mockReturnValue({ - status: FETCH_STATUS.SUCCESS, - data: { - jobs: [], - hasLegacyJobs: false, - }, - refetch: () => undefined, - }); + jest.spyOn(hook, 'useAnomalyDetectionJobsFetcher').mockReturnValue({ + anomalyDetectionJobsStatus: FETCH_STATUS.SUCCESS, + anomalyDetectionJobsData: { jobs: [], hasLegacyJobs: false }, + }); jest - .spyOn(useDynamicIndexPatternHooks, 'useDynamicIndexPattern') + .spyOn(useDynamicIndexPatternHooks, 'useDynamicIndexPatternFetcher') .mockReturnValue({ indexPattern: undefined, status: FETCH_STATUS.SUCCESS, diff --git a/x-pack/plugins/apm/public/components/app/service_inventory/use_anomaly_detection_jobs_fetcher.ts b/x-pack/plugins/apm/public/components/app/service_inventory/use_anomaly_detection_jobs_fetcher.ts new file mode 100644 index 00000000000000..901841ac4d593f --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/service_inventory/use_anomaly_detection_jobs_fetcher.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { useFetcher } from '../../../hooks/use_fetcher'; + +export function useAnomalyDetectionJobsFetcher() { + const { data, status } = useFetcher( + (callApmApi) => + callApmApi({ endpoint: `GET /api/apm/settings/anomaly-detection/jobs` }), + [], + { showToastOnError: false } + ); + + return { anomalyDetectionJobsData: data, anomalyDetectionJobsStatus: status }; +} diff --git a/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx b/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx index 5dc1645a1760d0..bf99f5c87fa6a8 100644 --- a/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_metrics/index.tsx @@ -13,10 +13,10 @@ import { EuiFlexGroup, } from '@elastic/eui'; import React, { useMemo } from 'react'; -import { useServiceMetricCharts } from '../../../hooks/useServiceMetricCharts'; +import { useServiceMetricChartsFetcher } from '../../../hooks/use_service_metric_charts_fetcher'; import { MetricsChart } from '../../shared/charts/metrics_chart'; -import { useUrlParams } from '../../../hooks/useUrlParams'; -import { ChartsSyncContextProvider } from '../../../context/charts_sync_context'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; import { Projection } from '../../../../common/projections'; import { LocalUIFilters } from '../../shared/LocalUIFilters'; import { SearchBar } from '../../shared/search_bar'; @@ -31,7 +31,9 @@ export function ServiceMetrics({ serviceName, }: ServiceMetricsProps) { const { urlParams } = useUrlParams(); - const { data, status } = useServiceMetricCharts(urlParams, agentName); + const { data, status } = useServiceMetricChartsFetcher({ + serviceNodeName: undefined, + }); const { start, end } = urlParams; const localFiltersConfig: React.ComponentProps< @@ -57,7 +59,7 @@ export function ServiceMetrics({ - + {data.charts.map((chart) => ( @@ -73,7 +75,7 @@ export function ServiceMetrics({ ))} - + diff --git a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.test.tsx b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.test.tsx index c6f7e68e4f4d06..0ba45fae15fef6 100644 --- a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { ServiceNodeMetrics } from '.'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { RouteComponentProps } from 'react-router-dom'; describe('ServiceNodeMetrics', () => { diff --git a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx index dd703d445cc608..aa1d9cccbdfa62 100644 --- a/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_node_metrics/index.tsx @@ -9,7 +9,7 @@ import { EuiFlexGrid, EuiFlexGroup, EuiFlexItem, - EuiHorizontalRule, + EuiPage, EuiPanel, EuiSpacer, EuiStat, @@ -22,15 +22,16 @@ import React from 'react'; import { RouteComponentProps } from 'react-router-dom'; import styled from 'styled-components'; import { SERVICE_NODE_NAME_MISSING } from '../../../../common/service_nodes'; -import { ChartsSyncContextProvider } from '../../../context/charts_sync_context'; -import { useAgentName } from '../../../hooks/useAgentName'; -import { FETCH_STATUS, useFetcher } from '../../../hooks/useFetcher'; -import { useServiceMetricCharts } from '../../../hooks/useServiceMetricCharts'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; +import { FETCH_STATUS, useFetcher } from '../../../hooks/use_fetcher'; +import { useServiceMetricChartsFetcher } from '../../../hooks/use_service_metric_charts_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; import { px, truncate, unit } from '../../../style/variables'; import { ApmHeader } from '../../shared/ApmHeader'; import { MetricsChart } from '../../shared/charts/metrics_chart'; import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; +import { SearchBar } from '../../shared/search_bar'; const INITIAL_DATA = { host: '', @@ -42,6 +43,13 @@ const Truncate = styled.span` ${truncate(px(unit * 12))} `; +const MetadataFlexGroup = styled(EuiFlexGroup)` + border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; + margin-bottom: ${({ theme }) => theme.eui.paddingSizes.m}; + padding: ${({ theme }) => + `${theme.eui.paddingSizes.m} 0 0 ${theme.eui.paddingSizes.m}`}; +`; + type ServiceNodeMetricsProps = RouteComponentProps<{ serviceName: string; serviceNodeName: string; @@ -50,8 +58,8 @@ type ServiceNodeMetricsProps = RouteComponentProps<{ export function ServiceNodeMetrics({ match }: ServiceNodeMetricsProps) { const { urlParams, uiFilters } = useUrlParams(); const { serviceName, serviceNodeName } = match.params; - const { agentName } = useAgentName(); - const { data } = useServiceMetricCharts(urlParams, agentName); + const { agentName } = useApmServiceContext(); + const { data } = useServiceMetricChartsFetcher({ serviceNodeName }); const { start, end } = urlParams; const { data: { host, containerId } = INITIAL_DATA, status } = useFetcher( @@ -75,11 +83,10 @@ export function ServiceNodeMetrics({ match }: ServiceNodeMetricsProps) { ); const isLoading = status === FETCH_STATUS.LOADING; - const isAggregatedData = serviceNodeName === SERVICE_NODE_NAME_MISSING; return ( -
+ <> @@ -89,7 +96,6 @@ export function ServiceNodeMetrics({ match }: ServiceNodeMetricsProps) { - {isAggregatedData ? ( ) : ( - + - + - - )} - - {agentName && ( - - - {data.charts.map((chart) => ( - - - - - - ))} - - - + )} -
+ + + {agentName && ( + + + {data.charts.map((chart) => ( + + + + + + ))} + + + + )} + + ); } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx index f734abe27573ca..dcb407d27e6901 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx @@ -15,11 +15,13 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useTrackPageview } from '../../../../../observability/public'; import { isRumAgentName } from '../../../../common/agent_name'; -import { ChartsSyncContextProvider } from '../../../context/charts_sync_context'; +import { ChartPointerEventContextProvider } from '../../../context/chart_pointer_event/chart_pointer_event_context'; +import { TransactionBreakdownChart } from '../../shared/charts/transaction_breakdown_chart'; import { TransactionErrorRateChart } from '../../shared/charts/transaction_error_rate_chart'; import { ServiceMapLink } from '../../shared/Links/apm/ServiceMapLink'; import { SearchBar } from '../../shared/search_bar'; import { ServiceOverviewErrorsTable } from './service_overview_errors_table'; +import { ServiceOverviewThroughputChart } from './service_overview_throughput_chart'; import { ServiceOverviewTransactionsTable } from './service_overview_transactions_table'; import { TableLinkFlexItem } from './table_link_flex_item'; @@ -42,7 +44,7 @@ export function ServiceOverview({ useTrackPageview({ app: 'apm', path: 'service_overview', delay: 15000 }); return ( - + @@ -63,18 +65,7 @@ export function ServiceOverview({ - - -

- {i18n.translate( - 'xpack.apm.serviceOverview.trafficChartTitle', - { - defaultMessage: 'Traffic', - } - )} -

-
-
+
@@ -103,22 +94,7 @@ export function ServiceOverview({ - - - - -

- {i18n.translate( - 'xpack.apm.serviceOverview.averageDurationBySpanTypeChartTitle', - { - defaultMessage: 'Average duration by span type', - } - )} -

-
-
-
-
+
@@ -184,6 +160,6 @@ export function ServiceOverview({
-
+ ); } diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx index 8f9e76a5a79a65..5b05497b482ce8 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview.test.tsx @@ -8,20 +8,22 @@ import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { CoreStart } from 'src/core/public'; import { createKibanaReactContext } from '../../../../../../../src/plugins/kibana_react/public'; -import { ApmPluginContextValue } from '../../../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../../../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { MockUrlParamsContextProvider } from '../../../context/UrlParamsContext/MockUrlParamsContextProvider'; -import * as useDynamicIndexPatternHooks from '../../../hooks/useDynamicIndexPattern'; -import * as useFetcherHooks from '../../../hooks/useFetcher'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +} from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; +import * as useDynamicIndexPatternHooks from '../../../hooks/use_dynamic_index_pattern'; +import * as useFetcherHooks from '../../../hooks/use_fetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; +import * as useAnnotationsHooks from '../../../context/annotations/use_annotations_context'; +import * as useTransactionBreakdownHooks from '../../shared/charts/transaction_breakdown_chart/use_transaction_breakdown'; import { renderWithTheme } from '../../../utils/testHelpers'; import { ServiceOverview } from './'; const KibanaReactContext = createKibanaReactContext({ - usageCollection: { reportUiStats: () => {} }, + usageCollection: { reportUiCounter: () => {} }, } as Partial); function Wrapper({ children }: { children?: ReactNode }) { @@ -54,7 +56,10 @@ function Wrapper({ children }: { children?: ReactNode }) { describe('ServiceOverview', () => { it('renders', () => { jest - .spyOn(useDynamicIndexPatternHooks, 'useDynamicIndexPattern') + .spyOn(useAnnotationsHooks, 'useAnnotationsContext') + .mockReturnValue({ annotations: [] }); + jest + .spyOn(useDynamicIndexPatternHooks, 'useDynamicIndexPatternFetcher') .mockReturnValue({ indexPattern: undefined, status: FETCH_STATUS.SUCCESS, @@ -67,10 +72,18 @@ describe('ServiceOverview', () => { sort: { direction: 'desc', field: 'test field' }, }, totalItemCount: 0, + throughput: [], }, refetch: () => {}, status: FETCH_STATUS.SUCCESS, }); + jest + .spyOn(useTransactionBreakdownHooks, 'useTransactionBreakdown') + .mockReturnValue({ + data: { timeseries: [] }, + error: undefined, + status: FETCH_STATUS.SUCCESS, + }); expect(() => renderWithTheme(, { diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx index b4228878dd9f5b..6e183924a80a73 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_errors_table/index.tsx @@ -14,8 +14,8 @@ import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; import styled from 'styled-components'; import { asInteger } from '../../../../../common/utils/formatters'; -import { FETCH_STATUS, useFetcher } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { callApmApi } from '../../../../services/rest/createCallApmApi'; import { px, truncate, unit } from '../../../../style/variables'; import { SparkPlotWithValueLabel } from '../../../shared/charts/spark_plot/spark_plot_with_value_label'; diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx new file mode 100644 index 00000000000000..1662f44d1e4216 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_throughput_chart.tsx @@ -0,0 +1,80 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiPanel, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { useParams } from 'react-router-dom'; +import { asTransactionRate } from '../../../../common/utils/formatters'; +import { useFetcher } from '../../../hooks/use_fetcher'; +import { useTheme } from '../../../hooks/use_theme'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; +import { callApmApi } from '../../../services/rest/createCallApmApi'; +import { TimeseriesChart } from '../../shared/charts/timeseries_chart'; + +export function ServiceOverviewThroughputChart({ + height, +}: { + height?: number; +}) { + const theme = useTheme(); + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams, uiFilters } = useUrlParams(); + const { transactionType } = useApmServiceContext(); + const { start, end } = urlParams; + + const { data, status } = useFetcher(() => { + if (serviceName && transactionType && start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', + params: { + path: { + serviceName, + }, + query: { + start, + end, + transactionType, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, [serviceName, start, end, uiFilters, transactionType]); + + return ( + + +

+ {i18n.translate('xpack.apm.serviceOverview.throughtputChartTitle', { + defaultMessage: 'Traffic', + })} +

+
+ +
+ ); +} diff --git a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx index e241bc2fed05a4..e4260a2533d36f 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/service_overview_transactions_table/index.tsx @@ -21,8 +21,8 @@ import { asTransactionRate, } from '../../../../../common/utils/formatters'; import { px, truncate, unit } from '../../../../style/variables'; -import { FETCH_STATUS, useFetcher } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APIReturnType, callApmApi, @@ -36,7 +36,7 @@ import { ImpactBar } from '../../../shared/ImpactBar'; import { ServiceOverviewTable } from '../service_overview_table'; type ServiceTransactionGroupItem = ValuesType< - APIReturnType<'GET /api/apm/services/{serviceName}/overview_transaction_groups'>['transactionGroups'] + APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/overview'>['transactionGroups'] >; interface Props { @@ -100,7 +100,7 @@ export function ServiceOverviewTransactionsTable(props: Props) { return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/overview_transaction_groups', + 'GET /api/apm/services/{serviceName}/transactions/groups/overview', params: { path: { serviceName }, query: { diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/TransactionList.stories.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/TransactionList.stories.tsx similarity index 94% rename from x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/TransactionList.stories.tsx rename to x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/TransactionList.stories.tsx index 953397b9f3d5fb..bc73a3acf41356 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/TransactionList/TransactionList.stories.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/TransactionList.stories.tsx @@ -7,10 +7,10 @@ import React, { ComponentType } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { APIReturnType } from '../../../../services/rest/createCallApmApi'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; import { TransactionList } from './'; -type TransactionGroup = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups'>['items'][0]; +type TransactionGroup = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups'>['items'][0]; export default { title: 'app/TransactionOverview/TransactionList', diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/index.tsx new file mode 100644 index 00000000000000..ade0a0563b0dc3 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/TransactionList/index.tsx @@ -0,0 +1,158 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiToolTip, EuiIconTip } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useMemo } from 'react'; +import styled from 'styled-components'; +import { APIReturnType } from '../../../../services/rest/createCallApmApi'; +import { + asMillisecondDuration, + asTransactionRate, +} from '../../../../../common/utils/formatters'; +import { fontFamilyCode, truncate } from '../../../../style/variables'; +import { ImpactBar } from '../../../shared/ImpactBar'; +import { ITableColumn, ManagedTable } from '../../../shared/ManagedTable'; +import { LoadingStatePrompt } from '../../../shared/LoadingStatePrompt'; +import { EmptyMessage } from '../../../shared/EmptyMessage'; +import { TransactionDetailLink } from '../../../shared/Links/apm/TransactionDetailLink'; + +type TransactionGroup = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups'>['items'][0]; + +// Truncate both the link and the child span (the tooltip anchor.) The link so +// it doesn't overflow, and the anchor so we get the ellipsis. +const TransactionNameLink = styled(TransactionDetailLink)` + font-family: ${fontFamilyCode}; + white-space: nowrap; + ${truncate('100%')}; + + > span { + ${truncate('100%')}; + } +`; + +interface Props { + items: TransactionGroup[]; + isLoading: boolean; +} + +export function TransactionList({ items, isLoading }: Props) { + const columns: Array> = useMemo( + () => [ + { + field: 'name', + name: i18n.translate('xpack.apm.transactionsTable.nameColumnLabel', { + defaultMessage: 'Name', + }), + width: '50%', + sortable: true, + render: ( + _, + { serviceName, transactionName, transactionType }: TransactionGroup + ) => { + return ( + + + <>{transactionName} + + + ); + }, + }, + { + field: 'averageResponseTime', + name: i18n.translate( + 'xpack.apm.transactionsTable.avgDurationColumnLabel', + { + defaultMessage: 'Avg. duration', + } + ), + sortable: true, + dataType: 'number', + render: (time: number) => asMillisecondDuration(time), + }, + { + field: 'p95', + name: i18n.translate( + 'xpack.apm.transactionsTable.95thPercentileColumnLabel', + { + defaultMessage: '95th percentile', + } + ), + sortable: true, + dataType: 'number', + render: (time: number) => asMillisecondDuration(time), + }, + { + field: 'transactionsPerMinute', + name: i18n.translate( + 'xpack.apm.transactionsTable.transactionsPerMinuteColumnLabel', + { + defaultMessage: 'Trans. per minute', + } + ), + sortable: true, + dataType: 'number', + render: (value: number) => asTransactionRate(value), + }, + { + field: 'impact', + name: ( + <> + {i18n.translate('xpack.apm.transactionsTable.impactColumnLabel', { + defaultMessage: 'Impact', + })}{' '} + + + ), + sortable: true, + dataType: 'number', + render: (value: number) => , + }, + ], + [] + ); + + const noItemsMessage = ( + + ); + + return ( + : noItemsMessage} + columns={columns} + items={items} + initialSortField="impact" + initialSortDirection="desc" + initialPageSize={25} + /> + ); +} diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx new file mode 100644 index 00000000000000..9ff4ad916b174c --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/index.tsx @@ -0,0 +1,195 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + EuiCallOut, + EuiCode, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiPage, + EuiPanel, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { Location } from 'history'; +import React, { useMemo } from 'react'; +import { useLocation } from 'react-router-dom'; +import { useTrackPageview } from '../../../../../observability/public'; +import { Projection } from '../../../../common/projections'; +import { TRANSACTION_PAGE_LOAD } from '../../../../common/transaction_types'; +import { IUrlParams } from '../../../context/url_params_context/types'; +import { useTransactionChartsFetcher } from '../../../hooks/use_transaction_charts_fetcher'; +import { useTransactionListFetcher } from './use_transaction_list'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; +import { TransactionCharts } from '../../shared/charts/transaction_charts'; +import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; +import { fromQuery, toQuery } from '../../shared/Links/url_helpers'; +import { LocalUIFilters } from '../../shared/LocalUIFilters'; +import { TransactionTypeFilter } from '../../shared/LocalUIFilters/TransactionTypeFilter'; +import { SearchBar } from '../../shared/search_bar'; +import { Correlations } from '../Correlations'; +import { TransactionList } from './TransactionList'; +import { useRedirect } from './useRedirect'; +import { UserExperienceCallout } from './user_experience_callout'; +import { useApmServiceContext } from '../../../context/apm_service/use_apm_service_context'; + +function getRedirectLocation({ + location, + transactionType, + urlParams, +}: { + location: Location; + transactionType?: string; + urlParams: IUrlParams; +}): Location | undefined { + const transactionTypeFromUrlParams = urlParams.transactionType; + + if (!transactionTypeFromUrlParams && transactionType) { + return { + ...location, + search: fromQuery({ + ...toQuery(location.search), + transactionType, + }), + }; + } +} + +interface TransactionOverviewProps { + serviceName: string; +} + +export function TransactionOverview({ serviceName }: TransactionOverviewProps) { + const location = useLocation(); + const { urlParams } = useUrlParams(); + const { transactionType, transactionTypes } = useApmServiceContext(); + + // redirect to first transaction type + useRedirect(getRedirectLocation({ location, transactionType, urlParams })); + + const { + transactionChartsData, + transactionChartsStatus, + } = useTransactionChartsFetcher(); + + useTrackPageview({ app: 'apm', path: 'transaction_overview' }); + useTrackPageview({ app: 'apm', path: 'transaction_overview', delay: 15000 }); + const { + transactionListData, + transactionListStatus, + } = useTransactionListFetcher(); + + const localFiltersConfig: React.ComponentProps< + typeof LocalUIFilters + > = useMemo( + () => ({ + filterNames: [ + 'transactionResult', + 'host', + 'containerId', + 'podName', + 'serviceVersion', + ], + params: { + serviceName, + transactionType, + }, + projection: Projection.transactionGroups, + }), + [serviceName, transactionType] + ); + + // TODO: improve urlParams typings. + // `serviceName` or `transactionType` will never be undefined here, and this check should not be needed + if (!serviceName || !transactionType) { + return null; + } + + return ( + <> + + + + + + + + + + + + + + {transactionType === TRANSACTION_PAGE_LOAD && ( + <> + + + + )} + + + + +

Transactions

+
+ + {!transactionListData.isAggregationAccurate && ( + +

+ + xpack.apm.ui.transactionGroupBucketSize + + ), + }} + /> + + + {i18n.translate( + 'xpack.apm.transactionCardinalityWarning.docsLink', + { defaultMessage: 'Learn more in the docs' } + )} + +

+
+ )} + + +
+
+
+
+ + ); +} diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx new file mode 100644 index 00000000000000..bfb9c51bc245e5 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/transaction_overview.test.tsx @@ -0,0 +1,159 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { fireEvent, getByText, queryByLabelText } from '@testing-library/react'; +import { createMemoryHistory } from 'history'; +import { CoreStart } from 'kibana/public'; +import React from 'react'; +import { Router } from 'react-router-dom'; +import { createKibanaReactContext } from 'src/plugins/kibana_react/public'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { ApmServiceContextProvider } from '../../../context/apm_service/apm_service_context'; +import { UrlParamsProvider } from '../../../context/url_params_context/url_params_context'; +import { IUrlParams } from '../../../context/url_params_context/types'; +import * as useFetcherHook from '../../../hooks/use_fetcher'; +import * as useServiceTransactionTypesHook from '../../../context/apm_service/use_service_transaction_types_fetcher'; +import * as useServiceAgentNameHook from '../../../context/apm_service/use_service_agent_name_fetcher'; +import { + disableConsoleWarning, + renderWithTheme, +} from '../../../utils/testHelpers'; +import { fromQuery } from '../../shared/Links/url_helpers'; +import { TransactionOverview } from './'; + +const KibanaReactContext = createKibanaReactContext({ + usageCollection: { reportUiCounter: () => {} }, +} as Partial); + +const history = createMemoryHistory(); +jest.spyOn(history, 'push'); +jest.spyOn(history, 'replace'); + +function setup({ + urlParams, + serviceTransactionTypes, +}: { + urlParams: IUrlParams; + serviceTransactionTypes: string[]; +}) { + history.replace({ + pathname: '/services/foo/transactions', + search: fromQuery(urlParams), + }); + + // mock transaction types + jest + .spyOn(useServiceTransactionTypesHook, 'useServiceTransactionTypesFetcher') + .mockReturnValue(serviceTransactionTypes); + + // mock agent + jest + .spyOn(useServiceAgentNameHook, 'useServiceAgentNameFetcher') + .mockReturnValue({ + agentName: 'nodejs', + error: undefined, + status: useFetcherHook.FETCH_STATUS.SUCCESS, + }); + + jest.spyOn(useFetcherHook, 'useFetcher').mockReturnValue({} as any); + + return renderWithTheme( + + + + + + + + + + + + ); +} + +describe('TransactionOverview', () => { + let consoleMock: jest.SpyInstance; + + beforeAll(() => { + consoleMock = disableConsoleWarning('Warning: componentWillReceiveProps'); + }); + + afterAll(() => { + consoleMock.mockRestore(); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + describe('when no transaction type is given in urlParams', () => { + it('should redirect to first type', () => { + setup({ + serviceTransactionTypes: ['firstType', 'secondType'], + urlParams: {}, + }); + expect(history.replace).toHaveBeenCalledWith( + expect.objectContaining({ + search: 'transactionType=firstType', + }) + ); + }); + }); + + const FILTER_BY_TYPE_LABEL = 'Transaction type'; + + describe('when transactionType is selected and multiple transaction types are given', () => { + it('renders a radio group with transaction types', () => { + const { container } = setup({ + serviceTransactionTypes: ['firstType', 'secondType'], + urlParams: { + transactionType: 'secondType', + }, + }); + + expect(getByText(container, 'firstType')).toBeInTheDocument(); + expect(getByText(container, 'secondType')).toBeInTheDocument(); + + expect(getByText(container, 'firstType')).not.toBeNull(); + }); + + it('should update the URL when a transaction type is selected', () => { + const { container } = setup({ + serviceTransactionTypes: ['firstType', 'secondType'], + urlParams: { + transactionType: 'secondType', + }, + }); + + expect(history.location.search).toEqual( + '?transactionType=secondType&rangeFrom=now-15m&rangeTo=now' + ); + expect(getByText(container, 'firstType')).toBeInTheDocument(); + expect(getByText(container, 'secondType')).toBeInTheDocument(); + + fireEvent.click(getByText(container, 'firstType')); + + expect(history.push).toHaveBeenCalled(); + expect(history.location.search).toEqual( + '?transactionType=firstType&rangeFrom=now-15m&rangeTo=now' + ); + }); + }); + + describe('when a transaction type is selected, and there are no other transaction types', () => { + it('does not render a radio group with transaction types', () => { + const { container } = setup({ + serviceTransactionTypes: ['firstType'], + urlParams: { + transactionType: 'firstType', + }, + }); + + expect(queryByLabelText(container, FILTER_BY_TYPE_LABEL)).toBeNull(); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/useRedirect.ts b/x-pack/plugins/apm/public/components/app/transaction_overview/useRedirect.ts similarity index 100% rename from x-pack/plugins/apm/public/components/app/TransactionOverview/useRedirect.ts rename to x-pack/plugins/apm/public/components/app/transaction_overview/useRedirect.ts diff --git a/x-pack/plugins/apm/public/components/app/transaction_overview/use_transaction_list.ts b/x-pack/plugins/apm/public/components/app/transaction_overview/use_transaction_list.ts new file mode 100644 index 00000000000000..0ca2867852f262 --- /dev/null +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/use_transaction_list.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; +import { APIReturnType } from '../../../services/rest/createCallApmApi'; +import { useFetcher } from '../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; + +type TransactionsAPIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups'>; + +const DEFAULT_RESPONSE: Partial = { + items: undefined, + isAggregationAccurate: true, + bucketSize: 0, +}; + +export function useTransactionListFetcher() { + const { urlParams, uiFilters } = useUrlParams(); + const { serviceName } = useParams<{ serviceName?: string }>(); + const { transactionType, start, end } = urlParams; + const { data = DEFAULT_RESPONSE, error, status } = useFetcher( + (callApmApi) => { + if (serviceName && start && end && transactionType) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/transactions/groups', + params: { + path: { serviceName }, + query: { + start, + end, + transactionType, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, + [serviceName, start, end, transactionType, uiFilters] + ); + + return { + transactionListData: data, + transactionListStatus: status, + transactionListError: error, + }; +} diff --git a/x-pack/plugins/apm/public/components/app/TransactionOverview/user_experience_callout.tsx b/x-pack/plugins/apm/public/components/app/transaction_overview/user_experience_callout.tsx similarity index 94% rename from x-pack/plugins/apm/public/components/app/TransactionOverview/user_experience_callout.tsx rename to x-pack/plugins/apm/public/components/app/transaction_overview/user_experience_callout.tsx index 41e84d4acfba5b..6e1154a458d6e9 100644 --- a/x-pack/plugins/apm/public/components/app/TransactionOverview/user_experience_callout.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_overview/user_experience_callout.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { EuiButton, EuiCallOut, EuiSpacer, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; export function UserExperienceCallout() { const { core } = useApmPluginContext(); diff --git a/x-pack/plugins/apm/public/components/shared/ApmHeader/apm_header.stories.tsx b/x-pack/plugins/apm/public/components/shared/ApmHeader/apm_header.stories.tsx index 56501d8c916f47..dd88b1ea7eb734 100644 --- a/x-pack/plugins/apm/public/components/shared/ApmHeader/apm_header.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/ApmHeader/apm_header.stories.tsx @@ -8,8 +8,8 @@ import { EuiTitle } from '@elastic/eui'; import React, { ComponentType } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { HttpSetup } from '../../../../../../../src/core/public'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; -import { MockUrlParamsContextProvider } from '../../../context/UrlParamsContext/MockUrlParamsContextProvider'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; +import { MockUrlParamsContextProvider } from '../../../context/url_params_context/mock_url_params_context_provider'; import { createCallApmApi } from '../../../services/rest/createCallApmApi'; import { ApmHeader } from './'; diff --git a/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx b/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx index a806a3ea601541..04e03cda6a61e8 100644 --- a/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/ApmHeader/index.tsx @@ -9,7 +9,7 @@ import React, { ReactNode } from 'react'; import styled from 'styled-components'; import { HeaderMenuPortal } from '../../../../../observability/public'; import { ActionMenu } from '../../../application/action_menu'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { EnvironmentFilter } from '../EnvironmentFilter'; const HeaderFlexGroup = styled(EuiFlexGroup)` diff --git a/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx b/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx index 520cc2f423ddde..222c27cc7ed6d8 100644 --- a/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/DatePicker/date_picker.test.tsx @@ -10,12 +10,12 @@ import { mount } from 'enzyme'; import { createMemoryHistory } from 'history'; import React, { ReactNode } from 'react'; import { Router } from 'react-router-dom'; -import { MockApmPluginContextWrapper } from '../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../context/apm_plugin/mock_apm_plugin_context'; import { UrlParamsContext, useUiFilters, -} from '../../../context/UrlParamsContext'; -import { IUrlParams } from '../../../context/UrlParamsContext/types'; +} from '../../../context/url_params_context/url_params_context'; +import { IUrlParams } from '../../../context/url_params_context/types'; import { DatePicker } from './'; const history = createMemoryHistory(); diff --git a/x-pack/plugins/apm/public/components/shared/DatePicker/index.tsx b/x-pack/plugins/apm/public/components/shared/DatePicker/index.tsx index f35cc067489118..f847ce0b6e96fa 100644 --- a/x-pack/plugins/apm/public/components/shared/DatePicker/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/DatePicker/index.tsx @@ -8,8 +8,8 @@ import { EuiSuperDatePicker } from '@elastic/eui'; import React, { useEffect } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; import { UI_SETTINGS } from '../../../../../../../src/plugins/data/common'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { clearCache } from '../../../services/rest/callApi'; import { fromQuery, toQuery } from '../Links/url_helpers'; import { TimePickerQuickRange, TimePickerTimeDefaults } from './typings'; diff --git a/x-pack/plugins/apm/public/components/shared/EnvironmentFilter/index.tsx b/x-pack/plugins/apm/public/components/shared/EnvironmentFilter/index.tsx index cace4c2770f370..4522cfa7195fd4 100644 --- a/x-pack/plugins/apm/public/components/shared/EnvironmentFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/EnvironmentFilter/index.tsx @@ -13,8 +13,8 @@ import { ENVIRONMENT_ALL, ENVIRONMENT_NOT_DEFINED, } from '../../../../common/environment_filter_values'; -import { useEnvironments } from '../../../hooks/useEnvironments'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useEnvironmentsFetcher } from '../../../hooks/use_environments_fetcher'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../Links/url_helpers'; function updateEnvironmentUrl( @@ -67,7 +67,7 @@ export function EnvironmentFilter() { const { environment } = uiFilters; const { start, end } = urlParams; - const { environments, status = 'loading' } = useEnvironments({ + const { environments, status = 'loading' } = useEnvironmentsFetcher({ serviceName, start, end, diff --git a/x-pack/plugins/apm/public/components/shared/KueryBar/get_bool_filter.ts b/x-pack/plugins/apm/public/components/shared/KueryBar/get_bool_filter.ts index e7dd03db6b63cf..2276704edc342e 100644 --- a/x-pack/plugins/apm/public/components/shared/KueryBar/get_bool_filter.ts +++ b/x-pack/plugins/apm/public/components/shared/KueryBar/get_bool_filter.ts @@ -13,7 +13,7 @@ import { TRANSACTION_TYPE, } from '../../../../common/elasticsearch_fieldnames'; import { UIProcessorEvent } from '../../../../common/processor_event'; -import { IUrlParams } from '../../../context/UrlParamsContext/types'; +import { IUrlParams } from '../../../context/url_params_context/types'; export function getBoolFilter({ groupId, diff --git a/x-pack/plugins/apm/public/components/shared/KueryBar/index.tsx b/x-pack/plugins/apm/public/components/shared/KueryBar/index.tsx index 2ef93fc32200e7..5284e3f6aa0113 100644 --- a/x-pack/plugins/apm/public/components/shared/KueryBar/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/KueryBar/index.tsx @@ -14,9 +14,9 @@ import { IIndexPattern, QuerySuggestion, } from '../../../../../../../src/plugins/data/public'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; -import { useDynamicIndexPattern } from '../../../hooks/useDynamicIndexPattern'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; +import { useDynamicIndexPatternFetcher } from '../../../hooks/use_dynamic_index_pattern'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../Links/url_helpers'; import { getBoolFilter } from './get_bool_filter'; // @ts-expect-error @@ -65,7 +65,7 @@ export function KueryBar() { const example = examples[processorEvent || 'defaults']; - const { indexPattern } = useDynamicIndexPattern(processorEvent); + const { indexPattern } = useDynamicIndexPatternFetcher(processorEvent); const placeholder = i18n.translate('xpack.apm.kueryBar.placeholder', { defaultMessage: `Search {event, select, diff --git a/x-pack/plugins/apm/public/components/shared/LicensePrompt/LicensePrompt.stories.tsx b/x-pack/plugins/apm/public/components/shared/LicensePrompt/LicensePrompt.stories.tsx index 1819e71a49753a..bd68e7db777145 100644 --- a/x-pack/plugins/apm/public/components/shared/LicensePrompt/LicensePrompt.stories.tsx +++ b/x-pack/plugins/apm/public/components/shared/LicensePrompt/LicensePrompt.stories.tsx @@ -9,7 +9,7 @@ import { LicensePrompt } from '.'; import { ApmPluginContext, ApmPluginContextValue, -} from '../../../context/ApmPluginContext'; +} from '../../../context/apm_plugin/apm_plugin_context'; const contextMock = ({ core: { http: { basePath: { prepend: () => {} } } }, diff --git a/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/DiscoverLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/DiscoverLink.tsx index 93b5672aa54f98..70286655bba882 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/DiscoverLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/DiscoverLinks/DiscoverLink.tsx @@ -12,7 +12,7 @@ import { useLocation } from 'react-router-dom'; import rison, { RisonValue } from 'rison-node'; import url from 'url'; import { APM_STATIC_INDEX_PATTERN_ID } from '../../../../../../../../src/plugins/apm_oss/public'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { getTimepickerRisonData } from '../rison_helpers'; interface Props { diff --git a/x-pack/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx index 8c2829a515f831..e2447cc7a67a53 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/ElasticDocsLink.tsx @@ -6,7 +6,7 @@ import { EuiLink, EuiLinkAnchorProps } from '@elastic/eui'; import React from 'react'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; // union type constisting of valid guide sections that we link to type DocsSection = '/apm/get-started' | '/x-pack' | '/apm/server' | '/kibana'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/InfraLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/InfraLink.tsx index 630235e54c9fa5..6d4bbbbfc2f804 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/InfraLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/InfraLink.tsx @@ -9,7 +9,7 @@ import { IBasePath } from 'kibana/public'; import React from 'react'; import url from 'url'; import { InfraAppId } from '../../../../../infra/public'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { fromQuery } from './url_helpers'; interface InfraQueryParams { diff --git a/x-pack/plugins/apm/public/components/shared/Links/KibanaLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/KibanaLink.tsx index 8aa0d4f5a33543..ab44374f48167f 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/KibanaLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/KibanaLink.tsx @@ -7,7 +7,7 @@ import { EuiLink, EuiLinkAnchorProps } from '@elastic/eui'; import React from 'react'; import url from 'url'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; interface Props extends EuiLinkAnchorProps { path?: string; diff --git a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLJobLink.test.tsx b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLJobLink.test.tsx index 7e18132e59cf31..b13b1f89da352a 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLJobLink.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLJobLink.test.tsx @@ -22,7 +22,7 @@ describe('MLJobLink', () => { ); expect(href).toMatchInlineSnapshot( - `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(myservicename-mytransactiontype-high_mean_response_time)),refreshInterval:(pause:!t,value:0),time:(from:now%2Fw,to:now-4h))&_a=(mlTimeSeriesExplorer:())"` + `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(myservicename-mytransactiontype-high_mean_response_time)),refreshInterval:(pause:!t,value:0),time:(from:now%2Fw,to:now-4h))&_a=(timeseriesexplorer:(mlTimeSeriesExplorer:()))"` ); }); it('should produce the correct URL with jobId, serviceName, and transactionType', async () => { @@ -41,7 +41,7 @@ describe('MLJobLink', () => { ); expect(href).toMatchInlineSnapshot( - `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(myservicename-mytransactiontype-high_mean_response_time)),refreshInterval:(pause:!t,value:0),time:(from:now%2Fw,to:now-4h))&_a=(mlTimeSeriesExplorer:(entities:(service.name:opbeans-test,transaction.type:request)))"` + `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(myservicename-mytransactiontype-high_mean_response_time)),refreshInterval:(pause:!t,value:0),time:(from:now%2Fw,to:now-4h))&_a=(timeseriesexplorer:(mlTimeSeriesExplorer:(entities:(service.name:opbeans-test,transaction.type:request))))"` ); }); @@ -61,7 +61,7 @@ describe('MLJobLink', () => { ); expect(href).toMatchInlineSnapshot( - `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(apm-production-485b-high_mean_transaction_duration)),refreshInterval:(pause:!t,value:10000),time:(from:'2020-07-29T17:27:29.000Z',to:'2020-07-29T18:45:00.000Z'))&_a=(mlTimeSeriesExplorer:(entities:(service.name:opbeans-java,transaction.type:request)))"` + `"/app/ml/timeseriesexplorer?_g=(ml:(jobIds:!(apm-production-485b-high_mean_transaction_duration)),refreshInterval:(pause:!t,value:10000),time:(from:'2020-07-29T17:27:29.000Z',to:'2020-07-29T18:45:00.000Z'))&_a=(timeseriesexplorer:(mlTimeSeriesExplorer:(entities:(service.name:opbeans-java,transaction.type:request))))"` ); }); }); diff --git a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLLink.tsx index 5fbcd475cb47ba..7bf017fb239e3c 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/MLLink.tsx @@ -6,9 +6,9 @@ import { EuiLink } from '@elastic/eui'; import React from 'react'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { useMlHref, ML_PAGES } from '../../../../../../ml/public'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; interface MlRisonData { ml?: { diff --git a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/useTimeSeriesExplorerHref.ts b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/useTimeSeriesExplorerHref.ts index 0f671fd363c75a..eabef034bf3d99 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/useTimeSeriesExplorerHref.ts +++ b/x-pack/plugins/apm/public/components/shared/Links/MachineLearningLinks/useTimeSeriesExplorerHref.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; import { useMlHref } from '../../../../../../ml/public'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; export function useTimeSeriesExplorerHref({ jobId, diff --git a/x-pack/plugins/apm/public/components/shared/Links/SetupInstructionsLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/SetupInstructionsLink.tsx index 0ff73d91d7c5b0..68bee36dbe2832 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/SetupInstructionsLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/SetupInstructionsLink.tsx @@ -7,7 +7,7 @@ import { EuiButton, EuiButtonEmpty, EuiLink } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; const SETUP_INSTRUCTIONS_LABEL = i18n.translate( 'xpack.apm.setupInstructionsButtonLabel', diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/APMLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/APMLink.tsx index 41c932bf9c9f55..98046193e3807e 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/APMLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/APMLink.tsx @@ -11,8 +11,8 @@ import React from 'react'; import { useLocation } from 'react-router-dom'; import url from 'url'; import { pickKeys } from '../../../../../common/utils/pick_keys'; -import { useApmPluginContext } from '../../../../hooks/useApmPluginContext'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APMQueryParams, fromQuery, toQuery } from '../url_helpers'; interface Props extends EuiLinkAnchorProps { diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/ErrorOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/ErrorOverviewLink.tsx index 30b91fe2564f16..dcf21de7dca8df 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/ErrorOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/ErrorOverviewLink.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { pickKeys } from '../../../../../common/utils/pick_keys'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APMQueryParams } from '../url_helpers'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/MetricOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/MetricOverviewLink.tsx index fbae80203f03bb..de7130e8786081 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/MetricOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/MetricOverviewLink.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { pickKeys } from '../../../../../common/utils/pick_keys'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APMQueryParams } from '../url_helpers'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeMetricOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeMetricOverviewLink.tsx index 2553ec4353194d..afdb177e467d82 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeMetricOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeMetricOverviewLink.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { APMLink, APMLinkExtendProps } from './APMLink'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { pickKeys } from '../../../../../common/utils/pick_keys'; interface Props extends APMLinkExtendProps { diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeOverviewLink.tsx index 0a9553bcbfe6ca..c107b436717c2d 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/ServiceNodeOverviewLink.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { pickKeys } from '../../../../../common/utils/pick_keys'; import { APMQueryParams } from '../url_helpers'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/TraceOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/TraceOverviewLink.tsx index 6aa362707800fd..caa1498e6df87a 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/TraceOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/TraceOverviewLink.tsx @@ -11,7 +11,7 @@ */ import React from 'react'; import { pickKeys } from '../../../../../common/utils/pick_keys'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APMQueryParams } from '../url_helpers'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionDetailLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionDetailLink.tsx index c9b26b557512ca..ee798e0208c2ba 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionDetailLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionDetailLink.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { APMLink, APMLinkExtendProps } from './APMLink'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { pickKeys } from '../../../../../common/utils/pick_keys'; interface Props extends APMLinkExtendProps { diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionOverviewLink.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionOverviewLink.tsx index 23e795b026d0cf..92ff1b8a68ac02 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionOverviewLink.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/TransactionOverviewLink.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { pickKeys } from '../../../../../common/utils/pick_keys'; import { APMQueryParams } from '../url_helpers'; diff --git a/x-pack/plugins/apm/public/components/shared/Links/apm/service_inventory_link.tsx b/x-pack/plugins/apm/public/components/shared/Links/apm/service_inventory_link.tsx index 039d9dcb1c0ed9..318a1590be77c3 100644 --- a/x-pack/plugins/apm/public/components/shared/Links/apm/service_inventory_link.tsx +++ b/x-pack/plugins/apm/public/components/shared/Links/apm/service_inventory_link.tsx @@ -11,7 +11,7 @@ */ import React from 'react'; import { pickKeys } from '../../../../../common/utils/pick_keys'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { APMQueryParams } from '../url_helpers'; import { APMLink, APMLinkExtendProps, useAPMHref } from './APMLink'; diff --git a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/TransactionTypeFilter/index.tsx b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/TransactionTypeFilter/index.tsx index e6d266091ae521..43f7b089a2965d 100644 --- a/x-pack/plugins/apm/public/components/shared/LocalUIFilters/TransactionTypeFilter/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/LocalUIFilters/TransactionTypeFilter/index.tsx @@ -13,7 +13,7 @@ import { import { i18n } from '@kbn/i18n'; import React from 'react'; import { useHistory } from 'react-router-dom'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../../Links/url_helpers'; interface Props { diff --git a/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx b/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx index 9db563a0f6ba87..6f62fd24e71ea9 100644 --- a/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/ManagedTable/index.tsx @@ -8,7 +8,7 @@ import { EuiBasicTable, EuiBasicTableColumn } from '@elastic/eui'; import { orderBy } from 'lodash'; import React, { ReactNode, useCallback, useMemo } from 'react'; import { useHistory } from 'react-router-dom'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { fromQuery, toQuery } from '../Links/url_helpers'; // TODO: this should really be imported from EUI diff --git a/x-pack/plugins/apm/public/components/shared/MetadataTable/ErrorMetadata/__test__/ErrorMetadata.test.tsx b/x-pack/plugins/apm/public/components/shared/MetadataTable/ErrorMetadata/__test__/ErrorMetadata.test.tsx index e95122f54aff1e..8f44d98cecdf7b 100644 --- a/x-pack/plugins/apm/public/components/shared/MetadataTable/ErrorMetadata/__test__/ErrorMetadata.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/MetadataTable/ErrorMetadata/__test__/ErrorMetadata.test.tsx @@ -9,7 +9,7 @@ import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { ErrorMetadata } from '..'; import { APMError } from '../../../../../../typings/es_schemas/ui/apm_error'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument, expectTextsNotInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/MetadataTable/SpanMetadata/__test__/SpanMetadata.test.tsx b/x-pack/plugins/apm/public/components/shared/MetadataTable/SpanMetadata/__test__/SpanMetadata.test.tsx index 1f10d923e351e3..c97e5061873478 100644 --- a/x-pack/plugins/apm/public/components/shared/MetadataTable/SpanMetadata/__test__/SpanMetadata.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/MetadataTable/SpanMetadata/__test__/SpanMetadata.test.tsx @@ -9,7 +9,7 @@ import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { SpanMetadata } from '..'; import { Span } from '../../../../../../typings/es_schemas/ui/span'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument, expectTextsNotInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/MetadataTable/TransactionMetadata/__test__/TransactionMetadata.test.tsx b/x-pack/plugins/apm/public/components/shared/MetadataTable/TransactionMetadata/__test__/TransactionMetadata.test.tsx index 8359716fc69666..4080a300ba17f0 100644 --- a/x-pack/plugins/apm/public/components/shared/MetadataTable/TransactionMetadata/__test__/TransactionMetadata.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/MetadataTable/TransactionMetadata/__test__/TransactionMetadata.test.tsx @@ -9,7 +9,7 @@ import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { TransactionMetadata } from '..'; import { Transaction } from '../../../../../../typings/es_schemas/ui/transaction'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument, expectTextsNotInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/MetadataTable/__test__/MetadataTable.test.tsx b/x-pack/plugins/apm/public/components/shared/MetadataTable/__test__/MetadataTable.test.tsx index 8e53aa4aa10896..8a4cd588c82600 100644 --- a/x-pack/plugins/apm/public/components/shared/MetadataTable/__test__/MetadataTable.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/MetadataTable/__test__/MetadataTable.test.tsx @@ -8,7 +8,7 @@ import { render } from '@testing-library/react'; import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { MetadataTable } from '..'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument } from '../../../../utils/testHelpers'; import { SectionsWithRows } from '../helper'; diff --git a/x-pack/plugins/apm/public/components/shared/MetadataTable/index.tsx b/x-pack/plugins/apm/public/components/shared/MetadataTable/index.tsx index 1d2ac4d18a2a7b..283433fa37bf91 100644 --- a/x-pack/plugins/apm/public/components/shared/MetadataTable/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/MetadataTable/index.tsx @@ -17,7 +17,7 @@ import { i18n } from '@kbn/i18n'; import { isEmpty } from 'lodash'; import React, { useCallback } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { ElasticDocsLink } from '../../shared/Links/ElasticDocsLink'; import { HeightRetainer } from '../HeightRetainer'; import { fromQuery, toQuery } from '../Links/url_helpers'; diff --git a/x-pack/plugins/apm/public/components/shared/Stacktrace/CauseStacktrace.tsx b/x-pack/plugins/apm/public/components/shared/Stacktrace/CauseStacktrace.tsx index 50f87184f8ee7f..a36980d49db3a2 100644 --- a/x-pack/plugins/apm/public/components/shared/Stacktrace/CauseStacktrace.tsx +++ b/x-pack/plugins/apm/public/components/shared/Stacktrace/CauseStacktrace.tsx @@ -22,7 +22,7 @@ const CausedByContainer = styled('h5')` `; const CausedByHeading = styled('span')` - color: ${({ theme }) => theme.eui.textColors.subdued}; + color: ${({ theme }) => theme.eui.euiTextSubduedColor}; display: block; font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; font-weight: ${({ theme }) => theme.eui.euiFontWeightBold}; diff --git a/x-pack/plugins/apm/public/components/shared/Stacktrace/Context.tsx b/x-pack/plugins/apm/public/components/shared/Stacktrace/Context.tsx index 020137fc316725..2098ed94bef0ec 100644 --- a/x-pack/plugins/apm/public/components/shared/Stacktrace/Context.tsx +++ b/x-pack/plugins/apm/public/components/shared/Stacktrace/Context.tsx @@ -7,26 +7,18 @@ import { size } from 'lodash'; import { tint } from 'polished'; import React from 'react'; -// TODO add dependency for @types/react-syntax-highlighter -// @ts-expect-error -import javascript from 'react-syntax-highlighter/dist/languages/javascript'; -// @ts-expect-error -import python from 'react-syntax-highlighter/dist/languages/python'; -// @ts-expect-error -import ruby from 'react-syntax-highlighter/dist/languages/ruby'; -// @ts-expect-error -import SyntaxHighlighter from 'react-syntax-highlighter/dist/light'; -// @ts-expect-error -import { registerLanguage } from 'react-syntax-highlighter/dist/light'; -// @ts-expect-error -import { xcode } from 'react-syntax-highlighter/dist/styles'; +import javascript from 'react-syntax-highlighter/dist/cjs/languages/hljs/javascript'; +import python from 'react-syntax-highlighter/dist/cjs/languages/hljs/python'; +import ruby from 'react-syntax-highlighter/dist/cjs/languages/hljs/ruby'; +import xcode from 'react-syntax-highlighter/dist/cjs/styles/hljs/xcode'; +import { Light as SyntaxHighlighter } from 'react-syntax-highlighter'; import styled from 'styled-components'; import { StackframeWithLineContext } from '../../../../typings/es_schemas/raw/fields/stackframe'; import { borderRadius, px, unit, units } from '../../../style/variables'; -registerLanguage('javascript', javascript); -registerLanguage('python', python); -registerLanguage('ruby', ruby); +SyntaxHighlighter.registerLanguage('javascript', javascript); +SyntaxHighlighter.registerLanguage('python', python); +SyntaxHighlighter.registerLanguage('ruby', ruby); const ContextContainer = styled.div` position: relative; @@ -106,7 +98,9 @@ function getStackframeLines(stackframe: StackframeWithLineContext) { const line = stackframe.line.context; const preLines = stackframe.context?.pre || []; const postLines = stackframe.context?.post || []; - return [...preLines, line, ...postLines]; + return [...preLines, line, ...postLines].map( + (x) => (x.endsWith('\n') ? x.slice(0, -1) : x) || ' ' + ); } function getStartLineNumber(stackframe: StackframeWithLineContext) { @@ -146,7 +140,7 @@ export function Context({ stackframe, codeLanguage, isLibraryFrame }: Props) { CodeTag={Code} customStyle={{ padding: null, overflowX: null }} > - {line || '\n'} + {line} ))} diff --git a/x-pack/plugins/apm/public/components/shared/Summary/ErrorCountSummaryItemBadge.tsx b/x-pack/plugins/apm/public/components/shared/Summary/ErrorCountSummaryItemBadge.tsx index ed33c59af36f4d..83c2acb57e3c73 100644 --- a/x-pack/plugins/apm/public/components/shared/Summary/ErrorCountSummaryItemBadge.tsx +++ b/x-pack/plugins/apm/public/components/shared/Summary/ErrorCountSummaryItemBadge.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import styled from 'styled-components'; import { EuiBadge } from '@elastic/eui'; -import { useTheme } from '../../../hooks/useTheme'; +import { useTheme } from '../../../hooks/use_theme'; import { px } from '../../../../public/style/variables'; import { units } from '../../../style/variables'; diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/CustomLinkToolbar.test.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/CustomLinkToolbar.test.tsx index 0241167aba1fb0..777200099976ec 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/CustomLinkToolbar.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/CustomLinkToolbar.test.tsx @@ -7,7 +7,7 @@ import { act, fireEvent, render } from '@testing-library/react'; import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument, expectTextsNotInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.test.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.test.tsx index db7a284f6adff6..c4547595645a26 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.test.tsx @@ -10,8 +10,8 @@ import { MemoryRouter } from 'react-router-dom'; import { CustomLinkMenuSection } from '.'; import { CustomLink as CustomLinkType } from '../../../../../common/custom_link/custom_link_types'; import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; -import * as useFetcher from '../../../../hooks/useFetcher'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; +import * as useFetcher from '../../../../hooks/use_fetcher'; import { expectTextsInDocument, expectTextsNotInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.tsx index 2825363b101976..0a67db0f15b329 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/CustomLinkMenuSection/index.tsx @@ -22,7 +22,7 @@ import { import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; import { CustomLinkList } from './CustomLinkList'; import { CustomLinkToolbar } from './CustomLinkToolbar'; -import { FETCH_STATUS, useFetcher } from '../../../../hooks/useFetcher'; +import { FETCH_STATUS, useFetcher } from '../../../../hooks/use_fetcher'; import { LoadingStatePrompt } from '../../LoadingStatePrompt'; import { px } from '../../../../style/variables'; import { CreateEditCustomLinkFlyout } from '../../../app/Settings/CustomizeUI/CustomLink/CreateEditCustomLinkFlyout'; diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx index 15a85113406e15..3f74b80bab064b 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/TransactionActionMenu.tsx @@ -18,9 +18,9 @@ import { SectionTitle, } from '../../../../../observability/public'; import { Transaction } from '../../../../typings/es_schemas/ui/transaction'; -import { useApmPluginContext } from '../../../hooks/useApmPluginContext'; -import { useLicense } from '../../../hooks/useLicense'; -import { useUrlParams } from '../../../hooks/useUrlParams'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; +import { useLicenseContext } from '../../../context/license/use_license_context'; +import { useUrlParams } from '../../../context/url_params_context/use_url_params'; import { CustomLinkMenuSection } from './CustomLinkMenuSection'; import { getSections } from './sections'; @@ -39,7 +39,7 @@ function ActionMenuButton({ onClick }: { onClick: () => void }) { } export function TransactionActionMenu({ transaction }: Props) { - const license = useLicense(); + const license = useLicenseContext(); const hasGoldLicense = license?.isActive && license?.hasAtLeast('gold'); const { core } = useApmPluginContext(); diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/__test__/TransactionActionMenu.test.tsx b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/__test__/TransactionActionMenu.test.tsx index 9b5f00f76eeb21..8cb863c8fc3852 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/__test__/TransactionActionMenu.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/__test__/TransactionActionMenu.test.tsx @@ -9,9 +9,9 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import { License } from '../../../../../../licensing/common/license'; import { Transaction } from '../../../../../typings/es_schemas/ui/transaction'; -import { MockApmPluginContextWrapper } from '../../../../context/ApmPluginContext/MockApmPluginContext'; -import { LicenseContext } from '../../../../context/LicenseContext'; -import * as hooks from '../../../../hooks/useFetcher'; +import { MockApmPluginContextWrapper } from '../../../../context/apm_plugin/mock_apm_plugin_context'; +import { LicenseContext } from '../../../../context/license/license_context'; +import * as hooks from '../../../../hooks/use_fetcher'; import * as apmApi from '../../../../services/rest/createCallApmApi'; import { expectTextsInDocument, diff --git a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts index 4433865b44991e..c77de875dc84f7 100644 --- a/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts +++ b/x-pack/plugins/apm/public/components/shared/TransactionActionMenu/sections.ts @@ -10,7 +10,7 @@ import { isEmpty, pickBy } from 'lodash'; import moment from 'moment'; import url from 'url'; import { Transaction } from '../../../../typings/es_schemas/ui/transaction'; -import { IUrlParams } from '../../../context/UrlParamsContext/types'; +import { IUrlParams } from '../../../context/url_params_context/types'; import { getDiscoverHref } from '../Links/DiscoverLinks/DiscoverLink'; import { getDiscoverQuery } from '../Links/DiscoverLinks/DiscoverTransactionLink'; import { getInfraHref } from '../Links/InfraLink'; diff --git a/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/TransactionBreakdownGraph/index.tsx b/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/TransactionBreakdownGraph/index.tsx deleted file mode 100644 index 677e4b7593ff10..00000000000000 --- a/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/TransactionBreakdownGraph/index.tsx +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - AreaSeries, - Axis, - Chart, - CurveType, - niceTimeFormatter, - Placement, - Position, - ScaleType, - Settings, -} from '@elastic/charts'; -import moment from 'moment'; -import React, { useEffect } from 'react'; -import { useHistory } from 'react-router-dom'; -import { asPercent } from '../../../../../common/utils/formatters'; -import { TimeSeries } from '../../../../../typings/timeseries'; -import { FETCH_STATUS } from '../../../../hooks/useFetcher'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; -import { useChartsSync as useChartsSync2 } from '../../../../hooks/use_charts_sync'; -import { unit } from '../../../../style/variables'; -import { Annotations } from '../../charts/annotations'; -import { ChartContainer } from '../../charts/chart_container'; -import { onBrushEnd } from '../../charts/helper/helper'; - -const XY_HEIGHT = unit * 16; - -interface Props { - fetchStatus: FETCH_STATUS; - timeseries?: TimeSeries[]; -} - -export function TransactionBreakdownGraph({ fetchStatus, timeseries }: Props) { - const history = useHistory(); - const chartRef = React.createRef(); - const { event, setEvent } = useChartsSync2(); - const { urlParams } = useUrlParams(); - const { start, end } = urlParams; - - useEffect(() => { - if (event.chartId !== 'timeSpentBySpan' && chartRef.current) { - chartRef.current.dispatchExternalPointerEvent(event); - } - }, [chartRef, event]); - - const min = moment.utc(start).valueOf(); - const max = moment.utc(end).valueOf(); - - const xFormatter = niceTimeFormatter([min, max]); - - return ( - - - onBrushEnd({ x, history })} - showLegend - showLegendExtra - legendPosition={Position.Bottom} - xDomain={{ min, max }} - flatLegend - onPointerUpdate={(currEvent: any) => { - setEvent(currEvent); - }} - externalPointerEvents={{ - tooltip: { visible: true, placement: Placement.Bottom }, - }} - /> - - asPercent(y ?? 0, 1)} - /> - - - - {timeseries?.length ? ( - timeseries.map((serie) => { - return ( - - ); - }) - ) : ( - // When timeseries is empty, loads an AreaSeries chart to show the default empty message. - - )} - - - ); -} diff --git a/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/index.tsx b/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/index.tsx deleted file mode 100644 index 9b0c041aaf7b53..00000000000000 --- a/x-pack/plugins/apm/public/components/shared/TransactionBreakdown/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { useTransactionBreakdown } from '../../../hooks/useTransactionBreakdown'; -import { TransactionBreakdownGraph } from './TransactionBreakdownGraph'; - -function TransactionBreakdown() { - const { data, status } = useTransactionBreakdown(); - const { timeseries } = data; - - return ( - - - - -

- {i18n.translate('xpack.apm.transactionBreakdown.chartTitle', { - defaultMessage: 'Time spent by span type', - })} -

-
-
- - - -
-
- ); -} - -export { TransactionBreakdown }; diff --git a/x-pack/plugins/apm/public/components/shared/charts/Legend/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/Legend/index.tsx index 1a2a90c9fb3c30..eebb9e8d23d98e 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Legend/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Legend/index.tsx @@ -6,7 +6,7 @@ import React from 'react'; import styled from 'styled-components'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; import { fontSizes, px, units } from '../../../../style/variables'; export enum Shape { diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/AgentMarker.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/AgentMarker.tsx index 37d3664e98acda..a6b46f4a64691d 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/AgentMarker.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/AgentMarker.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiToolTip } from '@elastic/eui'; import styled from 'styled-components'; import { asDuration } from '../../../../../../common/utils/formatters'; -import { useTheme } from '../../../../../hooks/useTheme'; +import { useTheme } from '../../../../../hooks/use_theme'; import { px, units } from '../../../../../style/variables'; import { Legend } from '../../Legend'; import { AgentMark } from '../../../../app/TransactionDetails/WaterfallWithSummmary/WaterfallContainer/Marks/get_agent_marks'; diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.test.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.test.tsx index abe81185635b50..e69b23cf5f0086 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.test.tsx @@ -8,7 +8,7 @@ import { fireEvent } from '@testing-library/react'; import { act } from '@testing-library/react-hooks'; import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; -import { MockApmPluginContextWrapper } from '../../../../../context/ApmPluginContext/MockApmPluginContext'; +import { MockApmPluginContextWrapper } from '../../../../../context/apm_plugin/mock_apm_plugin_context'; import { expectTextsInDocument, renderWithTheme, diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.tsx index de63e2323ddac6..c6847bd5e674dc 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Marker/ErrorMarker.tsx @@ -8,12 +8,12 @@ import React, { useState } from 'react'; import { EuiPopover, EuiText } from '@elastic/eui'; import styled from 'styled-components'; import { asDuration } from '../../../../../../common/utils/formatters'; -import { useTheme } from '../../../../../hooks/useTheme'; +import { useTheme } from '../../../../../hooks/use_theme'; import { TRACE_ID, TRANSACTION_ID, } from '../../../../../../common/elasticsearch_fieldnames'; -import { useUrlParams } from '../../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../../context/url_params_context/use_url_params'; import { px, unit, units } from '../../../../../style/variables'; import { ErrorMark } from '../../../../app/TransactionDetails/WaterfallWithSummmary/WaterfallContainer/Marks/get_error_marks'; import { ErrorDetailLink } from '../../../Links/apm/ErrorDetailLink'; diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Timeline.test.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Timeline.test.tsx index ec9f887916f5ed..5069bf6fe19a79 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/Timeline.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/Timeline.test.tsx @@ -5,7 +5,6 @@ */ import React from 'react'; -import { StickyContainer } from 'react-sticky'; import { disableConsoleWarning, mountWithTheme, @@ -61,11 +60,7 @@ describe('Timeline', () => { ], }; - const wrapper = mountWithTheme( - - - - ); + const wrapper = mountWithTheme(); expect(toJson(wrapper)).toMatchSnapshot(); }); @@ -84,12 +79,7 @@ describe('Timeline', () => { }, }; - const mountTimeline = () => - mountWithTheme( - - - - ); + const mountTimeline = () => mountWithTheme(); expect(mountTimeline).not.toThrow(); }); diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/TimelineAxis.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/TimelineAxis.tsx index cb5a44432dcbc4..904917f2f97928 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/TimelineAxis.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/TimelineAxis.tsx @@ -6,10 +6,9 @@ import React, { ReactNode } from 'react'; import { inRange } from 'lodash'; -import { Sticky } from 'react-sticky'; import { XAxis, XYPlot } from 'react-vis'; import { getDurationFormatter } from '../../../../../common/utils/formatters'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; import { px } from '../../../../style/variables'; import { Mark } from './'; import { LastTickValue } from './LastTickValue'; @@ -54,57 +53,51 @@ export function TimelineAxis({ const topTraceDurationFormatted = tickFormatter(topTraceDuration).formatted; return ( - - {({ style }) => { - return ( -
- - tickFormatter(time).formatted} - tickPadding={20} - style={{ - text: { fill: theme.eui.euiColorDarkShade }, - }} - /> +
+ + tickFormatter(time).formatted} + tickPadding={20} + style={{ + text: { fill: theme.eui.euiColorDarkShade }, + }} + /> - {topTraceDuration > 0 && ( - - )} + {topTraceDuration > 0 && ( + + )} - {marks.map((mark) => ( - - ))} - -
- ); - }} - + {marks.map((mark) => ( + + ))} +
+
); } diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/VerticalLines.tsx b/x-pack/plugins/apm/public/components/shared/charts/Timeline/VerticalLines.tsx index 5ea2e4cfedf18c..ee1c899123994c 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/VerticalLines.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/VerticalLines.tsx @@ -6,7 +6,7 @@ import React from 'react'; import { VerticalGridLines, XYPlot } from 'react-vis'; -import { useTheme } from '../../../../hooks/useTheme'; +import { useTheme } from '../../../../hooks/use_theme'; import { Mark } from '../../../app/TransactionDetails/WaterfallWithSummmary/WaterfallContainer/Marks'; import { PlotValues } from './plotUtils'; diff --git a/x-pack/plugins/apm/public/components/shared/charts/Timeline/__snapshots__/Timeline.test.tsx.snap b/x-pack/plugins/apm/public/components/shared/charts/Timeline/__snapshots__/Timeline.test.tsx.snap index 2756de6e384bcd..76e2960e78e9d6 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/Timeline/__snapshots__/Timeline.test.tsx.snap +++ b/x-pack/plugins/apm/public/components/shared/charts/Timeline/__snapshots__/Timeline.test.tsx.snap @@ -2,18 +2,11 @@ exports[`Timeline should render with data 1`] = `
-
-
+ } +/> `; diff --git a/x-pack/plugins/apm/public/components/shared/charts/annotations/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/annotations/index.tsx deleted file mode 100644 index 683c66b2a96fee..00000000000000 --- a/x-pack/plugins/apm/public/components/shared/charts/annotations/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - AnnotationDomainTypes, - LineAnnotation, - Position, -} from '@elastic/charts'; -import { EuiIcon } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import React from 'react'; -import { asAbsoluteDateTime } from '../../../../../common/utils/formatters'; -import { useTheme } from '../../../../hooks/useTheme'; -import { useAnnotations } from '../../../../hooks/use_annotations'; - -export function Annotations() { - const { annotations } = useAnnotations(); - const theme = useTheme(); - - if (!annotations.length) { - return null; - } - - const color = theme.eui.euiColorSecondary; - - return ( - ({ - dataValue: annotation['@timestamp'], - header: asAbsoluteDateTime(annotation['@timestamp']), - details: `${i18n.translate('xpack.apm.chart.annotation.version', { - defaultMessage: 'Version', - })} ${annotation.text}`, - }))} - style={{ line: { strokeWidth: 1, stroke: color, opacity: 1 } }} - marker={} - markerPosition={Position.Top} - /> - ); -} diff --git a/x-pack/plugins/apm/public/components/shared/charts/chart_container.test.tsx b/x-pack/plugins/apm/public/components/shared/charts/chart_container.test.tsx index c0e8f869ce647e..359eadfc55cff5 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/chart_container.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/chart_container.test.tsx @@ -5,7 +5,7 @@ */ import { render } from '@testing-library/react'; import React from 'react'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { ChartContainer } from './chart_container'; describe('ChartContainer', () => { diff --git a/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx b/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx index b4486f1e9b94ad..ef58430e1e31e4 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/chart_container.tsx @@ -7,7 +7,7 @@ import { EuiLoadingChart, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; interface Props { hasData: boolean; diff --git a/x-pack/plugins/apm/public/components/shared/charts/metrics_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/metrics_chart/index.tsx index 9a561571df5a7c..506c27051b5116 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/metrics_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/metrics_chart/index.tsx @@ -15,7 +15,7 @@ import { // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { GenericMetricsChart } from '../../../../../server/lib/metrics/transform_metrics_chart'; import { Maybe } from '../../../../../typings/common'; -import { FETCH_STATUS } from '../../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { isValidCoordinateValue } from '../../../../utils/isValidCoordinateValue'; import { TimeseriesChart } from '../timeseries_chart'; diff --git a/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx index 6f1f4e01c4d1f6..73a819af2d624a 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/spark_plot/index.tsx @@ -46,17 +46,7 @@ export function SparkPlot(props: Props) { return ( - + string; showAnnotations?: boolean; + yDomain?: YDomainRange; + anomalySeries?: AnomalySeries; } export function TimeseriesChart({ @@ -56,31 +67,23 @@ export function TimeseriesChart({ yLabelFormat, yTickFormat, showAnnotations = true, + yDomain, + anomalySeries, }: Props) { const history = useHistory(); - const chartRef = React.createRef(); - const { event, setEvent } = useChartsSync(); + const { annotations } = useAnnotationsContext(); + const chartTheme = useChartTheme(); + const { setPointerEvent, chartRef } = useChartPointerEventContext(); const { urlParams } = useUrlParams(); - const { start, end } = urlParams; + const theme = useTheme(); - useEffect(() => { - if (event.chartId !== id && chartRef.current) { - chartRef.current.dispatchExternalPointerEvent(event); - } - }, [event, chartRef, id]); + const { start, end } = urlParams; const min = moment.utc(start).valueOf(); const max = moment.utc(end).valueOf(); const xFormatter = niceTimeFormatter([min, max]); - const chartTheme: SettingsSpec['theme'] = { - lineSeriesStyle: { - point: { visible: false }, - line: { strokeWidth: 2 }, - }, - }; - const isEmpty = timeseries .map((serie) => serie.data) .flat() @@ -89,15 +92,20 @@ export function TimeseriesChart({ y === null || y === undefined ); + const annotationColor = theme.eui.euiColorSecondary; + return ( onBrushEnd({ x, history })} - theme={chartTheme} - onPointerUpdate={(currEvent: any) => { - setEvent(currEvent); + theme={{ + ...chartTheme, + areaSeriesStyle: { + line: { visible: false }, + }, }} + onPointerUpdate={setPointerEvent} externalPointerEvents={{ tooltip: { visible: true, placement: Placement.Bottom }, }} @@ -116,17 +124,35 @@ export function TimeseriesChart({ position={Position.Bottom} showOverlappingTicks tickFormat={xFormatter} + gridLine={{ visible: false }} /> - {showAnnotations && } + {showAnnotations && ( + ({ + dataValue: annotation['@timestamp'], + header: asAbsoluteDateTime(annotation['@timestamp']), + details: `${i18n.translate('xpack.apm.chart.annotation.version', { + defaultMessage: 'Version', + })} ${annotation.text}`, + }))} + style={{ + line: { strokeWidth: 1, stroke: annotationColor, opacity: 1 }, + }} + marker={} + markerPosition={Position.Top} + /> + )} {timeseries.map((serie) => { const Series = serie.type === 'area' ? AreaSeries : LineSeries; @@ -145,6 +171,36 @@ export function TimeseriesChart({ /> ); })} + + {anomalySeries?.bounderies && ( + false} + /> + )} + + {anomalySeries?.scores && ( + ({ + coordinates: { x0, x1 }, + }) + )} + style={{ fill: anomalySeries.scores.color }} + /> + )} ); diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/index.tsx new file mode 100644 index 00000000000000..38a980fbcd90a8 --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/index.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { useTransactionBreakdown } from './use_transaction_breakdown'; +import { TransactionBreakdownChartContents } from './transaction_breakdown_chart_contents'; + +export function TransactionBreakdownChart({ + height, + showAnnotations = true, +}: { + height?: number; + showAnnotations?: boolean; +}) { + const { data, status } = useTransactionBreakdown(); + const { timeseries } = data; + + return ( + + + + +

+ {i18n.translate('xpack.apm.transactionBreakdown.chartTitle', { + defaultMessage: 'Average duration by span type', + })} +

+
+
+ + + +
+
+ ); +} diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/transaction_breakdown_chart_contents.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/transaction_breakdown_chart_contents.tsx new file mode 100644 index 00000000000000..19c29815ab655e --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/transaction_breakdown_chart_contents.tsx @@ -0,0 +1,144 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + AnnotationDomainTypes, + AreaSeries, + Axis, + Chart, + CurveType, + LineAnnotation, + niceTimeFormatter, + Placement, + Position, + ScaleType, + Settings, +} from '@elastic/charts'; +import { EuiIcon } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React from 'react'; +import { useHistory } from 'react-router-dom'; +import { useChartTheme } from '../../../../../../observability/public'; +import { + asAbsoluteDateTime, + asPercent, +} from '../../../../../common/utils/formatters'; +import { TimeSeries } from '../../../../../typings/timeseries'; +import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; +import { useTheme } from '../../../../hooks/use_theme'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useAnnotationsContext } from '../../../../context/annotations/use_annotations_context'; +import { useChartPointerEventContext } from '../../../../context/chart_pointer_event/use_chart_pointer_event_context'; +import { unit } from '../../../../style/variables'; +import { ChartContainer } from '../../charts/chart_container'; +import { onBrushEnd } from '../../charts/helper/helper'; + +interface Props { + fetchStatus: FETCH_STATUS; + height?: number; + showAnnotations: boolean; + timeseries?: TimeSeries[]; +} + +export function TransactionBreakdownChartContents({ + fetchStatus, + height = unit * 16, + showAnnotations, + timeseries, +}: Props) { + const history = useHistory(); + const { annotations } = useAnnotationsContext(); + const chartTheme = useChartTheme(); + + const { chartRef, setPointerEvent } = useChartPointerEventContext(); + const { urlParams } = useUrlParams(); + const theme = useTheme(); + const { start, end } = urlParams; + + const min = moment.utc(start).valueOf(); + const max = moment.utc(end).valueOf(); + + const xFormatter = niceTimeFormatter([min, max]); + + const annotationColor = theme.eui.euiColorSecondary; + + return ( + + + onBrushEnd({ x, history })} + showLegend + showLegendExtra + legendPosition={Position.Bottom} + theme={chartTheme} + xDomain={{ min, max }} + flatLegend + onPointerUpdate={setPointerEvent} + externalPointerEvents={{ + tooltip: { visible: true, placement: Placement.Bottom }, + }} + /> + + asPercent(y ?? 0, 1)} + /> + + {showAnnotations && ( + ({ + dataValue: annotation['@timestamp'], + header: asAbsoluteDateTime(annotation['@timestamp']), + details: `${i18n.translate('xpack.apm.chart.annotation.version', { + defaultMessage: 'Version', + })} ${annotation.text}`, + }))} + style={{ + line: { strokeWidth: 1, stroke: annotationColor, opacity: 1 }, + }} + marker={} + markerPosition={Position.Top} + /> + )} + + {timeseries?.length ? ( + timeseries.map((serie) => { + return ( + + ); + }) + ) : ( + // When timeseries is empty, loads an AreaSeries chart to show the default empty message. + + )} + + + ); +} diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts new file mode 100644 index 00000000000000..81840dc52c1eca --- /dev/null +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_breakdown_chart/use_transaction_breakdown.ts @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; +import { useApmServiceContext } from '../../../../context/apm_service/use_apm_service_context'; + +export function useTransactionBreakdown() { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams, uiFilters } = useUrlParams(); + const { start, end, transactionName } = urlParams; + const { transactionType } = useApmServiceContext(); + + const { data = { timeseries: undefined }, error, status } = useFetcher( + (callApmApi) => { + if (serviceName && start && end && transactionType) { + return callApmApi({ + endpoint: + 'GET /api/apm/services/{serviceName}/transaction/charts/breakdown', + params: { + path: { serviceName }, + query: { + start, + end, + transactionName, + transactionType, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, + [serviceName, start, end, transactionType, transactionName, uiFilters] + ); + + return { + data, + status, + error, + }; +} diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx index 41212aa7b982c7..bb7c0a9104fc7b 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/index.tsx @@ -14,22 +14,20 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { NOT_AVAILABLE_LABEL } from '../../../../../common/i18n'; import { TRANSACTION_PAGE_LOAD, TRANSACTION_REQUEST, TRANSACTION_ROUTE_CHANGE, } from '../../../../../common/transaction_types'; -import { asDecimal, tpmUnit } from '../../../../../common/utils/formatters'; -import { Coordinate } from '../../../../../typings/timeseries'; -import { ChartsSyncContextProvider } from '../../../../context/charts_sync_context'; -import { LicenseContext } from '../../../../context/LicenseContext'; -import { IUrlParams } from '../../../../context/UrlParamsContext/types'; -import { FETCH_STATUS } from '../../../../hooks/useFetcher'; +import { asTransactionRate } from '../../../../../common/utils/formatters'; +import { AnnotationsContextProvider } from '../../../../context/annotations/annotations_context'; +import { ChartPointerEventContextProvider } from '../../../../context/chart_pointer_event/chart_pointer_event_context'; +import { LicenseContext } from '../../../../context/license/license_context'; +import type { IUrlParams } from '../../../../context/url_params_context/types'; +import { FETCH_STATUS } from '../../../../hooks/use_fetcher'; import { ITransactionChartData } from '../../../../selectors/chart_selectors'; -import { isValidCoordinateValue } from '../../../../utils/isValidCoordinateValue'; -import { TransactionBreakdown } from '../../TransactionBreakdown'; import { TimeseriesChart } from '../timeseries_chart'; +import { TransactionBreakdownChart } from '../transaction_breakdown_chart'; import { TransactionErrorRateChart } from '../transaction_error_rate_chart/'; import { getResponseTimeTickFormatter } from './helper'; import { MLHeader } from './ml_header'; @@ -46,81 +44,78 @@ export function TransactionCharts({ urlParams, fetchStatus, }: TransactionChartProps) { - const getTPMFormatter = (t: number) => { - return `${asDecimal(t)} ${tpmUnit(urlParams.transactionType)}`; - }; - - const getTPMTooltipFormatter = (y: Coordinate['y']) => { - return isValidCoordinateValue(y) ? getTPMFormatter(y) : NOT_AVAILABLE_LABEL; - }; - const { transactionType } = urlParams; - const { responseTimeSeries, tpmSeries } = charts; + const { responseTimeSeries, tpmSeries, anomalySeries } = charts; const { formatter, toggleSerie } = useFormatter(responseTimeSeries); return ( <> - - - - - - - - {responseTimeLabel(transactionType)} - - - - {(license) => ( - - )} - - - { - if (serie) { - toggleSerie(serie); - } - }} - /> - - + + + + + + + + + {responseTimeLabel(transactionType)} + + + + {(license) => ( + + )} + + + { + if (serie) { + toggleSerie(serie); + } + }} + /> + + - - - - {tpmLabel(transactionType)} - - - - - + + + + {tpmLabel(transactionType)} + + + + + - + - - - - - - - - - + + + + + + + + + + ); } diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx index 52b0470d315527..f0569ea1a07521 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_charts/ml_header.tsx @@ -10,7 +10,7 @@ import { isEmpty } from 'lodash'; import React from 'react'; import { useParams } from 'react-router-dom'; import styled from 'styled-components'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { MLJobLink } from '../../Links/MachineLearningLinks/MLJobLink'; interface Props { @@ -84,7 +84,7 @@ export function MLHeader({ hasValidMlLicense, mlJobId }: Props) { transactionType={transactionType} > {i18n.translate('xpack.apm.metrics.transactionChart.viewJob', { - defaultMessage: 'View Job:', + defaultMessage: 'View Job', })} diff --git a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx index b9028ff2e9e8c8..4a388b13d7d224 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/transaction_error_rate_chart/index.tsx @@ -9,9 +9,9 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { useParams } from 'react-router-dom'; import { asPercent } from '../../../../../common/utils/formatters'; -import { useFetcher } from '../../../../hooks/useFetcher'; -import { useTheme } from '../../../../hooks/useTheme'; -import { useUrlParams } from '../../../../hooks/useUrlParams'; +import { useFetcher } from '../../../../hooks/use_fetcher'; +import { useTheme } from '../../../../hooks/use_theme'; +import { useUrlParams } from '../../../../context/url_params_context/use_url_params'; import { callApmApi } from '../../../../services/rest/createCallApmApi'; import { TimeseriesChart } from '../timeseries_chart'; @@ -45,7 +45,7 @@ export function TransactionErrorRateChart({ if (serviceName && start && end) { return callApmApi({ endpoint: - 'GET /api/apm/services/{serviceName}/transaction_groups/error_rate', + 'GET /api/apm/services/{serviceName}/transactions/charts/error_rate', params: { path: { serviceName, @@ -91,6 +91,7 @@ export function TransactionErrorRateChart({ ]} yLabelFormat={yLabelFormat} yTickFormat={yTickFormat} + yDomain={{ min: 0, max: 1 }} /> ); diff --git a/x-pack/plugins/apm/public/components/shared/table_fetch_wrapper/index.tsx b/x-pack/plugins/apm/public/components/shared/table_fetch_wrapper/index.tsx index e8d62cd8bd85b1..9538d46960fc94 100644 --- a/x-pack/plugins/apm/public/components/shared/table_fetch_wrapper/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/table_fetch_wrapper/index.tsx @@ -5,7 +5,7 @@ */ import React, { ReactNode } from 'react'; -import { FETCH_STATUS } from '../../../hooks/useFetcher'; +import { FETCH_STATUS } from '../../../hooks/use_fetcher'; import { ErrorStatePrompt } from '../ErrorStatePrompt'; export function TableFetchWrapper({ diff --git a/x-pack/plugins/apm/public/context/ApmPluginContext/MockApmPluginContext.tsx b/x-pack/plugins/apm/public/context/ApmPluginContext/MockApmPluginContext.tsx deleted file mode 100644 index 25e7f23a00125a..00000000000000 --- a/x-pack/plugins/apm/public/context/ApmPluginContext/MockApmPluginContext.tsx +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { ReactNode } from 'react'; -import { Observable, of } from 'rxjs'; -import { ApmPluginContext, ApmPluginContextValue } from '.'; -import { ConfigSchema } from '../..'; -import { UI_SETTINGS } from '../../../../../../src/plugins/data/common'; -import { createCallApmApi } from '../../services/rest/createCallApmApi'; -import { MlUrlGenerator } from '../../../../ml/public'; - -const uiSettings: Record = { - [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: [ - { - from: 'now/d', - to: 'now/d', - display: 'Today', - }, - { - from: 'now/w', - to: 'now/w', - display: 'This week', - }, - ], - [UI_SETTINGS.TIMEPICKER_TIME_DEFAULTS]: { - from: 'now-15m', - to: 'now', - }, - [UI_SETTINGS.TIMEPICKER_REFRESH_INTERVAL_DEFAULTS]: { - pause: false, - value: 100000, - }, -}; - -const mockCore = { - application: { - capabilities: { - apm: {}, - ml: {}, - }, - currentAppId$: new Observable(), - navigateToUrl: (url: string) => {}, - }, - chrome: { - docTitle: { change: () => {} }, - setBreadcrumbs: () => {}, - setHelpExtension: () => {}, - setBadge: () => {}, - }, - docLinks: { - DOC_LINK_VERSION: '0', - ELASTIC_WEBSITE_URL: 'https://www.elastic.co/', - }, - http: { - basePath: { - prepend: (path: string) => `/basepath${path}`, - get: () => `/basepath`, - }, - }, - i18n: { - Context: ({ children }: { children: ReactNode }) => children, - }, - notifications: { - toasts: { - addWarning: () => {}, - addDanger: () => {}, - }, - }, - uiSettings: { - get: (key: string) => uiSettings[key], - get$: (key: string) => of(mockCore.uiSettings.get(key)), - }, -}; - -const mockConfig: ConfigSchema = { - serviceMapEnabled: true, - ui: { - enabled: false, - }, -}; - -const mockPlugin = { - ml: { - urlGenerator: new MlUrlGenerator({ - appBasePath: '/app/ml', - useHash: false, - }), - }, - data: { - query: { - timefilter: { timefilter: { setTime: () => {}, getTime: () => ({}) } }, - }, - }, -}; - -const mockAppMountParameters = { - setHeaderActionMenu: () => {}, -}; - -export const mockApmPluginContextValue = { - appMountParameters: mockAppMountParameters, - config: mockConfig, - core: mockCore, - plugins: mockPlugin, -}; - -export function MockApmPluginContextWrapper({ - children, - value = {} as ApmPluginContextValue, -}: { - children?: React.ReactNode; - value?: ApmPluginContextValue; -}) { - if (value.core?.http) { - createCallApmApi(value.core?.http); - } - return ( - - {children} - - ); -} diff --git a/x-pack/plugins/apm/public/context/ApmPluginContext/index.tsx b/x-pack/plugins/apm/public/context/ApmPluginContext/index.tsx deleted file mode 100644 index 44952e64db59c6..00000000000000 --- a/x-pack/plugins/apm/public/context/ApmPluginContext/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { AppMountParameters, CoreStart } from 'kibana/public'; -import { createContext } from 'react'; -import { ConfigSchema } from '../../'; -import { ApmPluginSetupDeps } from '../../plugin'; - -export interface ApmPluginContextValue { - appMountParameters: AppMountParameters; - config: ConfigSchema; - core: CoreStart; - plugins: ApmPluginSetupDeps; -} - -export const ApmPluginContext = createContext({} as ApmPluginContextValue); diff --git a/x-pack/plugins/apm/public/context/LicenseContext/index.tsx b/x-pack/plugins/apm/public/context/LicenseContext/index.tsx deleted file mode 100644 index e6615a2fc98bf0..00000000000000 --- a/x-pack/plugins/apm/public/context/LicenseContext/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import useObservable from 'react-use/lib/useObservable'; -import { ILicense } from '../../../../licensing/public'; -import { useApmPluginContext } from '../../hooks/useApmPluginContext'; -import { InvalidLicenseNotification } from './InvalidLicenseNotification'; - -export const LicenseContext = React.createContext( - undefined -); - -export function LicenseProvider({ children }: { children: React.ReactChild }) { - const { license$ } = useApmPluginContext().plugins.licensing; - const license = useObservable(license$); - // if license is not loaded yet, consider it valid - const hasInvalidLicense = license?.isActive === false; - - // if license is invalid show an error message - if (hasInvalidLicense) { - return ; - } - - // render rest of application and pass down license via context - return ; -} diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/MockUrlParamsContextProvider.tsx b/x-pack/plugins/apm/public/context/UrlParamsContext/MockUrlParamsContextProvider.tsx deleted file mode 100644 index fd01e057ac3ded..00000000000000 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/MockUrlParamsContextProvider.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import React from 'react'; -import { IUrlParams } from './types'; -import { UrlParamsContext, useUiFilters } from '.'; - -const defaultUrlParams = { - page: 0, - serviceName: 'opbeans-python', - transactionType: 'request', - start: '2018-01-10T09:51:41.050Z', - end: '2018-01-10T10:06:41.050Z', -}; - -interface Props { - params?: IUrlParams; - children: React.ReactNode; - refreshTimeRange?: (time: any) => void; -} - -export function MockUrlParamsContextProvider({ - params, - children, - refreshTimeRange = () => undefined, -}: Props) { - const urlParams = { ...defaultUrlParams, ...params }; - return ( - - ); -} diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx b/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx deleted file mode 100644 index 5682009019d7f8..00000000000000 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/index.tsx +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { - createContext, - useMemo, - useCallback, - useRef, - useState, -} from 'react'; -import { withRouter } from 'react-router-dom'; -import { uniqueId, mapValues } from 'lodash'; -import { IUrlParams } from './types'; -import { getParsedDate } from './helpers'; -import { resolveUrlParams } from './resolveUrlParams'; -import { UIFilters } from '../../../typings/ui_filters'; -import { - localUIFilterNames, - - // eslint-disable-next-line @kbn/eslint/no-restricted-paths -} from '../../../server/lib/ui_filters/local_ui_filters/config'; -import { pickKeys } from '../../../common/utils/pick_keys'; -import { useDeepObjectIdentity } from '../../hooks/useDeepObjectIdentity'; -import { LocalUIFilterName } from '../../../common/ui_filter'; -import { ENVIRONMENT_ALL } from '../../../common/environment_filter_values'; - -interface TimeRange { - rangeFrom: string; - rangeTo: string; -} - -function useUiFilters(params: IUrlParams): UIFilters { - const { kuery, environment, ...urlParams } = params; - const localUiFilters = mapValues( - pickKeys(urlParams, ...localUIFilterNames), - (val) => (val ? val.split(',') : []) - ) as Partial>; - - return useDeepObjectIdentity({ - kuery, - environment: environment || ENVIRONMENT_ALL.value, - ...localUiFilters, - }); -} - -const defaultRefresh = (_time: TimeRange) => {}; - -const UrlParamsContext = createContext({ - urlParams: {} as IUrlParams, - refreshTimeRange: defaultRefresh, - uiFilters: {} as UIFilters, -}); - -const UrlParamsProvider: React.ComponentClass<{}> = withRouter( - ({ location, children }) => { - const refUrlParams = useRef(resolveUrlParams(location, {})); - - const { start, end, rangeFrom, rangeTo } = refUrlParams.current; - - const [, forceUpdate] = useState(''); - - const urlParams = useMemo( - () => - resolveUrlParams(location, { - start, - end, - rangeFrom, - rangeTo, - }), - [location, start, end, rangeFrom, rangeTo] - ); - - refUrlParams.current = urlParams; - - const refreshTimeRange = useCallback( - (timeRange: TimeRange) => { - refUrlParams.current = { - ...refUrlParams.current, - start: getParsedDate(timeRange.rangeFrom), - end: getParsedDate(timeRange.rangeTo, { roundUp: true }), - }; - - forceUpdate(uniqueId()); - }, - [forceUpdate] - ); - - const uiFilters = useUiFilters(urlParams); - - const contextValue = useMemo(() => { - return { - urlParams, - refreshTimeRange, - uiFilters, - }; - }, [urlParams, refreshTimeRange, uiFilters]); - - return ( - - ); - } -); - -export { UrlParamsContext, UrlParamsProvider, useUiFilters }; diff --git a/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx b/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx new file mode 100644 index 00000000000000..77285f976d8508 --- /dev/null +++ b/x-pack/plugins/apm/public/context/annotations/annotations_context.tsx @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { createContext } from 'react'; +import { useParams } from 'react-router-dom'; +import { Annotation } from '../../../common/annotations'; +import { useFetcher } from '../../hooks/use_fetcher'; +import { useUrlParams } from '../url_params_context/use_url_params'; +import { callApmApi } from '../../services/rest/createCallApmApi'; + +export const AnnotationsContext = createContext({ annotations: [] } as { + annotations: Annotation[]; +}); + +const INITIAL_STATE = { annotations: [] }; + +export function AnnotationsContextProvider({ + children, +}: { + children: React.ReactNode; +}) { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams, uiFilters } = useUrlParams(); + const { start, end } = urlParams; + const { environment } = uiFilters; + + const { data = INITIAL_STATE } = useFetcher(() => { + if (start && end && serviceName) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/annotation/search', + params: { + path: { + serviceName, + }, + query: { + start, + end, + environment, + }, + }, + }); + } + }, [start, end, environment, serviceName]); + + return ; +} diff --git a/x-pack/plugins/apm/public/context/annotations/use_annotations_context.ts b/x-pack/plugins/apm/public/context/annotations/use_annotations_context.ts new file mode 100644 index 00000000000000..7fdc602b1916e4 --- /dev/null +++ b/x-pack/plugins/apm/public/context/annotations/use_annotations_context.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext } from 'react'; +import { AnnotationsContext } from './annotations_context'; + +export function useAnnotationsContext() { + const context = useContext(AnnotationsContext); + + if (!context) { + throw new Error('Missing Annotations context provider'); + } + + return context; +} diff --git a/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx new file mode 100644 index 00000000000000..0e26db4820ea1a --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_plugin/apm_plugin_context.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { AppMountParameters, CoreStart } from 'kibana/public'; +import { createContext } from 'react'; +import { ConfigSchema } from '../..'; +import { ApmPluginSetupDeps } from '../../plugin'; + +export interface ApmPluginContextValue { + appMountParameters: AppMountParameters; + config: ConfigSchema; + core: CoreStart; + plugins: ApmPluginSetupDeps; +} + +export const ApmPluginContext = createContext({} as ApmPluginContextValue); diff --git a/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx new file mode 100644 index 00000000000000..7ab46c65c90d9c --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_plugin/mock_apm_plugin_context.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { ReactNode } from 'react'; +import { Observable, of } from 'rxjs'; +import { ApmPluginContext, ApmPluginContextValue } from './apm_plugin_context'; +import { ConfigSchema } from '../..'; +import { UI_SETTINGS } from '../../../../../../src/plugins/data/common'; +import { createCallApmApi } from '../../services/rest/createCallApmApi'; +import { MlUrlGenerator } from '../../../../ml/public'; + +const uiSettings: Record = { + [UI_SETTINGS.TIMEPICKER_QUICK_RANGES]: [ + { + from: 'now/d', + to: 'now/d', + display: 'Today', + }, + { + from: 'now/w', + to: 'now/w', + display: 'This week', + }, + ], + [UI_SETTINGS.TIMEPICKER_TIME_DEFAULTS]: { + from: 'now-15m', + to: 'now', + }, + [UI_SETTINGS.TIMEPICKER_REFRESH_INTERVAL_DEFAULTS]: { + pause: false, + value: 100000, + }, +}; + +const mockCore = { + application: { + capabilities: { + apm: {}, + ml: {}, + }, + currentAppId$: new Observable(), + navigateToUrl: (url: string) => {}, + }, + chrome: { + docTitle: { change: () => {} }, + setBreadcrumbs: () => {}, + setHelpExtension: () => {}, + setBadge: () => {}, + }, + docLinks: { + DOC_LINK_VERSION: '0', + ELASTIC_WEBSITE_URL: 'https://www.elastic.co/', + }, + http: { + basePath: { + prepend: (path: string) => `/basepath${path}`, + get: () => `/basepath`, + }, + }, + i18n: { + Context: ({ children }: { children: ReactNode }) => children, + }, + notifications: { + toasts: { + addWarning: () => {}, + addDanger: () => {}, + }, + }, + uiSettings: { + get: (key: string) => uiSettings[key], + get$: (key: string) => of(mockCore.uiSettings.get(key)), + }, +}; + +const mockConfig: ConfigSchema = { + serviceMapEnabled: true, + ui: { + enabled: false, + }, +}; + +const mockPlugin = { + ml: { + urlGenerator: new MlUrlGenerator({ + appBasePath: '/app/ml', + useHash: false, + }), + }, + data: { + query: { + timefilter: { timefilter: { setTime: () => {}, getTime: () => ({}) } }, + }, + }, +}; + +const mockAppMountParameters = { + setHeaderActionMenu: () => {}, +}; + +export const mockApmPluginContextValue = { + appMountParameters: mockAppMountParameters, + config: mockConfig, + core: mockCore, + plugins: mockPlugin, +}; + +export function MockApmPluginContextWrapper({ + children, + value = {} as ApmPluginContextValue, +}: { + children?: React.ReactNode; + value?: ApmPluginContextValue; +}) { + if (value.core?.http) { + createCallApmApi(value.core?.http); + } + return ( + + {children} + + ); +} diff --git a/x-pack/plugins/apm/public/context/apm_plugin/use_apm_plugin_context.ts b/x-pack/plugins/apm/public/context/apm_plugin/use_apm_plugin_context.ts new file mode 100644 index 00000000000000..7c480ea3da2755 --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_plugin/use_apm_plugin_context.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext } from 'react'; +import { ApmPluginContext } from './apm_plugin_context'; + +export function useApmPluginContext() { + return useContext(ApmPluginContext); +} diff --git a/x-pack/plugins/apm/public/context/apm_service/apm_service_context.test.tsx b/x-pack/plugins/apm/public/context/apm_service/apm_service_context.test.tsx new file mode 100644 index 00000000000000..eb08cc22a0549e --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/apm_service_context.test.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { getTransactionType } from './apm_service_context'; + +describe('getTransactionType', () => { + describe('with transaction type in url', () => { + it('returns the transaction type in the url ', () => { + expect( + getTransactionType({ + transactionTypes: ['worker', 'request'], + urlParams: { transactionType: 'custom' }, + agentName: 'nodejs', + }) + ).toBe('custom'); + }); + }); + + describe('with no transaction types', () => { + it('returns undefined', () => { + expect( + getTransactionType({ + transactionTypes: [], + urlParams: {}, + }) + ).toBeUndefined(); + }); + }); + + describe('with a non-rum agent', () => { + describe('with default transaction type', () => { + it('returns "request"', () => { + expect( + getTransactionType({ + transactionTypes: ['worker', 'request'], + urlParams: {}, + agentName: 'nodejs', + }) + ).toEqual('request'); + }); + }); + + describe('with no default transaction type', () => { + it('returns the first type', () => { + expect( + getTransactionType({ + transactionTypes: ['worker', 'custom'], + urlParams: {}, + agentName: 'nodejs', + }) + ).toEqual('worker'); + }); + }); + }); + + describe('with a rum agent', () => { + it('returns "page-load"', () => { + expect( + getTransactionType({ + transactionTypes: ['http-request', 'page-load'], + urlParams: {}, + agentName: 'js-base', + }) + ).toEqual('page-load'); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/context/apm_service/apm_service_context.tsx b/x-pack/plugins/apm/public/context/apm_service/apm_service_context.tsx new file mode 100644 index 00000000000000..b07763aed7b001 --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/apm_service_context.tsx @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { createContext, ReactNode } from 'react'; +import { isRumAgentName } from '../../../common/agent_name'; +import { + TRANSACTION_PAGE_LOAD, + TRANSACTION_REQUEST, +} from '../../../common/transaction_types'; +import { useServiceTransactionTypesFetcher } from './use_service_transaction_types_fetcher'; +import { useUrlParams } from '../url_params_context/use_url_params'; +import { useServiceAgentNameFetcher } from './use_service_agent_name_fetcher'; +import { IUrlParams } from '../url_params_context/types'; + +export const APMServiceContext = createContext<{ + agentName?: string; + transactionType?: string; + transactionTypes: string[]; +}>({ transactionTypes: [] }); + +export function ApmServiceContextProvider({ + children, +}: { + children: ReactNode; +}) { + const { urlParams } = useUrlParams(); + const { agentName } = useServiceAgentNameFetcher(); + const transactionTypes = useServiceTransactionTypesFetcher(); + const transactionType = getTransactionType({ + urlParams, + transactionTypes, + agentName, + }); + + return ( + + ); +} + +export function getTransactionType({ + urlParams, + transactionTypes, + agentName, +}: { + urlParams: IUrlParams; + transactionTypes: string[]; + agentName?: string; +}) { + if (urlParams.transactionType) { + return urlParams.transactionType; + } + + if (!agentName || transactionTypes.length === 0) { + return; + } + + // The default transaction type is "page-load" for RUM agents and "request" for all others + const defaultTransactionType = isRumAgentName(agentName) + ? TRANSACTION_PAGE_LOAD + : TRANSACTION_REQUEST; + + // If the default transaction type is not in transactionTypes the first in the list is returned + return transactionTypes.includes(defaultTransactionType) + ? defaultTransactionType + : transactionTypes[0]; +} diff --git a/x-pack/plugins/apm/public/context/apm_service/use_apm_service_context.ts b/x-pack/plugins/apm/public/context/apm_service/use_apm_service_context.ts new file mode 100644 index 00000000000000..85c135f36719fa --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/use_apm_service_context.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext } from 'react'; +import { APMServiceContext } from './apm_service_context'; + +export function useApmServiceContext() { + return useContext(APMServiceContext); +} diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts b/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts new file mode 100644 index 00000000000000..9a1d969ec2c33a --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/use_service_agent_name_fetcher.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; +import { useFetcher } from '../../hooks/use_fetcher'; +import { useUrlParams } from '../url_params_context/use_url_params'; + +export function useServiceAgentNameFetcher() { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams } = useUrlParams(); + const { start, end } = urlParams; + const { data, error, status } = useFetcher( + (callApmApi) => { + if (serviceName && start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/agent_name', + params: { + path: { serviceName }, + query: { start, end }, + }, + }); + } + }, + [serviceName, start, end] + ); + + return { agentName: data?.agentName, status, error }; +} diff --git a/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx b/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx new file mode 100644 index 00000000000000..85a10cc273bac8 --- /dev/null +++ b/x-pack/plugins/apm/public/context/apm_service/use_service_transaction_types_fetcher.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; +import { useFetcher } from '../../hooks/use_fetcher'; +import { useUrlParams } from '../url_params_context/use_url_params'; + +const INITIAL_DATA = { transactionTypes: [] }; + +export function useServiceTransactionTypesFetcher() { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams } = useUrlParams(); + const { start, end } = urlParams; + const { data = INITIAL_DATA } = useFetcher( + (callApmApi) => { + if (serviceName && start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/transaction_types', + params: { + path: { serviceName }, + query: { start, end }, + }, + }); + } + }, + [serviceName, start, end] + ); + + return data.transactionTypes; +} diff --git a/x-pack/plugins/apm/public/context/chart_pointer_event/chart_pointer_event_context.tsx b/x-pack/plugins/apm/public/context/chart_pointer_event/chart_pointer_event_context.tsx new file mode 100644 index 00000000000000..ea602064632586 --- /dev/null +++ b/x-pack/plugins/apm/public/context/chart_pointer_event/chart_pointer_event_context.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { + createContext, + Dispatch, + ReactNode, + SetStateAction, + useState, +} from 'react'; + +import { PointerEvent } from '@elastic/charts'; + +export const ChartPointerEventContext = createContext<{ + pointerEvent: PointerEvent | null; + setPointerEvent: Dispatch>; +} | null>(null); + +export function ChartPointerEventContextProvider({ + children, +}: { + children: ReactNode; +}) { + const [pointerEvent, setPointerEvent] = useState(null); + + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/context/chart_pointer_event/use_chart_pointer_event_context.tsx b/x-pack/plugins/apm/public/context/chart_pointer_event/use_chart_pointer_event_context.tsx new file mode 100644 index 00000000000000..7d681635baf25d --- /dev/null +++ b/x-pack/plugins/apm/public/context/chart_pointer_event/use_chart_pointer_event_context.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useContext, useEffect } from 'react'; +import { Chart } from '@elastic/charts'; +import { ChartPointerEventContext } from './chart_pointer_event_context'; + +export function useChartPointerEventContext() { + const context = useContext(ChartPointerEventContext); + + if (!context) { + throw new Error('Missing ChartPointerEventContext provider'); + } + + const { pointerEvent } = context; + const chartRef = React.createRef(); + + useEffect(() => { + if (pointerEvent && chartRef.current) { + chartRef.current.dispatchExternalPointerEvent(pointerEvent); + } + }, [pointerEvent, chartRef]); + + return { ...context, chartRef }; +} diff --git a/x-pack/plugins/apm/public/context/charts_sync_context.tsx b/x-pack/plugins/apm/public/context/charts_sync_context.tsx deleted file mode 100644 index d983a857a26ec1..00000000000000 --- a/x-pack/plugins/apm/public/context/charts_sync_context.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { - createContext, - Dispatch, - ReactNode, - SetStateAction, - useState, -} from 'react'; - -export const ChartsSyncContext = createContext<{ - event: any; - setEvent: Dispatch>; -} | null>(null); - -export function ChartsSyncContextProvider({ - children, -}: { - children: ReactNode; -}) { - const [event, setEvent] = useState({}); - - return ( - - ); -} diff --git a/x-pack/plugins/apm/public/context/LicenseContext/InvalidLicenseNotification.tsx b/x-pack/plugins/apm/public/context/license/Invalid_license_notification.tsx similarity index 100% rename from x-pack/plugins/apm/public/context/LicenseContext/InvalidLicenseNotification.tsx rename to x-pack/plugins/apm/public/context/license/Invalid_license_notification.tsx diff --git a/x-pack/plugins/apm/public/context/license/license_context.tsx b/x-pack/plugins/apm/public/context/license/license_context.tsx new file mode 100644 index 00000000000000..557f135fa4c0e9 --- /dev/null +++ b/x-pack/plugins/apm/public/context/license/license_context.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import useObservable from 'react-use/lib/useObservable'; +import { ILicense } from '../../../../licensing/public'; +import { useApmPluginContext } from '../apm_plugin/use_apm_plugin_context'; +import { InvalidLicenseNotification } from './Invalid_license_notification'; + +export const LicenseContext = React.createContext( + undefined +); + +export function LicenseProvider({ children }: { children: React.ReactChild }) { + const { license$ } = useApmPluginContext().plugins.licensing; + const license = useObservable(license$); + // if license is not loaded yet, consider it valid + const hasInvalidLicense = license?.isActive === false; + + // if license is invalid show an error message + if (hasInvalidLicense) { + return ; + } + + // render rest of application and pass down license via context + return ; +} diff --git a/x-pack/plugins/apm/public/context/license/use_license_context.ts b/x-pack/plugins/apm/public/context/license/use_license_context.ts new file mode 100644 index 00000000000000..e86bb78d127abc --- /dev/null +++ b/x-pack/plugins/apm/public/context/license/use_license_context.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext } from 'react'; +import { LicenseContext } from './license_context'; + +export function useLicenseContext() { + return useContext(LicenseContext); +} diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/constants.ts b/x-pack/plugins/apm/public/context/url_params_context/constants.ts similarity index 100% rename from x-pack/plugins/apm/public/context/UrlParamsContext/constants.ts rename to x-pack/plugins/apm/public/context/url_params_context/constants.ts diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts b/x-pack/plugins/apm/public/context/url_params_context/helpers.ts similarity index 100% rename from x-pack/plugins/apm/public/context/UrlParamsContext/helpers.ts rename to x-pack/plugins/apm/public/context/url_params_context/helpers.ts diff --git a/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx b/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx new file mode 100644 index 00000000000000..b593cbd57a9a9a --- /dev/null +++ b/x-pack/plugins/apm/public/context/url_params_context/mock_url_params_context_provider.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { IUrlParams } from './types'; +import { UrlParamsContext, useUiFilters } from './url_params_context'; + +const defaultUrlParams = { + page: 0, + serviceName: 'opbeans-python', + transactionType: 'request', + start: '2018-01-10T09:51:41.050Z', + end: '2018-01-10T10:06:41.050Z', +}; + +interface Props { + params?: IUrlParams; + children: React.ReactNode; + refreshTimeRange?: (time: any) => void; +} + +export function MockUrlParamsContextProvider({ + params, + children, + refreshTimeRange = () => undefined, +}: Props) { + const urlParams = { ...defaultUrlParams, ...params }; + return ( + + ); +} diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts b/x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts similarity index 100% rename from x-pack/plugins/apm/public/context/UrlParamsContext/resolveUrlParams.ts rename to x-pack/plugins/apm/public/context/url_params_context/resolve_url_params.ts diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/types.ts b/x-pack/plugins/apm/public/context/url_params_context/types.ts similarity index 100% rename from x-pack/plugins/apm/public/context/UrlParamsContext/types.ts rename to x-pack/plugins/apm/public/context/url_params_context/types.ts diff --git a/x-pack/plugins/apm/public/context/UrlParamsContext/url_params_context.test.tsx b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx similarity index 98% rename from x-pack/plugins/apm/public/context/UrlParamsContext/url_params_context.test.tsx rename to x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx index 3a6ccce178cd4c..6b57039678e0ae 100644 --- a/x-pack/plugins/apm/public/context/UrlParamsContext/url_params_context.test.tsx +++ b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.test.tsx @@ -5,7 +5,7 @@ */ import * as React from 'react'; -import { UrlParamsContext, UrlParamsProvider } from './'; +import { UrlParamsContext, UrlParamsProvider } from './url_params_context'; import { mount } from 'enzyme'; import { Location, History } from 'history'; import { MemoryRouter, Router } from 'react-router-dom'; diff --git a/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx new file mode 100644 index 00000000000000..0a3f8459ff0023 --- /dev/null +++ b/x-pack/plugins/apm/public/context/url_params_context/url_params_context.tsx @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { + createContext, + useMemo, + useCallback, + useRef, + useState, +} from 'react'; +import { withRouter } from 'react-router-dom'; +import { uniqueId, mapValues } from 'lodash'; +import { IUrlParams } from './types'; +import { getParsedDate } from './helpers'; +import { resolveUrlParams } from './resolve_url_params'; +import { UIFilters } from '../../../typings/ui_filters'; +import { + localUIFilterNames, + + // eslint-disable-next-line @kbn/eslint/no-restricted-paths +} from '../../../server/lib/ui_filters/local_ui_filters/config'; +import { pickKeys } from '../../../common/utils/pick_keys'; +import { useDeepObjectIdentity } from '../../hooks/useDeepObjectIdentity'; +import { LocalUIFilterName } from '../../../common/ui_filter'; +import { ENVIRONMENT_ALL } from '../../../common/environment_filter_values'; + +interface TimeRange { + rangeFrom: string; + rangeTo: string; +} + +function useUiFilters(params: IUrlParams): UIFilters { + const { kuery, environment, ...urlParams } = params; + const localUiFilters = mapValues( + pickKeys(urlParams, ...localUIFilterNames), + (val) => (val ? val.split(',') : []) + ) as Partial>; + + return useDeepObjectIdentity({ + kuery, + environment: environment || ENVIRONMENT_ALL.value, + ...localUiFilters, + }); +} + +const defaultRefresh = (_time: TimeRange) => {}; + +const UrlParamsContext = createContext({ + urlParams: {} as IUrlParams, + refreshTimeRange: defaultRefresh, + uiFilters: {} as UIFilters, +}); + +const UrlParamsProvider: React.ComponentClass<{}> = withRouter( + ({ location, children }) => { + const refUrlParams = useRef(resolveUrlParams(location, {})); + + const { start, end, rangeFrom, rangeTo } = refUrlParams.current; + + const [, forceUpdate] = useState(''); + + const urlParams = useMemo( + () => + resolveUrlParams(location, { + start, + end, + rangeFrom, + rangeTo, + }), + [location, start, end, rangeFrom, rangeTo] + ); + + refUrlParams.current = urlParams; + + const refreshTimeRange = useCallback( + (timeRange: TimeRange) => { + refUrlParams.current = { + ...refUrlParams.current, + start: getParsedDate(timeRange.rangeFrom), + end: getParsedDate(timeRange.rangeTo, { roundUp: true }), + }; + + forceUpdate(uniqueId()); + }, + [forceUpdate] + ); + + const uiFilters = useUiFilters(urlParams); + + const contextValue = useMemo(() => { + return { + urlParams, + refreshTimeRange, + uiFilters, + }; + }, [urlParams, refreshTimeRange, uiFilters]); + + return ( + + ); + } +); + +export { UrlParamsContext, UrlParamsProvider, useUiFilters }; diff --git a/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx b/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx new file mode 100644 index 00000000000000..1bf071d9db35e1 --- /dev/null +++ b/x-pack/plugins/apm/public/context/url_params_context/use_url_params.tsx @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext } from 'react'; +import { UrlParamsContext } from './url_params_context'; + +export function useUrlParams() { + return useContext(UrlParamsContext); +} diff --git a/x-pack/plugins/apm/public/hooks/useAgentName.ts b/x-pack/plugins/apm/public/hooks/useAgentName.ts deleted file mode 100644 index b226971762fab4..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useAgentName.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import { useParams } from 'react-router-dom'; -import { useFetcher } from './useFetcher'; -import { useUrlParams } from './useUrlParams'; - -export function useAgentName() { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { urlParams } = useUrlParams(); - const { start, end } = urlParams; - - const { data: agentName, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/agent_name', - params: { - path: { serviceName }, - query: { start, end }, - }, - }).then((res) => res.agentName); - } - }, - [serviceName, start, end] - ); - - return { - agentName, - status, - error, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useAnomalyDetectionJobs.ts b/x-pack/plugins/apm/public/hooks/useAnomalyDetectionJobs.ts deleted file mode 100644 index 5bb36720e7b9bd..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useAnomalyDetectionJobs.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useFetcher } from './useFetcher'; - -export function useAnomalyDetectionJobs() { - return useFetcher( - (callApmApi) => - callApmApi({ - endpoint: `GET /api/apm/settings/anomaly-detection`, - }), - [], - { showToastOnError: false } - ); -} diff --git a/x-pack/plugins/apm/public/hooks/useApmPluginContext.ts b/x-pack/plugins/apm/public/hooks/useApmPluginContext.ts deleted file mode 100644 index 80a04edbca8584..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useApmPluginContext.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useContext } from 'react'; -import { ApmPluginContext } from '../context/ApmPluginContext'; - -export function useApmPluginContext() { - return useContext(ApmPluginContext); -} diff --git a/x-pack/plugins/apm/public/hooks/useCallApi.ts b/x-pack/plugins/apm/public/hooks/useCallApi.ts index 3fec36e7fb24ba..79e439c3f7e7a5 100644 --- a/x-pack/plugins/apm/public/hooks/useCallApi.ts +++ b/x-pack/plugins/apm/public/hooks/useCallApi.ts @@ -6,7 +6,7 @@ import { useMemo } from 'react'; import { callApi } from '../services/rest/callApi'; -import { useApmPluginContext } from './useApmPluginContext'; +import { useApmPluginContext } from '../context/apm_plugin/use_apm_plugin_context'; import { FetchOptions } from '../../common/fetch_options'; export function useCallApi() { diff --git a/x-pack/plugins/apm/public/hooks/useComponentId.tsx b/x-pack/plugins/apm/public/hooks/useComponentId.tsx deleted file mode 100644 index c1de5c8ba39716..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useComponentId.tsx +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useRef } from 'react'; - -let uniqueId = 0; -const getUniqueId = () => uniqueId++; - -export function useComponentId() { - const idRef = useRef(getUniqueId()); - return idRef.current; -} diff --git a/x-pack/plugins/apm/public/hooks/useDynamicIndexPattern.ts b/x-pack/plugins/apm/public/hooks/useDynamicIndexPattern.ts deleted file mode 100644 index d0e12d8537846a..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useDynamicIndexPattern.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useFetcher } from './useFetcher'; -import { UIProcessorEvent } from '../../common/processor_event'; - -export function useDynamicIndexPattern( - processorEvent: UIProcessorEvent | undefined -) { - const { data, status } = useFetcher( - (callApmApi) => { - return callApmApi({ - endpoint: 'GET /api/apm/index_pattern/dynamic', - isCachable: true, - params: { - query: { - processorEvent, - }, - }, - }); - }, - [processorEvent] - ); - - return { - indexPattern: data?.dynamicIndexPattern, - status, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useEnvironments.tsx b/x-pack/plugins/apm/public/hooks/useEnvironments.tsx deleted file mode 100644 index 05ac780aefbde8..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useEnvironments.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useMemo } from 'react'; -import { useFetcher } from './useFetcher'; -import { - ENVIRONMENT_ALL, - ENVIRONMENT_NOT_DEFINED, -} from '../../common/environment_filter_values'; -import { callApmApi } from '../services/rest/createCallApmApi'; - -function getEnvironmentOptions(environments: string[]) { - const environmentOptions = environments - .filter((env) => env !== ENVIRONMENT_NOT_DEFINED.value) - .map((environment) => ({ - value: environment, - text: environment, - })); - - return [ENVIRONMENT_ALL, ...environmentOptions]; -} - -export function useEnvironments({ - serviceName, - start, - end, -}: { - serviceName?: string; - start?: string; - end?: string; -}) { - const { data: environments = [], status = 'loading' } = useFetcher(() => { - if (start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/ui_filters/environments', - params: { - query: { - start, - end, - serviceName, - }, - }, - }); - } - }, [start, end, serviceName]); - - const environmentOptions = useMemo( - () => getEnvironmentOptions(environments), - [environments] - ); - - return { environments, status, environmentOptions }; -} diff --git a/x-pack/plugins/apm/public/hooks/useFetcher.test.tsx b/x-pack/plugins/apm/public/hooks/useFetcher.test.tsx deleted file mode 100644 index 59dd9455c724c9..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useFetcher.test.tsx +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { renderHook, RenderHookResult } from '@testing-library/react-hooks'; -import { delay } from '../utils/testHelpers'; -import { FetcherResult, useFetcher } from './useFetcher'; -import { MockApmPluginContextWrapper } from '../context/ApmPluginContext/MockApmPluginContext'; -import { ApmPluginContextValue } from '../context/ApmPluginContext'; - -// Wrap the hook with a provider so it can useApmPluginContext -const wrapper = MockApmPluginContextWrapper; - -describe('useFetcher', () => { - describe('when resolving after 500ms', () => { - let hook: RenderHookResult< - { children?: React.ReactNode; value?: ApmPluginContextValue }, - FetcherResult & { - refetch: () => void; - } - >; - beforeEach(() => { - jest.useFakeTimers(); - async function fn() { - await delay(500); - return 'response from hook'; - } - hook = renderHook(() => useFetcher(() => fn(), []), { wrapper }); - }); - - it('should have loading spinner initally', async () => { - expect(hook.result.current).toEqual({ - data: undefined, - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - }); - - it('should still show loading spinner after 100ms', async () => { - jest.advanceTimersByTime(100); - - expect(hook.result.current).toEqual({ - data: undefined, - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - }); - - it('should show success after 1 second', async () => { - jest.advanceTimersByTime(1000); - await hook.waitForNextUpdate(); - - expect(hook.result.current).toEqual({ - data: 'response from hook', - error: undefined, - refetch: expect.any(Function), - status: 'success', - }); - }); - }); - - describe('when throwing after 500ms', () => { - let hook: RenderHookResult< - { children?: React.ReactNode; value?: ApmPluginContextValue }, - FetcherResult & { - refetch: () => void; - } - >; - beforeEach(() => { - jest.useFakeTimers(); - async function fn() { - await delay(500); - throw new Error('Something went wrong'); - } - hook = renderHook(() => useFetcher(() => fn(), []), { wrapper }); - }); - - it('should have loading spinner initally', async () => { - expect(hook.result.current).toEqual({ - data: undefined, - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - }); - - it('should still show loading spinner after 100ms', async () => { - jest.advanceTimersByTime(100); - - expect(hook.result.current).toEqual({ - data: undefined, - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - }); - - it('should show error after 1 second', async () => { - jest.advanceTimersByTime(1000); - await hook.waitForNextUpdate(); - - expect(hook.result.current).toEqual({ - data: undefined, - error: expect.any(Error), - refetch: expect.any(Function), - status: 'failure', - }); - }); - }); - - describe('when a hook already has data', () => { - it('should show "first response" while loading "second response"', async () => { - jest.useFakeTimers(); - - const hook = renderHook( - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - ({ callback, args }) => useFetcher(callback, args), - { - initialProps: { - callback: async () => 'first response', - args: ['a'], - }, - wrapper, - } - ); - expect(hook.result.current).toEqual({ - data: undefined, - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - - await hook.waitForNextUpdate(); - - // assert: first response has loaded and should be rendered - expect(hook.result.current).toEqual({ - data: 'first response', - error: undefined, - refetch: expect.any(Function), - status: 'success', - }); - - // act: re-render hook with async callback - hook.rerender({ - callback: async () => { - await delay(500); - return 'second response'; - }, - args: ['b'], - }); - - jest.advanceTimersByTime(100); - - // assert: while loading new data the previous data should still be rendered - expect(hook.result.current).toEqual({ - data: 'first response', - error: undefined, - refetch: expect.any(Function), - status: 'loading', - }); - - jest.advanceTimersByTime(500); - await hook.waitForNextUpdate(); - - // assert: "second response" has loaded and should be rendered - expect(hook.result.current).toEqual({ - data: 'second response', - error: undefined, - refetch: expect.any(Function), - status: 'success', - }); - }); - - it('should return the same object reference when data is unchanged between rerenders', async () => { - const hook = renderHook( - /* eslint-disable-next-line react-hooks/exhaustive-deps */ - ({ callback, args }) => useFetcher(callback, args), - { - initialProps: { - callback: async () => 'data response', - args: ['a'], - }, - wrapper, - } - ); - await hook.waitForNextUpdate(); - const firstResult = hook.result.current; - hook.rerender(); - const secondResult = hook.result.current; - - // assert: subsequent rerender returns the same object reference - expect(secondResult === firstResult).toEqual(true); - - hook.rerender({ - callback: async () => { - return 'second response'; - }, - args: ['b'], - }); - await hook.waitForNextUpdate(); - const thirdResult = hook.result.current; - - // assert: rerender with different data returns a new object - expect(secondResult === thirdResult).toEqual(false); - }); - }); -}); diff --git a/x-pack/plugins/apm/public/hooks/useFetcher.tsx b/x-pack/plugins/apm/public/hooks/useFetcher.tsx deleted file mode 100644 index 6add0e8a2b4802..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useFetcher.tsx +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { i18n } from '@kbn/i18n'; -import React, { useEffect, useMemo, useState } from 'react'; -import { IHttpFetchError } from 'src/core/public'; -import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; -import { APMClient, callApmApi } from '../services/rest/createCallApmApi'; -import { useApmPluginContext } from './useApmPluginContext'; - -export enum FETCH_STATUS { - LOADING = 'loading', - SUCCESS = 'success', - FAILURE = 'failure', - PENDING = 'pending', -} - -export interface FetcherResult { - data?: Data; - status: FETCH_STATUS; - error?: IHttpFetchError; -} - -// fetcher functions can return undefined OR a promise. Previously we had a more simple type -// but it led to issues when using object destructuring with default values -type InferResponseType = Exclude extends Promise< - infer TResponseType -> - ? TResponseType - : unknown; - -export function useFetcher( - fn: (callApmApi: APMClient) => TReturn, - fnDeps: any[], - options: { - preservePreviousData?: boolean; - showToastOnError?: boolean; - } = {} -): FetcherResult> & { refetch: () => void } { - const { notifications } = useApmPluginContext().core; - const { preservePreviousData = true, showToastOnError = true } = options; - const [result, setResult] = useState< - FetcherResult> - >({ - data: undefined, - status: FETCH_STATUS.PENDING, - }); - const [counter, setCounter] = useState(0); - - useEffect(() => { - let didCancel = false; - - async function doFetch() { - const promise = fn(callApmApi); - // if `fn` doesn't return a promise it is a signal that data fetching was not initiated. - // This can happen if the data fetching is conditional (based on certain inputs). - // In these cases it is not desirable to invoke the global loading spinner, or change the status to success - if (!promise) { - return; - } - - setResult((prevResult) => ({ - data: preservePreviousData ? prevResult.data : undefined, // preserve data from previous state while loading next state - status: FETCH_STATUS.LOADING, - error: undefined, - })); - - try { - const data = await promise; - if (!didCancel) { - setResult({ - data, - status: FETCH_STATUS.SUCCESS, - error: undefined, - } as FetcherResult>); - } - } catch (e) { - const err = e as Error | IHttpFetchError; - - if (!didCancel) { - const errorDetails = - 'response' in err ? ( - <> - {err.response?.statusText} ({err.response?.status}) -
- {i18n.translate('xpack.apm.fetcher.error.url', { - defaultMessage: `URL`, - })} -
- {err.response?.url} - - ) : ( - err.message - ); - - if (showToastOnError) { - notifications.toasts.addWarning({ - title: i18n.translate('xpack.apm.fetcher.error.title', { - defaultMessage: `Error while fetching resource`, - }), - text: toMountPoint( -
-
- {i18n.translate('xpack.apm.fetcher.error.status', { - defaultMessage: `Error`, - })} -
- - {errorDetails} -
- ), - }); - } - setResult({ - data: undefined, - status: FETCH_STATUS.FAILURE, - error: e, - }); - } - } - } - - doFetch(); - - return () => { - didCancel = true; - }; - /* eslint-disable react-hooks/exhaustive-deps */ - }, [ - counter, - preservePreviousData, - showToastOnError, - ...fnDeps, - /* eslint-enable react-hooks/exhaustive-deps */ - ]); - - return useMemo(() => { - return { - ...result, - refetch: () => { - // this will invalidate the deps to `useEffect` and will result in a new request - setCounter((count) => count + 1); - }, - }; - }, [result]); -} diff --git a/x-pack/plugins/apm/public/hooks/useKibanaUrl.ts b/x-pack/plugins/apm/public/hooks/useKibanaUrl.ts index b4a354c2316339..66edb84378a457 100644 --- a/x-pack/plugins/apm/public/hooks/useKibanaUrl.ts +++ b/x-pack/plugins/apm/public/hooks/useKibanaUrl.ts @@ -5,7 +5,7 @@ */ import url from 'url'; -import { useApmPluginContext } from './useApmPluginContext'; +import { useApmPluginContext } from '../context/apm_plugin/use_apm_plugin_context'; export function useKibanaUrl( /** The path to the plugin */ path: string, diff --git a/x-pack/plugins/apm/public/hooks/useLicense.ts b/x-pack/plugins/apm/public/hooks/useLicense.ts deleted file mode 100644 index ca828e49706a82..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useLicense.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useContext } from 'react'; -import { LicenseContext } from '../context/LicenseContext'; - -export function useLicense() { - return useContext(LicenseContext); -} diff --git a/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts b/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts index da1797fd712b15..551e92f8ba0340 100644 --- a/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts +++ b/x-pack/plugins/apm/public/hooks/useLocalUIFilters.ts @@ -15,10 +15,10 @@ import { // eslint-disable-next-line @kbn/eslint/no-restricted-paths } from '../../server/lib/ui_filters/local_ui_filters/config'; import { fromQuery, toQuery } from '../components/shared/Links/url_helpers'; -import { removeUndefinedProps } from '../context/UrlParamsContext/helpers'; +import { removeUndefinedProps } from '../context/url_params_context/helpers'; import { useCallApi } from './useCallApi'; -import { useFetcher } from './useFetcher'; -import { useUrlParams } from './useUrlParams'; +import { useFetcher } from './use_fetcher'; +import { useUrlParams } from '../context/url_params_context/use_url_params'; import { LocalUIFilterName } from '../../common/ui_filter'; const getInitialData = ( diff --git a/x-pack/plugins/apm/public/hooks/useServiceMetricCharts.ts b/x-pack/plugins/apm/public/hooks/useServiceMetricCharts.ts deleted file mode 100644 index d264ad6069db30..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useServiceMetricCharts.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useParams } from 'react-router-dom'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { MetricsChartsByAgentAPIResponse } from '../../server/lib/metrics/get_metrics_chart_data_by_agent'; -import { useUiFilters } from '../context/UrlParamsContext'; -import { IUrlParams } from '../context/UrlParamsContext/types'; -import { useFetcher } from './useFetcher'; - -const INITIAL_DATA: MetricsChartsByAgentAPIResponse = { - charts: [], -}; - -export function useServiceMetricCharts( - urlParams: IUrlParams, - agentName?: string -) { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { start, end } = urlParams; - const uiFilters = useUiFilters(urlParams); - const { data = INITIAL_DATA, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end && agentName) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/metrics/charts', - params: { - path: { serviceName }, - query: { - start, - end, - agentName, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, - [serviceName, start, end, agentName, uiFilters] - ); - - return { - data, - status, - error, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useServiceTransactionTypes.tsx b/x-pack/plugins/apm/public/hooks/useServiceTransactionTypes.tsx deleted file mode 100644 index 5f778e3d8834b2..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useServiceTransactionTypes.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useParams } from 'react-router-dom'; -import { IUrlParams } from '../context/UrlParamsContext/types'; -import { useFetcher } from './useFetcher'; - -const INITIAL_DATA = { transactionTypes: [] }; - -export function useServiceTransactionTypes(urlParams: IUrlParams) { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { start, end } = urlParams; - const { data = INITIAL_DATA } = useFetcher( - (callApmApi) => { - if (serviceName && start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_types', - params: { - path: { serviceName }, - query: { start, end }, - }, - }); - } - }, - [serviceName, start, end] - ); - - return data.transactionTypes; -} diff --git a/x-pack/plugins/apm/public/hooks/useTransactionBreakdown.ts b/x-pack/plugins/apm/public/hooks/useTransactionBreakdown.ts deleted file mode 100644 index 14832476864295..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useTransactionBreakdown.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useParams } from 'react-router-dom'; -import { useFetcher } from './useFetcher'; -import { useUrlParams } from './useUrlParams'; - -export function useTransactionBreakdown() { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { - urlParams: { start, end, transactionName, transactionType }, - uiFilters, - } = useUrlParams(); - - const { data = { timeseries: undefined }, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end && transactionType) { - return callApmApi({ - endpoint: - 'GET /api/apm/services/{serviceName}/transaction_groups/breakdown', - params: { - path: { serviceName }, - query: { - start, - end, - transactionName, - transactionType, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, - [serviceName, start, end, transactionType, transactionName, uiFilters] - ); - - return { - data, - status, - error, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useTransactionCharts.ts b/x-pack/plugins/apm/public/hooks/useTransactionCharts.ts deleted file mode 100644 index c790ac57edc3bf..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useTransactionCharts.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useMemo } from 'react'; -import { useParams } from 'react-router-dom'; -import { getTransactionCharts } from '../selectors/chart_selectors'; -import { useFetcher } from './useFetcher'; -import { useUrlParams } from './useUrlParams'; - -export function useTransactionCharts() { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { - urlParams: { transactionType, start, end, transactionName }, - uiFilters, - } = useUrlParams(); - - const { data, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end) { - return callApmApi({ - endpoint: - 'GET /api/apm/services/{serviceName}/transaction_groups/charts', - params: { - path: { serviceName }, - query: { - start, - end, - transactionType, - transactionName, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, - [serviceName, start, end, transactionName, transactionType, uiFilters] - ); - - const memoizedData = useMemo( - () => getTransactionCharts({ transactionType }, data), - [data, transactionType] - ); - - return { - data: memoizedData, - status, - error, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts b/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts deleted file mode 100644 index 9cbfee37d12530..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useTransactionDistribution.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { flatten, omit, isEmpty } from 'lodash'; -import { useHistory, useParams } from 'react-router-dom'; -import { IUrlParams } from '../context/UrlParamsContext/types'; -import { useFetcher } from './useFetcher'; -import { useUiFilters } from '../context/UrlParamsContext'; -import { toQuery, fromQuery } from '../components/shared/Links/url_helpers'; -import { maybe } from '../../common/utils/maybe'; -import { APIReturnType } from '../services/rest/createCallApmApi'; - -type APIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups/distribution'>; - -const INITIAL_DATA = { - buckets: [] as APIResponse['buckets'], - noHits: true, - bucketSize: 0, -}; - -export function useTransactionDistribution(urlParams: IUrlParams) { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { - start, - end, - transactionType, - transactionId, - traceId, - transactionName, - } = urlParams; - const uiFilters = useUiFilters(urlParams); - - const history = useHistory(); - - const { data = INITIAL_DATA, status, error } = useFetcher( - async (callApmApi) => { - if (serviceName && start && end && transactionType && transactionName) { - const response = await callApmApi({ - endpoint: - 'GET /api/apm/services/{serviceName}/transaction_groups/distribution', - params: { - path: { - serviceName, - }, - query: { - start, - end, - transactionType, - transactionName, - transactionId, - traceId, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - - const selectedSample = - transactionId && traceId - ? flatten(response.buckets.map((bucket) => bucket.samples)).find( - (sample) => - sample.transactionId === transactionId && - sample.traceId === traceId - ) - : undefined; - - if (!selectedSample) { - // selected sample was not found. select a new one: - // sorted by total number of requests, but only pick - // from buckets that have samples - const bucketsSortedByCount = response.buckets - .filter((bucket) => !isEmpty(bucket.samples)) - .sort((bucket) => bucket.count); - - const preferredSample = maybe(bucketsSortedByCount[0]?.samples[0]); - - history.replace({ - ...history.location, - search: fromQuery({ - ...omit(toQuery(history.location.search), [ - 'traceId', - 'transactionId', - ]), - ...preferredSample, - }), - }); - } - - return response; - } - }, - // the histogram should not be refetched if the transactionId or traceId changes - // eslint-disable-next-line react-hooks/exhaustive-deps - [serviceName, start, end, transactionType, transactionName, uiFilters] - ); - - return { data, status, error }; -} diff --git a/x-pack/plugins/apm/public/hooks/useTransactionList.ts b/x-pack/plugins/apm/public/hooks/useTransactionList.ts deleted file mode 100644 index 92b54beb715db7..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useTransactionList.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useParams } from 'react-router-dom'; -import { useUiFilters } from '../context/UrlParamsContext'; -import { IUrlParams } from '../context/UrlParamsContext/types'; -import { APIReturnType } from '../services/rest/createCallApmApi'; -import { useFetcher } from './useFetcher'; - -type TransactionsAPIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transaction_groups'>; - -const DEFAULT_RESPONSE: Partial = { - items: undefined, - isAggregationAccurate: true, - bucketSize: 0, -}; - -export function useTransactionList(urlParams: IUrlParams) { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { transactionType, start, end } = urlParams; - const uiFilters = useUiFilters(urlParams); - const { data = DEFAULT_RESPONSE, error, status } = useFetcher( - (callApmApi) => { - if (serviceName && start && end && transactionType) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_groups', - params: { - path: { serviceName }, - query: { - start, - end, - transactionType, - uiFilters: JSON.stringify(uiFilters), - }, - }, - }); - } - }, - [serviceName, start, end, transactionType, uiFilters] - ); - - return { - data, - status, - error, - }; -} diff --git a/x-pack/plugins/apm/public/hooks/useUrlParams.tsx b/x-pack/plugins/apm/public/hooks/useUrlParams.tsx deleted file mode 100644 index b9f47046812be4..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useUrlParams.tsx +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useContext } from 'react'; -import { UrlParamsContext } from '../context/UrlParamsContext'; - -export function useUrlParams() { - return useContext(UrlParamsContext); -} diff --git a/x-pack/plugins/apm/public/hooks/useWaterfall.ts b/x-pack/plugins/apm/public/hooks/useWaterfall.ts deleted file mode 100644 index 6264ec45088a25..00000000000000 --- a/x-pack/plugins/apm/public/hooks/useWaterfall.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useMemo } from 'react'; -import { IUrlParams } from '../context/UrlParamsContext/types'; -import { useFetcher } from './useFetcher'; -import { getWaterfall } from '../components/app/TransactionDetails/WaterfallWithSummmary/WaterfallContainer/Waterfall/waterfall_helpers/waterfall_helpers'; - -const INITIAL_DATA = { - root: undefined, - trace: { items: [], exceedsMax: false, errorDocs: [] }, - errorsPerTransaction: {}, -}; - -export function useWaterfall(urlParams: IUrlParams) { - const { traceId, start, end, transactionId } = urlParams; - const { data = INITIAL_DATA, status, error } = useFetcher( - (callApmApi) => { - if (traceId && start && end) { - return callApmApi({ - endpoint: 'GET /api/apm/traces/{traceId}', - params: { - path: { traceId }, - query: { - start, - end, - }, - }, - }); - } - }, - [traceId, start, end] - ); - - const waterfall = useMemo(() => getWaterfall(data, transactionId), [ - data, - transactionId, - ]); - - return { waterfall, status, error, exceedsMax: data.trace.exceedsMax }; -} diff --git a/x-pack/plugins/apm/public/hooks/use_annotations.ts b/x-pack/plugins/apm/public/hooks/use_annotations.ts deleted file mode 100644 index e8f6785706a912..00000000000000 --- a/x-pack/plugins/apm/public/hooks/use_annotations.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import { useParams } from 'react-router-dom'; -import { callApmApi } from '../services/rest/createCallApmApi'; -import { useFetcher } from './useFetcher'; -import { useUrlParams } from './useUrlParams'; - -const INITIAL_STATE = { annotations: [] }; - -export function useAnnotations() { - const { serviceName } = useParams<{ serviceName?: string }>(); - const { urlParams, uiFilters } = useUrlParams(); - const { start, end } = urlParams; - const { environment } = uiFilters; - - const { data = INITIAL_STATE } = useFetcher(() => { - if (start && end && serviceName) { - return callApmApi({ - endpoint: 'GET /api/apm/services/{serviceName}/annotation/search', - params: { - path: { - serviceName, - }, - query: { - start, - end, - environment, - }, - }, - }); - } - }, [start, end, environment, serviceName]); - - return data; -} diff --git a/x-pack/plugins/apm/public/hooks/use_breadcrumbs.test.tsx b/x-pack/plugins/apm/public/hooks/use_breadcrumbs.test.tsx index dcd6ed0ba49347..9127bd3adc69ec 100644 --- a/x-pack/plugins/apm/public/hooks/use_breadcrumbs.test.tsx +++ b/x-pack/plugins/apm/public/hooks/use_breadcrumbs.test.tsx @@ -9,11 +9,11 @@ import produce from 'immer'; import React, { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; import { routes } from '../components/app/Main/route_config'; -import { ApmPluginContextValue } from '../context/ApmPluginContext'; +import { ApmPluginContextValue } from '../context/apm_plugin/apm_plugin_context'; import { mockApmPluginContextValue, MockApmPluginContextWrapper, -} from '../context/ApmPluginContext/MockApmPluginContext'; +} from '../context/apm_plugin/mock_apm_plugin_context'; import { useBreadcrumbs } from './use_breadcrumbs'; function createWrapper(path: string) { diff --git a/x-pack/plugins/apm/public/hooks/use_breadcrumbs.ts b/x-pack/plugins/apm/public/hooks/use_breadcrumbs.ts index 640170bf3bff27..089381cbe05b5b 100644 --- a/x-pack/plugins/apm/public/hooks/use_breadcrumbs.ts +++ b/x-pack/plugins/apm/public/hooks/use_breadcrumbs.ts @@ -16,7 +16,7 @@ import { } from 'react-router-dom'; import { APMRouteDefinition, BreadcrumbTitle } from '../application/routes'; import { getAPMHref } from '../components/shared/Links/apm/APMLink'; -import { useApmPluginContext } from './useApmPluginContext'; +import { useApmPluginContext } from '../context/apm_plugin/use_apm_plugin_context'; interface BreadcrumbWithoutLink extends ChromeBreadcrumb { match: Match>; diff --git a/x-pack/plugins/apm/public/hooks/use_charts_sync.tsx b/x-pack/plugins/apm/public/hooks/use_charts_sync.tsx deleted file mode 100644 index cde5c84a6097b2..00000000000000 --- a/x-pack/plugins/apm/public/hooks/use_charts_sync.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { useContext } from 'react'; -import { ChartsSyncContext } from '../context/charts_sync_context'; - -export function useChartsSync() { - const context = useContext(ChartsSyncContext); - - if (!context) { - throw new Error('Missing ChartsSync context provider'); - } - - return context; -} diff --git a/x-pack/plugins/apm/public/hooks/use_dynamic_index_pattern.ts b/x-pack/plugins/apm/public/hooks/use_dynamic_index_pattern.ts new file mode 100644 index 00000000000000..becdf1f9ecc5e4 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_dynamic_index_pattern.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useFetcher } from './use_fetcher'; +import { UIProcessorEvent } from '../../common/processor_event'; + +export function useDynamicIndexPatternFetcher( + processorEvent: UIProcessorEvent | undefined +) { + const { data, status } = useFetcher( + (callApmApi) => { + return callApmApi({ + endpoint: 'GET /api/apm/index_pattern/dynamic', + isCachable: true, + params: { + query: { + processorEvent, + }, + }, + }); + }, + [processorEvent] + ); + + return { + indexPattern: data?.dynamicIndexPattern, + status, + }; +} diff --git a/x-pack/plugins/apm/public/hooks/use_environments_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_environments_fetcher.tsx new file mode 100644 index 00000000000000..1ad151b8c7e907 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_environments_fetcher.tsx @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo } from 'react'; +import { useFetcher } from './use_fetcher'; +import { + ENVIRONMENT_ALL, + ENVIRONMENT_NOT_DEFINED, +} from '../../common/environment_filter_values'; +import { callApmApi } from '../services/rest/createCallApmApi'; + +function getEnvironmentOptions(environments: string[]) { + const environmentOptions = environments + .filter((env) => env !== ENVIRONMENT_NOT_DEFINED.value) + .map((environment) => ({ + value: environment, + text: environment, + })); + + return [ENVIRONMENT_ALL, ...environmentOptions]; +} + +export function useEnvironmentsFetcher({ + serviceName, + start, + end, +}: { + serviceName?: string; + start?: string; + end?: string; +}) { + const { data: environments = [], status = 'loading' } = useFetcher(() => { + if (start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/ui_filters/environments', + params: { + query: { + start, + end, + serviceName, + }, + }, + }); + } + }, [start, end, serviceName]); + + const environmentOptions = useMemo( + () => getEnvironmentOptions(environments), + [environments] + ); + + return { environments, status, environmentOptions }; +} diff --git a/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx new file mode 100644 index 00000000000000..1c17be884ebf56 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_error_group_distribution_fetcher.tsx @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useUrlParams } from '../context/url_params_context/use_url_params'; +import { useFetcher } from './use_fetcher'; + +export function useErrorGroupDistributionFetcher({ + serviceName, + groupId, +}: { + serviceName: string; + groupId: string | undefined; +}) { + const { urlParams, uiFilters } = useUrlParams(); + const { start, end } = urlParams; + const { data } = useFetcher( + (callApmApi) => { + if (start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/errors/distribution', + params: { + path: { serviceName }, + query: { + start, + end, + groupId, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, + [serviceName, start, end, groupId, uiFilters] + ); + + return { errorDistributionData: data }; +} diff --git a/x-pack/plugins/apm/public/hooks/use_fetcher.integration.test.tsx b/x-pack/plugins/apm/public/hooks/use_fetcher.integration.test.tsx index e837851828d94f..e6f3b71af8a859 100644 --- a/x-pack/plugins/apm/public/hooks/use_fetcher.integration.test.tsx +++ b/x-pack/plugins/apm/public/hooks/use_fetcher.integration.test.tsx @@ -7,8 +7,8 @@ import { render, waitFor } from '@testing-library/react'; import React from 'react'; import { delay } from '../utils/testHelpers'; -import { useFetcher } from './useFetcher'; -import { MockApmPluginContextWrapper } from '../context/ApmPluginContext/MockApmPluginContext'; +import { useFetcher } from './use_fetcher'; +import { MockApmPluginContextWrapper } from '../context/apm_plugin/mock_apm_plugin_context'; const wrapper = MockApmPluginContextWrapper; diff --git a/x-pack/plugins/apm/public/hooks/use_fetcher.test.tsx b/x-pack/plugins/apm/public/hooks/use_fetcher.test.tsx new file mode 100644 index 00000000000000..9b4ad6bc9bb517 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_fetcher.test.tsx @@ -0,0 +1,211 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { renderHook, RenderHookResult } from '@testing-library/react-hooks'; +import { delay } from '../utils/testHelpers'; +import { FetcherResult, useFetcher } from './use_fetcher'; +import { MockApmPluginContextWrapper } from '../context/apm_plugin/mock_apm_plugin_context'; +import { ApmPluginContextValue } from '../context/apm_plugin/apm_plugin_context'; + +// Wrap the hook with a provider so it can useApmPluginContext +const wrapper = MockApmPluginContextWrapper; + +describe('useFetcher', () => { + describe('when resolving after 500ms', () => { + let hook: RenderHookResult< + { children?: React.ReactNode; value?: ApmPluginContextValue }, + FetcherResult & { + refetch: () => void; + } + >; + beforeEach(() => { + jest.useFakeTimers(); + async function fn() { + await delay(500); + return 'response from hook'; + } + hook = renderHook(() => useFetcher(() => fn(), []), { wrapper }); + }); + + it('should have loading spinner initally', async () => { + expect(hook.result.current).toEqual({ + data: undefined, + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + }); + + it('should still show loading spinner after 100ms', async () => { + jest.advanceTimersByTime(100); + + expect(hook.result.current).toEqual({ + data: undefined, + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + }); + + it('should show success after 1 second', async () => { + jest.advanceTimersByTime(1000); + await hook.waitForNextUpdate(); + + expect(hook.result.current).toEqual({ + data: 'response from hook', + error: undefined, + refetch: expect.any(Function), + status: 'success', + }); + }); + }); + + describe('when throwing after 500ms', () => { + let hook: RenderHookResult< + { children?: React.ReactNode; value?: ApmPluginContextValue }, + FetcherResult & { + refetch: () => void; + } + >; + beforeEach(() => { + jest.useFakeTimers(); + async function fn() { + await delay(500); + throw new Error('Something went wrong'); + } + hook = renderHook(() => useFetcher(() => fn(), []), { wrapper }); + }); + + it('should have loading spinner initally', async () => { + expect(hook.result.current).toEqual({ + data: undefined, + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + }); + + it('should still show loading spinner after 100ms', async () => { + jest.advanceTimersByTime(100); + + expect(hook.result.current).toEqual({ + data: undefined, + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + }); + + it('should show error after 1 second', async () => { + jest.advanceTimersByTime(1000); + await hook.waitForNextUpdate(); + + expect(hook.result.current).toEqual({ + data: undefined, + error: expect.any(Error), + refetch: expect.any(Function), + status: 'failure', + }); + }); + }); + + describe('when a hook already has data', () => { + it('should show "first response" while loading "second response"', async () => { + jest.useFakeTimers(); + + const hook = renderHook( + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + ({ callback, args }) => useFetcher(callback, args), + { + initialProps: { + callback: async () => 'first response', + args: ['a'], + }, + wrapper, + } + ); + expect(hook.result.current).toEqual({ + data: undefined, + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + + await hook.waitForNextUpdate(); + + // assert: first response has loaded and should be rendered + expect(hook.result.current).toEqual({ + data: 'first response', + error: undefined, + refetch: expect.any(Function), + status: 'success', + }); + + // act: re-render hook with async callback + hook.rerender({ + callback: async () => { + await delay(500); + return 'second response'; + }, + args: ['b'], + }); + + jest.advanceTimersByTime(100); + + // assert: while loading new data the previous data should still be rendered + expect(hook.result.current).toEqual({ + data: 'first response', + error: undefined, + refetch: expect.any(Function), + status: 'loading', + }); + + jest.advanceTimersByTime(500); + await hook.waitForNextUpdate(); + + // assert: "second response" has loaded and should be rendered + expect(hook.result.current).toEqual({ + data: 'second response', + error: undefined, + refetch: expect.any(Function), + status: 'success', + }); + }); + + it('should return the same object reference when data is unchanged between rerenders', async () => { + const hook = renderHook( + /* eslint-disable-next-line react-hooks/exhaustive-deps */ + ({ callback, args }) => useFetcher(callback, args), + { + initialProps: { + callback: async () => 'data response', + args: ['a'], + }, + wrapper, + } + ); + await hook.waitForNextUpdate(); + const firstResult = hook.result.current; + hook.rerender(); + const secondResult = hook.result.current; + + // assert: subsequent rerender returns the same object reference + expect(secondResult === firstResult).toEqual(true); + + hook.rerender({ + callback: async () => { + return 'second response'; + }, + args: ['b'], + }); + await hook.waitForNextUpdate(); + const thirdResult = hook.result.current; + + // assert: rerender with different data returns a new object + expect(secondResult === thirdResult).toEqual(false); + }); + }); +}); diff --git a/x-pack/plugins/apm/public/hooks/use_fetcher.tsx b/x-pack/plugins/apm/public/hooks/use_fetcher.tsx new file mode 100644 index 00000000000000..a9a4871dc87071 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_fetcher.tsx @@ -0,0 +1,149 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import React, { useEffect, useMemo, useState } from 'react'; +import { IHttpFetchError } from 'src/core/public'; +import { toMountPoint } from '../../../../../src/plugins/kibana_react/public'; +import { APMClient, callApmApi } from '../services/rest/createCallApmApi'; +import { useApmPluginContext } from '../context/apm_plugin/use_apm_plugin_context'; + +export enum FETCH_STATUS { + LOADING = 'loading', + SUCCESS = 'success', + FAILURE = 'failure', + PENDING = 'pending', +} + +export interface FetcherResult { + data?: Data; + status: FETCH_STATUS; + error?: IHttpFetchError; +} + +// fetcher functions can return undefined OR a promise. Previously we had a more simple type +// but it led to issues when using object destructuring with default values +type InferResponseType = Exclude extends Promise< + infer TResponseType +> + ? TResponseType + : unknown; + +export function useFetcher( + fn: (callApmApi: APMClient) => TReturn, + fnDeps: any[], + options: { + preservePreviousData?: boolean; + showToastOnError?: boolean; + } = {} +): FetcherResult> & { refetch: () => void } { + const { notifications } = useApmPluginContext().core; + const { preservePreviousData = true, showToastOnError = true } = options; + const [result, setResult] = useState< + FetcherResult> + >({ + data: undefined, + status: FETCH_STATUS.PENDING, + }); + const [counter, setCounter] = useState(0); + + useEffect(() => { + let didCancel = false; + + async function doFetch() { + const promise = fn(callApmApi); + // if `fn` doesn't return a promise it is a signal that data fetching was not initiated. + // This can happen if the data fetching is conditional (based on certain inputs). + // In these cases it is not desirable to invoke the global loading spinner, or change the status to success + if (!promise) { + return; + } + + setResult((prevResult) => ({ + data: preservePreviousData ? prevResult.data : undefined, // preserve data from previous state while loading next state + status: FETCH_STATUS.LOADING, + error: undefined, + })); + + try { + const data = await promise; + if (!didCancel) { + setResult({ + data, + status: FETCH_STATUS.SUCCESS, + error: undefined, + } as FetcherResult>); + } + } catch (e) { + const err = e as Error | IHttpFetchError; + + if (!didCancel) { + const errorDetails = + 'response' in err ? ( + <> + {err.response?.statusText} ({err.response?.status}) +
+ {i18n.translate('xpack.apm.fetcher.error.url', { + defaultMessage: `URL`, + })} +
+ {err.response?.url} + + ) : ( + err.message + ); + + if (showToastOnError) { + notifications.toasts.addWarning({ + title: i18n.translate('xpack.apm.fetcher.error.title', { + defaultMessage: `Error while fetching resource`, + }), + text: toMountPoint( +
+
+ {i18n.translate('xpack.apm.fetcher.error.status', { + defaultMessage: `Error`, + })} +
+ + {errorDetails} +
+ ), + }); + } + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: e, + }); + } + } + } + + doFetch(); + + return () => { + didCancel = true; + }; + /* eslint-disable react-hooks/exhaustive-deps */ + }, [ + counter, + preservePreviousData, + showToastOnError, + ...fnDeps, + /* eslint-enable react-hooks/exhaustive-deps */ + ]); + + return useMemo(() => { + return { + ...result, + refetch: () => { + // this will invalidate the deps to `useEffect` and will result in a new request + setCounter((count) => count + 1); + }, + }; + }, [result]); +} diff --git a/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts new file mode 100644 index 00000000000000..c888c515895631 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_service_metric_charts_fetcher.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useParams } from 'react-router-dom'; +// eslint-disable-next-line @kbn/eslint/no-restricted-paths +import { MetricsChartsByAgentAPIResponse } from '../../server/lib/metrics/get_metrics_chart_data_by_agent'; +import { useUrlParams } from '../context/url_params_context/use_url_params'; +import { useApmServiceContext } from '../context/apm_service/use_apm_service_context'; +import { useFetcher } from './use_fetcher'; + +const INITIAL_DATA: MetricsChartsByAgentAPIResponse = { + charts: [], +}; + +export function useServiceMetricChartsFetcher({ + serviceNodeName, +}: { + serviceNodeName: string | undefined; +}) { + const { urlParams, uiFilters } = useUrlParams(); + const { agentName } = useApmServiceContext(); + const { serviceName } = useParams<{ serviceName?: string }>(); + const { start, end } = urlParams; + const { data = INITIAL_DATA, error, status } = useFetcher( + (callApmApi) => { + if (serviceName && start && end && agentName) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/metrics/charts', + params: { + path: { serviceName }, + query: { + serviceNodeName, + start, + end, + agentName, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, + [serviceName, start, end, agentName, serviceNodeName, uiFilters] + ); + + return { + data, + status, + error, + }; +} diff --git a/x-pack/plugins/apm/public/hooks/useTheme.tsx b/x-pack/plugins/apm/public/hooks/use_theme.tsx similarity index 100% rename from x-pack/plugins/apm/public/hooks/useTheme.tsx rename to x-pack/plugins/apm/public/hooks/use_theme.tsx diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_charts_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_charts_fetcher.ts new file mode 100644 index 00000000000000..406a1a46335770 --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_transaction_charts_fetcher.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useMemo } from 'react'; +import { useParams } from 'react-router-dom'; +import { getTransactionCharts } from '../selectors/chart_selectors'; +import { useFetcher } from './use_fetcher'; +import { useUrlParams } from '../context/url_params_context/use_url_params'; + +export function useTransactionChartsFetcher() { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { + urlParams: { transactionType, start, end, transactionName }, + uiFilters, + } = useUrlParams(); + + const { data, error, status } = useFetcher( + (callApmApi) => { + if (serviceName && start && end) { + return callApmApi({ + endpoint: 'GET /api/apm/services/{serviceName}/transactions/charts', + params: { + path: { serviceName }, + query: { + start, + end, + transactionType, + transactionName, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + } + }, + [serviceName, start, end, transactionName, transactionType, uiFilters] + ); + + const memoizedData = useMemo( + () => getTransactionCharts({ transactionType }, data), + [data, transactionType] + ); + + return { + transactionChartsData: memoizedData, + transactionChartsStatus: status, + transactionChartsError: error, + }; +} diff --git a/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts b/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts new file mode 100644 index 00000000000000..b8968031e6922d --- /dev/null +++ b/x-pack/plugins/apm/public/hooks/use_transaction_distribution_fetcher.ts @@ -0,0 +1,102 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { flatten, omit, isEmpty } from 'lodash'; +import { useHistory, useParams } from 'react-router-dom'; +import { useFetcher } from './use_fetcher'; +import { toQuery, fromQuery } from '../components/shared/Links/url_helpers'; +import { maybe } from '../../common/utils/maybe'; +import { APIReturnType } from '../services/rest/createCallApmApi'; +import { useUrlParams } from '../context/url_params_context/use_url_params'; + +type APIResponse = APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/distribution'>; + +const INITIAL_DATA = { + buckets: [] as APIResponse['buckets'], + noHits: true, + bucketSize: 0, +}; + +export function useTransactionDistributionFetcher() { + const { serviceName } = useParams<{ serviceName?: string }>(); + const { urlParams, uiFilters } = useUrlParams(); + const { + start, + end, + transactionType, + transactionId, + traceId, + transactionName, + } = urlParams; + + const history = useHistory(); + const { data = INITIAL_DATA, status, error } = useFetcher( + async (callApmApi) => { + if (serviceName && start && end && transactionType && transactionName) { + const response = await callApmApi({ + endpoint: + 'GET /api/apm/services/{serviceName}/transactions/charts/distribution', + params: { + path: { + serviceName, + }, + query: { + start, + end, + transactionType, + transactionName, + transactionId, + traceId, + uiFilters: JSON.stringify(uiFilters), + }, + }, + }); + + const selectedSample = + transactionId && traceId + ? flatten(response.buckets.map((bucket) => bucket.samples)).find( + (sample) => + sample.transactionId === transactionId && + sample.traceId === traceId + ) + : undefined; + + if (!selectedSample) { + // selected sample was not found. select a new one: + // sorted by total number of requests, but only pick + // from buckets that have samples + const bucketsSortedByCount = response.buckets + .filter((bucket) => !isEmpty(bucket.samples)) + .sort((bucket) => bucket.count); + + const preferredSample = maybe(bucketsSortedByCount[0]?.samples[0]); + + history.replace({ + ...history.location, + search: fromQuery({ + ...omit(toQuery(history.location.search), [ + 'traceId', + 'transactionId', + ]), + ...preferredSample, + }), + }); + } + + return response; + } + }, + // the histogram should not be refetched if the transactionId or traceId changes + // eslint-disable-next-line react-hooks/exhaustive-deps + [serviceName, start, end, transactionType, transactionName, uiFilters] + ); + + return { + distributionData: data, + distributionStatus: status, + distributionError: error, + }; +} diff --git a/x-pack/plugins/apm/public/plugin.ts b/x-pack/plugins/apm/public/plugin.ts index cc0151afba63c8..89401d9192b0b2 100644 --- a/x-pack/plugins/apm/public/plugin.ts +++ b/x-pack/plugins/apm/public/plugin.ts @@ -138,12 +138,18 @@ export class ApmPlugin implements Plugin { async mount(params: AppMountParameters) { // Load application bundle and Get start services - const [{ renderApp }, [coreStart]] = await Promise.all([ + const [{ renderApp }, [coreStart, corePlugins]] = await Promise.all([ import('./application'), core.getStartServices(), ]); - return renderApp(coreStart, pluginSetupDeps, params, config); + return renderApp( + coreStart, + pluginSetupDeps, + params, + config, + corePlugins as ApmPluginStartDeps + ); }, }); diff --git a/x-pack/plugins/apm/public/selectors/chart_selectors.test.ts b/x-pack/plugins/apm/public/selectors/chart_selectors.test.ts index 4269ec0e6c0f36..c9e6177f2c7213 100644 --- a/x-pack/plugins/apm/public/selectors/chart_selectors.test.ts +++ b/x-pack/plugins/apm/public/selectors/chart_selectors.test.ts @@ -23,13 +23,10 @@ describe('chart selectors', () => { it('should return anomalyScoreSeries', () => { const data = [{ x0: 0, x: 10 }]; expect(getAnomalyScoreSeries(data)).toEqual({ - areaColor: 'rgba(231,102,76,0.1)', - color: 'none', + color: '#e7664c', data: [{ x0: 0, x: 10 }], - hideLegend: true, - hideTooltipValue: true, title: 'Anomaly score', - type: 'areaMaxHeight', + type: 'rectAnnotation', }); }); }); @@ -55,9 +52,7 @@ describe('chart selectors', () => { }; it('should produce correct series', () => { - expect( - getResponseTimeSeries({ apmTimeseries, anomalyTimeseries: undefined }) - ).toEqual([ + expect(getResponseTimeSeries({ apmTimeseries })).toEqual([ { color: '#6092c0', data: [ @@ -92,10 +87,7 @@ describe('chart selectors', () => { }); it('should return 3 series', () => { - expect( - getResponseTimeSeries({ apmTimeseries, anomalyTimeseries: undefined }) - .length - ).toBe(3); + expect(getResponseTimeSeries({ apmTimeseries }).length).toBe(3); }); }); @@ -144,7 +136,7 @@ describe('chart selectors', () => { { color: errorColor, data: [{ x: 0, y: 0 }], - legendValue: '0.0 tpm', + legendValue: '0 tpm', title: 'HTTP 5xx', type: 'linemark', }, diff --git a/x-pack/plugins/apm/public/selectors/chart_selectors.ts b/x-pack/plugins/apm/public/selectors/chart_selectors.ts index 8330df07c21eb0..37bd04e5d99800 100644 --- a/x-pack/plugins/apm/public/selectors/chart_selectors.ts +++ b/x-pack/plugins/apm/public/selectors/chart_selectors.ts @@ -17,10 +17,10 @@ import { RectCoordinate, TimeSeries, } from '../../typings/timeseries'; -import { IUrlParams } from '../context/UrlParamsContext/types'; +import { IUrlParams } from '../context/url_params_context/types'; import { getEmptySeries } from '../components/shared/charts/helper/get_empty_series'; import { httpStatusCodeToColor } from '../utils/httpStatusCodeToColor'; -import { asDecimal, asDuration, tpmUnit } from '../../common/utils/formatters'; +import { asDuration, asTransactionRate } from '../../common/utils/formatters'; export interface ITpmBucket { title: string; @@ -30,10 +30,16 @@ export interface ITpmBucket { color: string; } +export interface AnomalySeries { + scores: TimeSeries; + bounderies: TimeSeries; +} + export interface ITransactionChartData { tpmSeries?: ITpmBucket[]; responseTimeSeries?: TimeSeries[]; mlJobId: string | undefined; + anomalySeries?: AnomalySeries; } const INITIAL_DATA: Partial = { @@ -58,16 +64,35 @@ export function getTransactionCharts( transactionCharts.responseTimeSeries = getResponseTimeSeries({ apmTimeseries, + }); + + transactionCharts.anomalySeries = getResponseTimeAnnomalySeries({ anomalyTimeseries, }); } return transactionCharts; } +function getResponseTimeAnnomalySeries({ + anomalyTimeseries, +}: { + anomalyTimeseries: TimeSeriesAPIResponse['anomalyTimeseries']; +}): AnomalySeries | undefined { + if (anomalyTimeseries) { + return { + bounderies: getAnomalyBoundariesSeries( + anomalyTimeseries.anomalyBoundaries + ), + scores: getAnomalyScoreSeries(anomalyTimeseries.anomalyScore), + }; + } +} + export function getResponseTimeSeries({ apmTimeseries, - anomalyTimeseries, -}: TimeSeriesAPIResponse) { +}: { + apmTimeseries: TimeSeriesAPIResponse['apmTimeseries']; +}) { const { overallAvgDuration } = apmTimeseries; const { avg, p95, p99 } = apmTimeseries.responseTimes; @@ -107,16 +132,6 @@ export function getResponseTimeSeries({ }, ]; - if (anomalyTimeseries) { - // insert after Avg. series - series.splice( - 1, - 0, - getAnomalyBoundariesSeries(anomalyTimeseries.anomalyBoundaries), - getAnomalyScoreSeries(anomalyTimeseries.anomalyScore) - ); - } - return series; } @@ -125,12 +140,9 @@ export function getAnomalyScoreSeries(data: RectCoordinate[]) { title: i18n.translate('xpack.apm.transactions.chart.anomalyScoreLabel', { defaultMessage: 'Anomaly score', }), - hideLegend: true, - hideTooltipValue: true, data, - type: 'areaMaxHeight', - color: 'none', - areaColor: rgba(theme.euiColorVis9, 0.1), + type: 'rectAnnotation', + color: theme.euiColorVis9, }; } @@ -142,12 +154,9 @@ function getAnomalyBoundariesSeries(data: Coordinate[]) { defaultMessage: 'Anomaly Boundaries', } ), - hideLegend: true, - hideTooltipValue: true, data, type: 'area', - color: 'none', - areaColor: rgba(theme.euiColorVis1, 0.1), + color: rgba(theme.euiColorVis1, 0.5), }; } @@ -171,7 +180,7 @@ export function getTpmSeries( return { title: bucket.key, data: bucket.dataPoints, - legendValue: `${asDecimal(bucket.avg)} ${tpmUnit(transactionType || '')}`, + legendValue: asTransactionRate(bucket.avg), type: 'linemark', color: getColor(bucket.key), }; diff --git a/x-pack/plugins/apm/public/utils/testHelpers.tsx b/x-pack/plugins/apm/public/utils/testHelpers.tsx index 87dfeb95b63263..21c87c18be363b 100644 --- a/x-pack/plugins/apm/public/utils/testHelpers.tsx +++ b/x-pack/plugins/apm/public/utils/testHelpers.tsx @@ -24,8 +24,8 @@ import { PromiseReturnType } from '../../../observability/typings/common'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { APMConfig } from '../../server'; import { UIFilters } from '../../typings/ui_filters'; -import { MockApmPluginContextWrapper } from '../context/ApmPluginContext/MockApmPluginContext'; -import { UrlParamsProvider } from '../context/UrlParamsContext'; +import { MockApmPluginContextWrapper } from '../context/apm_plugin/mock_apm_plugin_context'; +import { UrlParamsProvider } from '../context/url_params_context/url_params_context'; const originalConsoleWarn = console.warn; // eslint-disable-line no-console /** diff --git a/x-pack/plugins/apm/scripts/create-functional-tests-archive/index.ts b/x-pack/plugins/apm/scripts/create-functional-tests-archive/index.ts index 4739a5b621972c..1bd3d8f2dffd9b 100644 --- a/x-pack/plugins/apm/scripts/create-functional-tests-archive/index.ts +++ b/x-pack/plugins/apm/scripts/create-functional-tests-archive/index.ts @@ -9,14 +9,12 @@ import { execSync } from 'child_process'; import moment from 'moment'; import path from 'path'; import fs from 'fs'; +import { getEsClient } from '../shared/get_es_client'; +import { parseIndexUrl } from '../shared/parse_index_url'; async function run() { const archiveName = 'apm_8.0.0'; - // include important APM data and ML data - const indices = - 'apm-*-transaction,apm-*-span,apm-*-error,apm-*-metric,.ml-anomalies*,.ml-config'; - const esUrl = argv['es-url'] as string | undefined; if (!esUrl) { @@ -30,52 +28,94 @@ async function run() { const gte = moment().subtract(1, 'hour').toISOString(); const lt = moment(gte).add(30, 'minutes').toISOString(); - // eslint-disable-next-line no-console - console.log(`Archiving from ${gte} to ${lt}...`); - - // APM data uses '@timestamp' (ECS), ML data uses 'timestamp' - - const rangeQueries = [ + // include important APM data and ML data + const should = [ { - range: { - '@timestamp': { - gte, - lt, - }, + index: 'apm-*-transaction,apm-*-span,apm-*-error,apm-*-metric', + bool: { + must_not: [ + { + term: { + 'service.name': 'elastic-co-frontend', + }, + }, + ], + filter: [ + { + terms: { + 'processor.event': ['transaction', 'span', 'error', 'metric'], + }, + }, + { + range: { + '@timestamp': { + gte, + lt, + }, + }, + }, + ], }, }, { - range: { - timestamp: { - gte, - lt, - }, + index: '.ml-anomalies-shared', + bool: { + filter: [ + { + term: { + _index: '.ml-anomalies-shared', + }, + }, + { + range: { + timestamp: { + gte, + lt, + }, + }, + }, + ], + }, + }, + { + index: '.ml-config', + bool: { + filter: [ + { + term: { + _index: '.ml-config', + }, + }, + { + term: { + groups: 'apm', + }, + }, + ], + }, + }, + { + index: '.kibana', + bool: { + filter: [ + { + term: { + type: 'ml-job', + }, + }, + ], }, }, ]; - // some of the data is timeless/content + // eslint-disable-next-line no-console + console.log(`Archiving from ${gte} to ${lt}...`); + + // APM data uses '@timestamp' (ECS), ML data uses 'timestamp' + const query = { bool: { - should: [ - ...rangeQueries, - { - bool: { - must_not: [ - { - exists: { - field: '@timestamp', - }, - }, - { - exists: { - field: 'timestamp', - }, - }, - ], - }, - }, - ], + should: should.map(({ bool }) => ({ bool })), minimum_should_match: 1, }, }; @@ -84,10 +124,44 @@ async function run() { const commonDir = path.join(root, 'x-pack/test/apm_api_integration/common'); const archivesDir = path.join(commonDir, 'fixtures/es_archiver'); + const options = parseIndexUrl(esUrl); + + const client = getEsClient({ + node: options.node, + }); + + const response = await client.search({ + body: { + query, + aggs: { + index: { + terms: { + field: '_index', + size: 1000, + }, + }, + }, + }, + index: should.map(({ index }) => index), + }); + + // only store data for indices that actually have docs + // for performance reasons, by looking at the search + // profile + const indicesWithDocs = + response.body.aggregations?.index.buckets.map( + (bucket) => bucket.key as string + ) ?? []; + // create the archive execSync( - `node scripts/es_archiver save ${archiveName} ${indices} --dir=${archivesDir} --kibana-url=${kibanaUrl} --es-url=${esUrl} --query='${JSON.stringify( + `node scripts/es_archiver save ${archiveName} ${indicesWithDocs + .filter((index) => !index.startsWith('.kibana')) + .concat('.kibana') + .join( + ',' + )} --dir=${archivesDir} --kibana-url=${kibanaUrl} --es-url=${esUrl} --query='${JSON.stringify( query )}'`, { diff --git a/x-pack/plugins/apm/server/lib/alerts/alerting_es_client.ts b/x-pack/plugins/apm/server/lib/alerts/alerting_es_client.ts new file mode 100644 index 00000000000000..161d5d03fcb400 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/alerts/alerting_es_client.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + ESSearchRequest, + ESSearchResponse, +} from '../../../../../typings/elasticsearch'; +import { AlertServices } from '../../../../alerts/server'; + +export function alertingEsClient( + services: AlertServices, + params: TParams +): Promise> { + return services.callCluster('search', { + ...params, + ignore_unavailable: true, + }); +} diff --git a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts index 464a737c50ea2a..124f61ed031fe3 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_error_count_alert_type.ts @@ -9,7 +9,6 @@ import { isEmpty } from 'lodash'; import { Observable } from 'rxjs'; import { take } from 'rxjs/operators'; import { APMConfig } from '../..'; -import { ESSearchResponse } from '../../../../../typings/elasticsearch'; import { AlertingPlugin } from '../../../../alerts/server'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { @@ -21,6 +20,7 @@ import { ProcessorEvent } from '../../../common/processor_event'; import { getEnvironmentUiFilterES } from '../helpers/convert_ui_filters/get_environment_ui_filter_es'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; +import { alertingEsClient } from './alerting_es_client'; interface RegisterAlertParams { alerts: AlertingPlugin['setup']; @@ -110,11 +110,7 @@ export function registerErrorCountAlertType({ }, }; - const response: ESSearchResponse< - unknown, - typeof searchParams - > = await services.callCluster('search', searchParams); - + const response = await alertingEsClient(services, searchParams); const errorCount = response.hits.total.value; if (errorCount > alertParams.threshold) { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts index 602ee99970f8ae..cad5f5f8b9b567 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_duration_alert_type.ts @@ -8,7 +8,6 @@ import { schema } from '@kbn/config-schema'; import { Observable } from 'rxjs'; import { take } from 'rxjs/operators'; import { APMConfig } from '../..'; -import { ESSearchResponse } from '../../../../../typings/elasticsearch'; import { AlertingPlugin } from '../../../../alerts/server'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { @@ -23,6 +22,7 @@ import { getDurationFormatter } from '../../../common/utils/formatters'; import { getEnvironmentUiFilterES } from '../helpers/convert_ui_filters/get_environment_ui_filter_es'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; +import { alertingEsClient } from './alerting_es_client'; interface RegisterAlertParams { alerts: AlertingPlugin['setup']; @@ -120,10 +120,7 @@ export function registerTransactionDurationAlertType({ }, }; - const response: ESSearchResponse< - unknown, - typeof searchParams - > = await services.callCluster('search', searchParams); + const response = await alertingEsClient(services, searchParams); if (!response.aggregations) { return; diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.test.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.test.ts index 7c13f2a17b255b..6b4beb6ab787a9 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.test.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.test.ts @@ -78,7 +78,7 @@ describe('Transaction error rate alert', () => { }, }, aggregations: { - erroneous_transactions: { + failed_transactions: { doc_count: 2, }, services: { @@ -183,7 +183,7 @@ describe('Transaction error rate alert', () => { }, }, aggregations: { - erroneous_transactions: { + failed_transactions: { doc_count: 2, }, services: { @@ -257,7 +257,7 @@ describe('Transaction error rate alert', () => { }, }, aggregations: { - erroneous_transactions: { + failed_transactions: { doc_count: 2, }, services: { diff --git a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts index 0506e1b4c3aed6..2753b378754f82 100644 --- a/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts +++ b/x-pack/plugins/apm/server/lib/alerts/register_transaction_error_rate_alert_type.ts @@ -9,7 +9,6 @@ import { isEmpty } from 'lodash'; import { Observable } from 'rxjs'; import { take } from 'rxjs/operators'; import { APMConfig } from '../..'; -import { ESSearchResponse } from '../../../../../typings/elasticsearch'; import { AlertingPlugin } from '../../../../alerts/server'; import { AlertType, ALERT_TYPES_CONFIG } from '../../../common/alert_types'; import { @@ -25,6 +24,7 @@ import { asDecimalOrInteger } from '../../../common/utils/formatters'; import { getEnvironmentUiFilterES } from '../helpers/convert_ui_filters/get_environment_ui_filter_es'; import { getApmIndices } from '../settings/apm_indices/get_apm_indices'; import { apmActionVariables } from './action_variables'; +import { alertingEsClient } from './alerting_es_client'; interface RegisterAlertParams { alerts: AlertingPlugin['setup']; @@ -106,7 +106,7 @@ export function registerTransactionErrorRateAlertType({ }, }, aggs: { - erroneous_transactions: { + failed_transactions: { filter: { term: { [EVENT_OUTCOME]: EventOutcome.failure } }, }, services: { @@ -132,20 +132,16 @@ export function registerTransactionErrorRateAlertType({ }, }; - const response: ESSearchResponse< - unknown, - typeof searchParams - > = await services.callCluster('search', searchParams); - + const response = await alertingEsClient(services, searchParams); if (!response.aggregations) { return; } - const errornousTransactionsCount = - response.aggregations.erroneous_transactions.doc_count; + const failedTransactionCount = + response.aggregations.failed_transactions.doc_count; const totalTransactionCount = response.hits.total.value; const transactionErrorRate = - (errornousTransactionsCount / totalTransactionCount) * 100; + (failedTransactionCount / totalTransactionCount) * 100; if (transactionErrorRate > alertParams.threshold) { function scheduleAction({ diff --git a/x-pack/plugins/apm/server/lib/errors/get_error_group.ts b/x-pack/plugins/apm/server/lib/errors/get_error_group.ts deleted file mode 100644 index 965cc28952b7ab..00000000000000 --- a/x-pack/plugins/apm/server/lib/errors/get_error_group.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { - ERROR_GROUP_ID, - SERVICE_NAME, - TRANSACTION_SAMPLED, -} from '../../../common/elasticsearch_fieldnames'; -import { ProcessorEvent } from '../../../common/processor_event'; -import { rangeFilter } from '../../../common/utils/range_filter'; -import { Setup, SetupTimeRange } from '../helpers/setup_request'; -import { getTransaction } from '../transactions/get_transaction'; - -// TODO: rename from "getErrorGroup" to "getErrorGroupSample" (since a single error is returned, not an errorGroup) -export async function getErrorGroup({ - serviceName, - groupId, - setup, -}: { - serviceName: string; - groupId: string; - setup: Setup & SetupTimeRange; -}) { - const { start, end, esFilter, apmEventClient } = setup; - - const params = { - apm: { - events: [ProcessorEvent.error as const], - }, - body: { - size: 1, - query: { - bool: { - filter: [ - { term: { [SERVICE_NAME]: serviceName } }, - { term: { [ERROR_GROUP_ID]: groupId } }, - { range: rangeFilter(start, end) }, - ...esFilter, - ], - should: [{ term: { [TRANSACTION_SAMPLED]: true } }], - }, - }, - sort: [ - { _score: 'desc' }, // sort by _score first to ensure that errors with transaction.sampled:true ends up on top - { '@timestamp': { order: 'desc' } }, // sort by timestamp to get the most recent error - ], - }, - }; - - const resp = await apmEventClient.search(params); - const error = resp.hits.hits[0]?._source; - const transactionId = error?.transaction?.id; - const traceId = error?.trace?.id; - - let transaction; - if (transactionId && traceId) { - transaction = await getTransaction({ transactionId, traceId, setup }); - } - - return { - transaction, - error, - occurrencesCount: resp.hits.total.value, - }; -} diff --git a/x-pack/plugins/apm/server/lib/errors/get_error_group_sample.ts b/x-pack/plugins/apm/server/lib/errors/get_error_group_sample.ts new file mode 100644 index 00000000000000..ff09855e63a8fc --- /dev/null +++ b/x-pack/plugins/apm/server/lib/errors/get_error_group_sample.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + ERROR_GROUP_ID, + SERVICE_NAME, + TRANSACTION_SAMPLED, +} from '../../../common/elasticsearch_fieldnames'; +import { ProcessorEvent } from '../../../common/processor_event'; +import { rangeFilter } from '../../../common/utils/range_filter'; +import { Setup, SetupTimeRange } from '../helpers/setup_request'; +import { getTransaction } from '../transactions/get_transaction'; + +export async function getErrorGroupSample({ + serviceName, + groupId, + setup, +}: { + serviceName: string; + groupId: string; + setup: Setup & SetupTimeRange; +}) { + const { start, end, esFilter, apmEventClient } = setup; + + const params = { + apm: { + events: [ProcessorEvent.error as const], + }, + body: { + size: 1, + query: { + bool: { + filter: [ + { term: { [SERVICE_NAME]: serviceName } }, + { term: { [ERROR_GROUP_ID]: groupId } }, + { range: rangeFilter(start, end) }, + ...esFilter, + ], + should: [{ term: { [TRANSACTION_SAMPLED]: true } }], + }, + }, + sort: [ + { _score: 'desc' }, // sort by _score first to ensure that errors with transaction.sampled:true ends up on top + { '@timestamp': { order: 'desc' } }, // sort by timestamp to get the most recent error + ], + }, + }; + + const resp = await apmEventClient.search(params); + const error = resp.hits.hits[0]?._source; + const transactionId = error?.transaction?.id; + const traceId = error?.trace?.id; + + let transaction; + if (transactionId && traceId) { + transaction = await getTransaction({ transactionId, traceId, setup }); + } + + return { + transaction, + error, + occurrencesCount: resp.hits.total.value, + }; +} diff --git a/x-pack/plugins/apm/server/lib/errors/queries.test.ts b/x-pack/plugins/apm/server/lib/errors/queries.test.ts index fec59393726bf6..92f0abcfb77e77 100644 --- a/x-pack/plugins/apm/server/lib/errors/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/errors/queries.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { getErrorGroup } from './get_error_group'; +import { getErrorGroupSample } from './get_error_group_sample'; import { getErrorGroups } from './get_error_groups'; import { SearchParamsMock, @@ -20,7 +20,7 @@ describe('error queries', () => { it('fetches a single error group', async () => { mock = await inspectSearchParams((setup) => - getErrorGroup({ + getErrorGroupSample({ groupId: 'groupId', serviceName: 'serviceName', setup, diff --git a/x-pack/plugins/apm/server/lib/helpers/create_es_client/create_apm_event_client/index.ts b/x-pack/plugins/apm/server/lib/helpers/create_es_client/create_apm_event_client/index.ts index 870997efb77dee..b7c38068eb93e6 100644 --- a/x-pack/plugins/apm/server/lib/helpers/create_es_client/create_apm_event_client/index.ts +++ b/x-pack/plugins/apm/server/lib/helpers/create_es_client/create_apm_event_client/index.ts @@ -87,6 +87,7 @@ export function createApmEventClient({ params: { ...withPossibleLegacyDataFilter, ignore_throttled: !includeFrozen, + ignore_unavailable: true, }, request, debug, diff --git a/x-pack/plugins/apm/server/lib/helpers/setup_request.test.ts b/x-pack/plugins/apm/server/lib/helpers/setup_request.test.ts index b7c9b178c7cd4f..f2d291cd053bb2 100644 --- a/x-pack/plugins/apm/server/lib/helpers/setup_request.test.ts +++ b/x-pack/plugins/apm/server/lib/helpers/setup_request.test.ts @@ -120,6 +120,7 @@ describe('setupRequest', () => { }, }, }, + ignore_unavailable: true, ignore_throttled: true, }); }); diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/default.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/default.ts index fbcbc9f12791fa..71bc1018b619b2 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/default.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/default.ts @@ -13,8 +13,8 @@ export async function getDefaultMetricsCharts( serviceName: string ) { const charts = await Promise.all([ - getCPUChartData(setup, serviceName), - getMemoryChartData(setup, serviceName), + getCPUChartData({ setup, serviceName }), + getMemoryChartData({ setup, serviceName }), ]); return { charts }; diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_rate_chart.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_rate_chart.ts index 7cedeb828e3b73..8e68c229c555c2 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_rate_chart.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_rate_chart.ts @@ -30,11 +30,15 @@ const chartBase: ChartBase = { series, }; -const getGcRateChart = ( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) => { +function getGcRateChart({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { return fetchAndTransformGcMetrics({ setup, serviceName, @@ -42,6 +46,6 @@ const getGcRateChart = ( chartBase, fieldName: METRIC_JAVA_GC_COUNT, }); -}; +} export { getGcRateChart }; diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_time_chart.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_time_chart.ts index f21d3d8e7c0565..e7a83e71a22e93 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_time_chart.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/gc/get_gc_time_chart.ts @@ -30,11 +30,15 @@ const chartBase: ChartBase = { series, }; -const getGcTimeChart = ( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) => { +function getGcTimeChart({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { return fetchAndTransformGcMetrics({ setup, serviceName, @@ -42,6 +46,6 @@ const getGcTimeChart = ( chartBase, fieldName: METRIC_JAVA_GC_TIME, }); -}; +} export { getGcTimeChart }; diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/heap_memory/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/heap_memory/index.ts index eb79897f9f0558..4f087594acc218 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/heap_memory/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/heap_memory/index.ts @@ -50,11 +50,15 @@ const chartBase: ChartBase = { series, }; -export async function getHeapMemoryChart( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getHeapMemoryChart({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { return fetchAndTransformMetrics({ setup, serviceName, diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/index.ts index d4084701f0f49a..4a1f3f572b3a5e 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/index.ts @@ -13,19 +13,23 @@ import { getMemoryChartData } from '../shared/memory'; import { getGcRateChart } from './gc/get_gc_rate_chart'; import { getGcTimeChart } from './gc/get_gc_time_chart'; -export async function getJavaMetricsCharts( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getJavaMetricsCharts({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { const charts = await Promise.all([ - getCPUChartData(setup, serviceName, serviceNodeName), - getMemoryChartData(setup, serviceName, serviceNodeName), - getHeapMemoryChart(setup, serviceName, serviceNodeName), - getNonHeapMemoryChart(setup, serviceName, serviceNodeName), - getThreadCountChart(setup, serviceName, serviceNodeName), - getGcRateChart(setup, serviceName, serviceNodeName), - getGcTimeChart(setup, serviceName, serviceNodeName), + getCPUChartData({ setup, serviceName, serviceNodeName }), + getMemoryChartData({ setup, serviceName, serviceNodeName }), + getHeapMemoryChart({ setup, serviceName, serviceNodeName }), + getNonHeapMemoryChart({ setup, serviceName, serviceNodeName }), + getThreadCountChart({ setup, serviceName, serviceNodeName }), + getGcRateChart({ setup, serviceName, serviceNodeName }), + getGcTimeChart({ setup, serviceName, serviceNodeName }), ]); return { charts }; diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/non_heap_memory/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/non_heap_memory/index.ts index 50cc449da3c159..dc2684f707d17d 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/non_heap_memory/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/non_heap_memory/index.ts @@ -47,11 +47,15 @@ const chartBase: ChartBase = { series, }; -export async function getNonHeapMemoryChart( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getNonHeapMemoryChart({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { return fetchAndTransformMetrics({ setup, serviceName, diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/thread_count/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/thread_count/index.ts index 0062f0a423970c..b42ab61f5c7666 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/java/thread_count/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/java/thread_count/index.ts @@ -39,11 +39,15 @@ const chartBase: ChartBase = { series, }; -export async function getThreadCountChart( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getThreadCountChart({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { return fetchAndTransformMetrics({ setup, serviceName, diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/cpu/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/cpu/index.ts index ca642aa12fff1d..83311caf995169 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/cpu/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/cpu/index.ts @@ -51,11 +51,15 @@ const chartBase: ChartBase = { series, }; -export async function getCPUChartData( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getCPUChartData({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { const metricsChart = await fetchAndTransformMetrics({ setup, serviceName, diff --git a/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/memory/index.ts b/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/memory/index.ts index e6ee47cc815efd..8fd234903d58e2 100644 --- a/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/memory/index.ts +++ b/x-pack/plugins/apm/server/lib/metrics/by_agent/shared/memory/index.ts @@ -68,11 +68,15 @@ export const percentCgroupMemoryUsedScript = { `, }; -export async function getMemoryChartData( - setup: Setup & SetupTimeRange, - serviceName: string, - serviceNodeName?: string -) { +export async function getMemoryChartData({ + setup, + serviceName, + serviceNodeName, +}: { + setup: Setup & SetupTimeRange; + serviceName: string; + serviceNodeName?: string; +}) { const cgroupResponse = await fetchAndTransformMetrics({ setup, serviceName, diff --git a/x-pack/plugins/apm/server/lib/metrics/get_metrics_chart_data_by_agent.ts b/x-pack/plugins/apm/server/lib/metrics/get_metrics_chart_data_by_agent.ts index 72cd65deebff63..1fc510b77c8561 100644 --- a/x-pack/plugins/apm/server/lib/metrics/get_metrics_chart_data_by_agent.ts +++ b/x-pack/plugins/apm/server/lib/metrics/get_metrics_chart_data_by_agent.ts @@ -25,7 +25,7 @@ export async function getMetricsChartDataByAgent({ }): Promise { switch (agentName) { case 'java': { - return getJavaMetricsCharts(setup, serviceName, serviceNodeName); + return getJavaMetricsCharts({ setup, serviceName, serviceNodeName }); } default: { diff --git a/x-pack/plugins/apm/server/lib/metrics/queries.test.ts b/x-pack/plugins/apm/server/lib/metrics/queries.test.ts index fc24377ebf3901..0bf3d3daaad669 100644 --- a/x-pack/plugins/apm/server/lib/metrics/queries.test.ts +++ b/x-pack/plugins/apm/server/lib/metrics/queries.test.ts @@ -21,7 +21,7 @@ describe('metrics queries', () => { const createTests = (serviceNodeName?: string) => { it('fetches cpu chart data', async () => { mock = await inspectSearchParams((setup) => - getCPUChartData(setup, 'foo', serviceNodeName) + getCPUChartData({ setup, serviceName: 'foo', serviceNodeName }) ); expect(mock.params).toMatchSnapshot(); @@ -29,7 +29,7 @@ describe('metrics queries', () => { it('fetches memory chart data', async () => { mock = await inspectSearchParams((setup) => - getMemoryChartData(setup, 'foo', serviceNodeName) + getMemoryChartData({ setup, serviceName: 'foo', serviceNodeName }) ); expect(mock.params).toMatchSnapshot(); @@ -37,7 +37,7 @@ describe('metrics queries', () => { it('fetches heap memory chart data', async () => { mock = await inspectSearchParams((setup) => - getHeapMemoryChart(setup, 'foo', serviceNodeName) + getHeapMemoryChart({ setup, serviceName: 'foo', serviceNodeName }) ); expect(mock.params).toMatchSnapshot(); @@ -45,7 +45,7 @@ describe('metrics queries', () => { it('fetches non heap memory chart data', async () => { mock = await inspectSearchParams((setup) => - getNonHeapMemoryChart(setup, 'foo', serviceNodeName) + getNonHeapMemoryChart({ setup, serviceName: 'foo', serviceNodeName }) ); expect(mock.params).toMatchSnapshot(); @@ -53,7 +53,7 @@ describe('metrics queries', () => { it('fetches thread count chart data', async () => { mock = await inspectSearchParams((setup) => - getThreadCountChart(setup, 'foo', serviceNodeName) + getThreadCountChart({ setup, serviceName: 'foo', serviceNodeName }) ); expect(mock.params).toMatchSnapshot(); diff --git a/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups/merge_transaction_group_data.ts b/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups/merge_transaction_group_data.ts index f9266baddaf271..5f53bfa18c4688 100644 --- a/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups/merge_transaction_group_data.ts +++ b/x-pack/plugins/apm/server/lib/services/get_service_transaction_groups/merge_transaction_group_data.ts @@ -46,26 +46,26 @@ export function mergeTransactionGroupData({ const timeseriesBuckets = groupBucket?.timeseries.buckets ?? []; return timeseriesBuckets.reduce( - (prev, point) => { + (acc, point) => { return { - ...prev, + ...acc, latency: { - ...prev.latency, - timeseries: prev.latency.timeseries.concat({ + ...acc.latency, + timeseries: acc.latency.timeseries.concat({ x: point.key, y: point.avg_latency.value, }), }, throughput: { - ...prev.throughput, - timeseries: prev.throughput.timeseries.concat({ + ...acc.throughput, + timeseries: acc.throughput.timeseries.concat({ x: point.key, y: point.transaction_count.value / deltaAsMinutes, }), }, errorRate: { - ...prev.errorRate, - timeseries: prev.errorRate.timeseries.concat({ + ...acc.errorRate, + timeseries: acc.errorRate.timeseries.concat({ x: point.key, y: point.transaction_count.value > 0 diff --git a/x-pack/plugins/apm/server/lib/services/get_throughput.ts b/x-pack/plugins/apm/server/lib/services/get_throughput.ts new file mode 100644 index 00000000000000..0ac0ad17ef8fa1 --- /dev/null +++ b/x-pack/plugins/apm/server/lib/services/get_throughput.ts @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ESFilter } from '../../../../../typings/elasticsearch'; +import { PromiseReturnType } from '../../../../observability/typings/common'; +import { + SERVICE_NAME, + TRANSACTION_TYPE, +} from '../../../common/elasticsearch_fieldnames'; +import { rangeFilter } from '../../../common/utils/range_filter'; +import { + getDocumentTypeFilterForAggregatedTransactions, + getProcessorEventForAggregatedTransactions, +} from '../helpers/aggregated_transactions'; +import { getBucketSize } from '../helpers/get_bucket_size'; +import { Setup, SetupTimeRange } from '../helpers/setup_request'; + +interface Options { + searchAggregatedTransactions: boolean; + serviceName: string; + setup: Setup & SetupTimeRange; + transactionType: string; +} + +type ESResponse = PromiseReturnType; + +function transform(response: ESResponse) { + const buckets = response.aggregations?.throughput?.buckets ?? []; + return buckets.map(({ key: x, doc_count: y }) => ({ x, y })); +} + +async function fetcher({ + searchAggregatedTransactions, + serviceName, + setup, + transactionType, +}: Options) { + const { start, end, apmEventClient } = setup; + const { intervalString } = getBucketSize({ start, end }); + const filter: ESFilter[] = [ + { term: { [SERVICE_NAME]: serviceName } }, + { term: { [TRANSACTION_TYPE]: transactionType } }, + { range: rangeFilter(start, end) }, + ...getDocumentTypeFilterForAggregatedTransactions( + searchAggregatedTransactions + ), + ...setup.esFilter, + ]; + + const params = { + apm: { + events: [ + getProcessorEventForAggregatedTransactions( + searchAggregatedTransactions + ), + ], + }, + body: { + size: 0, + query: { bool: { filter } }, + aggs: { + throughput: { + date_histogram: { + field: '@timestamp', + fixed_interval: intervalString, + min_doc_count: 0, + extended_bounds: { min: start, max: end }, + }, + }, + }, + }, + }; + + return apmEventClient.search(params); +} + +export async function getThroughput(options: Options) { + return { + throughput: transform(await fetcher(options)), + }; +} diff --git a/x-pack/plugins/apm/server/lib/transaction_groups/get_transaction_sample_for_group.ts b/x-pack/plugins/apm/server/lib/transaction_groups/get_transaction_sample_for_group.ts deleted file mode 100644 index 7e1aad075fb161..00000000000000 --- a/x-pack/plugins/apm/server/lib/transaction_groups/get_transaction_sample_for_group.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { maybe } from '../../../common/utils/maybe'; -import { - SERVICE_NAME, - TRANSACTION_NAME, - TRANSACTION_SAMPLED, -} from '../../../common/elasticsearch_fieldnames'; -import { ProcessorEvent } from '../../../common/processor_event'; -import { rangeFilter } from '../../../common/utils/range_filter'; -import { Setup, SetupTimeRange } from '../helpers/setup_request'; - -export async function getTransactionSampleForGroup({ - serviceName, - transactionName, - setup, -}: { - serviceName: string; - transactionName: string; - setup: Setup & SetupTimeRange; -}) { - const { apmEventClient, start, end, esFilter } = setup; - - const filter = [ - { - range: rangeFilter(start, end), - }, - { - term: { - [SERVICE_NAME]: serviceName, - }, - }, - { - term: { - [TRANSACTION_NAME]: transactionName, - }, - }, - ...esFilter, - ]; - - const getSampledTransaction = async () => { - const response = await apmEventClient.search({ - terminateAfter: 1, - apm: { - events: [ProcessorEvent.transaction], - }, - body: { - size: 1, - query: { - bool: { - filter: [...filter, { term: { [TRANSACTION_SAMPLED]: true } }], - }, - }, - }, - }); - - return maybe(response.hits.hits[0]?._source); - }; - - const getUnsampledTransaction = async () => { - const response = await apmEventClient.search({ - terminateAfter: 1, - apm: { - events: [ProcessorEvent.transaction], - }, - body: { - size: 1, - query: { - bool: { - filter: [...filter, { term: { [TRANSACTION_SAMPLED]: false } }], - }, - }, - }, - }); - - return maybe(response.hits.hits[0]?._source); - }; - - const [sampledTransaction, unsampledTransaction] = await Promise.all([ - getSampledTransaction(), - getUnsampledTransaction(), - ]); - - return sampledTransaction || unsampledTransaction; -} diff --git a/x-pack/plugins/apm/server/routes/create_apm_api.ts b/x-pack/plugins/apm/server/routes/create_apm_api.ts index 019482dd444850..0e066a1959c495 100644 --- a/x-pack/plugins/apm/server/routes/create_apm_api.ts +++ b/x-pack/plugins/apm/server/routes/create_apm_api.ts @@ -22,7 +22,7 @@ import { serviceAnnotationsRoute, serviceAnnotationsCreateRoute, serviceErrorGroupsRoute, - serviceTransactionGroupsRoute, + serviceThroughputRoute, } from './services'; import { agentConfigurationRoute, @@ -41,20 +41,23 @@ import { } from './settings/apm_indices'; import { metricsChartsRoute } from './metrics'; import { serviceNodesRoute } from './service_nodes'; -import { tracesRoute, tracesByIdRoute } from './traces'; -import { transactionByTraceIdRoute } from './transaction'; +import { + tracesRoute, + tracesByIdRoute, + rootTransactionByTraceIdRoute, +} from './traces'; import { correlationsForSlowTransactionsRoute, correlationsForFailedTransactionsRoute, } from './correlations'; import { - transactionGroupsBreakdownRoute, - transactionGroupsChartsRoute, - transactionGroupsDistributionRoute, + transactionChartsBreakdownRoute, + transactionChartsRoute, + transactionChartsDistributionRoute, + transactionChartsErrorRateRoute, transactionGroupsRoute, - transactionSampleForGroupRoute, - transactionGroupsErrorRateRoute, -} from './transaction_groups'; + transactionGroupsOverviewRoute, +} from './transactions/transactions_routes'; import { errorGroupsLocalFiltersRoute, metricsLocalFiltersRoute, @@ -117,7 +120,7 @@ const createApmApi = () => { .add(serviceAnnotationsRoute) .add(serviceAnnotationsCreateRoute) .add(serviceErrorGroupsRoute) - .add(serviceTransactionGroupsRoute) + .add(serviceThroughputRoute) // Agent configuration .add(getSingleAgentConfigurationRoute) @@ -145,14 +148,15 @@ const createApmApi = () => { // Traces .add(tracesRoute) .add(tracesByIdRoute) + .add(rootTransactionByTraceIdRoute) - // Transaction groups - .add(transactionGroupsBreakdownRoute) - .add(transactionGroupsChartsRoute) - .add(transactionGroupsDistributionRoute) + // Transactions + .add(transactionChartsBreakdownRoute) + .add(transactionChartsRoute) + .add(transactionChartsDistributionRoute) + .add(transactionChartsErrorRateRoute) .add(transactionGroupsRoute) - .add(transactionSampleForGroupRoute) - .add(transactionGroupsErrorRateRoute) + .add(transactionGroupsOverviewRoute) // UI filters .add(errorGroupsLocalFiltersRoute) @@ -164,9 +168,6 @@ const createApmApi = () => { .add(serviceNodesLocalFiltersRoute) .add(uiFiltersEnvironmentsRoute) - // Transaction - .add(transactionByTraceIdRoute) - // Service map .add(serviceMapRoute) .add(serviceMapServiceNodeRoute) diff --git a/x-pack/plugins/apm/server/routes/errors.ts b/x-pack/plugins/apm/server/routes/errors.ts index 64864ec2258bae..c4bc70a92d9eed 100644 --- a/x-pack/plugins/apm/server/routes/errors.ts +++ b/x-pack/plugins/apm/server/routes/errors.ts @@ -7,7 +7,7 @@ import * as t from 'io-ts'; import { createRoute } from './create_route'; import { getErrorDistribution } from '../lib/errors/distribution/get_distribution'; -import { getErrorGroup } from '../lib/errors/get_error_group'; +import { getErrorGroupSample } from '../lib/errors/get_error_group_sample'; import { getErrorGroups } from '../lib/errors/get_error_groups'; import { setupRequest } from '../lib/helpers/setup_request'; import { uiFiltersRt, rangeRt } from './default_api_types'; @@ -56,7 +56,7 @@ export const errorGroupsRoute = createRoute({ handler: async ({ context, request }) => { const setup = await setupRequest(context, request); const { serviceName, groupId } = context.params.path; - return getErrorGroup({ serviceName, groupId, setup }); + return getErrorGroupSample({ serviceName, groupId, setup }); }, }); diff --git a/x-pack/plugins/apm/server/routes/services.ts b/x-pack/plugins/apm/server/routes/services.ts index 5e02fad2155ad9..a82f1b64d55379 100644 --- a/x-pack/plugins/apm/server/routes/services.ts +++ b/x-pack/plugins/apm/server/routes/services.ts @@ -19,7 +19,7 @@ import { dateAsStringRt } from '../../common/runtime_types/date_as_string_rt'; import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; import { getServiceErrorGroups } from '../lib/services/get_service_error_groups'; import { toNumberRt } from '../../common/runtime_types/to_number_rt'; -import { getServiceTransactionGroups } from '../lib/services/get_service_transaction_groups'; +import { getThroughput } from '../lib/services/get_throughput'; export const servicesRoute = createRoute({ endpoint: 'GET /api/apm/services', @@ -246,51 +246,32 @@ export const serviceErrorGroupsRoute = createRoute({ }, }); -export const serviceTransactionGroupsRoute = createRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/overview_transaction_groups', +export const serviceThroughputRoute = createRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/throughput', params: t.type({ - path: t.type({ serviceName: t.string }), + path: t.type({ + serviceName: t.string, + }), query: t.intersection([ - rangeRt, + t.type({ transactionType: t.string }), uiFiltersRt, - t.type({ - size: toNumberRt, - numBuckets: toNumberRt, - pageIndex: toNumberRt, - sortDirection: t.union([t.literal('asc'), t.literal('desc')]), - sortField: t.union([ - t.literal('latency'), - t.literal('throughput'), - t.literal('errorRate'), - t.literal('impact'), - ]), - }), + rangeRt, ]), }), - options: { - tags: ['access:apm'], - }, + options: { tags: ['access:apm'] }, handler: async ({ context, request }) => { const setup = await setupRequest(context, request); - + const { serviceName } = context.params.path; + const { transactionType } = context.params.query; const searchAggregatedTransactions = await getSearchAggregatedTransactions( setup ); - const { - path: { serviceName }, - query: { size, numBuckets, pageIndex, sortDirection, sortField }, - } = context.params; - - return getServiceTransactionGroups({ - setup, - serviceName, - pageIndex, + return getThroughput({ searchAggregatedTransactions, - size, - sortDirection, - sortField, - numBuckets, + serviceName, + setup, + transactionType, }); }, }); diff --git a/x-pack/plugins/apm/server/routes/settings/anomaly_detection.ts b/x-pack/plugins/apm/server/routes/settings/anomaly_detection.ts index e7405ad16a63eb..49708e4edb7323 100644 --- a/x-pack/plugins/apm/server/routes/settings/anomaly_detection.ts +++ b/x-pack/plugins/apm/server/routes/settings/anomaly_detection.ts @@ -19,7 +19,7 @@ import { notifyFeatureUsage } from '../../feature'; // get ML anomaly detection jobs for each environment export const anomalyDetectionJobsRoute = createRoute({ - endpoint: 'GET /api/apm/settings/anomaly-detection', + endpoint: 'GET /api/apm/settings/anomaly-detection/jobs', options: { tags: ['access:apm', 'access:ml:canGetJobs'], }, diff --git a/x-pack/plugins/apm/server/routes/traces.ts b/x-pack/plugins/apm/server/routes/traces.ts index 0c79d391e1fd70..373dc9b8b6ecd3 100644 --- a/x-pack/plugins/apm/server/routes/traces.ts +++ b/x-pack/plugins/apm/server/routes/traces.ts @@ -11,6 +11,7 @@ import { getTransactionGroupList } from '../lib/transaction_groups'; import { createRoute } from './create_route'; import { rangeRt, uiFiltersRt } from './default_api_types'; import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; +import { getRootTransactionByTraceId } from '../lib/transactions/get_transaction_by_trace'; export const tracesRoute = createRoute({ endpoint: 'GET /api/apm/traces', @@ -44,3 +45,18 @@ export const tracesByIdRoute = createRoute({ return getTrace(context.params.path.traceId, setup); }, }); + +export const rootTransactionByTraceIdRoute = createRoute({ + endpoint: 'GET /api/apm/traces/{traceId}/root_transaction', + params: t.type({ + path: t.type({ + traceId: t.string, + }), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const { traceId } = context.params.path; + const setup = await setupRequest(context, request); + return getRootTransactionByTraceId(traceId, setup); + }, +}); diff --git a/x-pack/plugins/apm/server/routes/transaction.ts b/x-pack/plugins/apm/server/routes/transaction.ts deleted file mode 100644 index 3294d2e9a82279..00000000000000 --- a/x-pack/plugins/apm/server/routes/transaction.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import * as t from 'io-ts'; -import { setupRequest } from '../lib/helpers/setup_request'; -import { getRootTransactionByTraceId } from '../lib/transactions/get_transaction_by_trace'; -import { createRoute } from './create_route'; - -export const transactionByTraceIdRoute = createRoute({ - endpoint: 'GET /api/apm/transaction/{traceId}', - params: t.type({ - path: t.type({ - traceId: t.string, - }), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const { traceId } = context.params.path; - const setup = await setupRequest(context, request); - return getRootTransactionByTraceId(traceId, setup); - }, -}); diff --git a/x-pack/plugins/apm/server/routes/transaction_groups.ts b/x-pack/plugins/apm/server/routes/transaction_groups.ts deleted file mode 100644 index 58c1ce3451a29f..00000000000000 --- a/x-pack/plugins/apm/server/routes/transaction_groups.ts +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import * as t from 'io-ts'; -import Boom from '@hapi/boom'; -import { setupRequest } from '../lib/helpers/setup_request'; -import { getTransactionCharts } from '../lib/transactions/charts'; -import { getTransactionDistribution } from '../lib/transactions/distribution'; -import { getTransactionBreakdown } from '../lib/transactions/breakdown'; -import { getTransactionGroupList } from '../lib/transaction_groups'; -import { createRoute } from './create_route'; -import { uiFiltersRt, rangeRt } from './default_api_types'; -import { getTransactionSampleForGroup } from '../lib/transaction_groups/get_transaction_sample_for_group'; -import { getSearchAggregatedTransactions } from '../lib/helpers/aggregated_transactions'; -import { getErrorRate } from '../lib/transaction_groups/get_error_rate'; - -export const transactionGroupsRoute = createRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_groups', - params: t.type({ - path: t.type({ - serviceName: t.string, - }), - query: t.intersection([ - t.type({ - transactionType: t.string, - }), - uiFiltersRt, - rangeRt, - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - const { serviceName } = context.params.path; - const { transactionType } = context.params.query; - - const searchAggregatedTransactions = await getSearchAggregatedTransactions( - setup - ); - - return getTransactionGroupList( - { - type: 'top_transactions', - serviceName, - transactionType, - searchAggregatedTransactions, - }, - setup - ); - }, -}); - -export const transactionGroupsChartsRoute = createRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_groups/charts', - params: t.type({ - path: t.type({ - serviceName: t.string, - }), - query: t.intersection([ - t.partial({ - transactionType: t.string, - transactionName: t.string, - }), - uiFiltersRt, - rangeRt, - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - const logger = context.logger; - const { serviceName } = context.params.path; - const { transactionType, transactionName } = context.params.query; - - if (!setup.uiFilters.environment) { - throw Boom.badRequest( - `environment is a required property of the ?uiFilters JSON for transaction_groups/charts.` - ); - } - - const searchAggregatedTransactions = await getSearchAggregatedTransactions( - setup - ); - - const options = { - serviceName, - transactionType, - transactionName, - setup, - searchAggregatedTransactions, - logger, - }; - - return getTransactionCharts(options); - }, -}); - -export const transactionGroupsDistributionRoute = createRoute({ - endpoint: - 'GET /api/apm/services/{serviceName}/transaction_groups/distribution', - params: t.type({ - path: t.type({ - serviceName: t.string, - }), - query: t.intersection([ - t.type({ - transactionType: t.string, - transactionName: t.string, - }), - t.partial({ - transactionId: t.string, - traceId: t.string, - }), - uiFiltersRt, - rangeRt, - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - const { serviceName } = context.params.path; - const { - transactionType, - transactionName, - transactionId = '', - traceId = '', - } = context.params.query; - - const searchAggregatedTransactions = await getSearchAggregatedTransactions( - setup - ); - - return getTransactionDistribution({ - serviceName, - transactionType, - transactionName, - transactionId, - traceId, - setup, - searchAggregatedTransactions, - }); - }, -}); - -export const transactionGroupsBreakdownRoute = createRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_groups/breakdown', - params: t.type({ - path: t.type({ - serviceName: t.string, - }), - query: t.intersection([ - t.type({ - transactionType: t.string, - }), - t.partial({ - transactionName: t.string, - }), - uiFiltersRt, - rangeRt, - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - const { serviceName } = context.params.path; - const { transactionName, transactionType } = context.params.query; - - return getTransactionBreakdown({ - serviceName, - transactionName, - transactionType, - setup, - }); - }, -}); - -export const transactionSampleForGroupRoute = createRoute({ - endpoint: `GET /api/apm/transaction_sample`, - params: t.type({ - query: t.intersection([ - uiFiltersRt, - rangeRt, - t.type({ serviceName: t.string, transactionName: t.string }), - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - - const { transactionName, serviceName } = context.params.query; - - return { - transaction: await getTransactionSampleForGroup({ - setup, - serviceName, - transactionName, - }), - }; - }, -}); - -export const transactionGroupsErrorRateRoute = createRoute({ - endpoint: 'GET /api/apm/services/{serviceName}/transaction_groups/error_rate', - params: t.type({ - path: t.type({ - serviceName: t.string, - }), - query: t.intersection([ - uiFiltersRt, - rangeRt, - t.partial({ - transactionType: t.string, - transactionName: t.string, - }), - ]), - }), - options: { tags: ['access:apm'] }, - handler: async ({ context, request }) => { - const setup = await setupRequest(context, request); - const { params } = context; - const { serviceName } = params.path; - const { transactionType, transactionName } = params.query; - - const searchAggregatedTransactions = await getSearchAggregatedTransactions( - setup - ); - - return getErrorRate({ - serviceName, - transactionType, - transactionName, - setup, - searchAggregatedTransactions, - }); - }, -}); diff --git a/x-pack/plugins/apm/server/routes/transactions/transactions_routes.ts b/x-pack/plugins/apm/server/routes/transactions/transactions_routes.ts new file mode 100644 index 00000000000000..11d247ccab84ff --- /dev/null +++ b/x-pack/plugins/apm/server/routes/transactions/transactions_routes.ts @@ -0,0 +1,276 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import Boom from '@hapi/boom'; +import * as t from 'io-ts'; +import { toNumberRt } from '../../../common/runtime_types/to_number_rt'; +import { getSearchAggregatedTransactions } from '../../lib/helpers/aggregated_transactions'; +import { setupRequest } from '../../lib/helpers/setup_request'; +import { getServiceTransactionGroups } from '../../lib/services/get_service_transaction_groups'; +import { getTransactionBreakdown } from '../../lib/transactions/breakdown'; +import { getTransactionCharts } from '../../lib/transactions/charts'; +import { getTransactionDistribution } from '../../lib/transactions/distribution'; +import { getTransactionGroupList } from '../../lib/transaction_groups'; +import { getErrorRate } from '../../lib/transaction_groups/get_error_rate'; +import { createRoute } from '../create_route'; +import { rangeRt, uiFiltersRt } from '../default_api_types'; + +/** + * Returns a list of transactions grouped by name + * //TODO: delete this once we moved away from the old table in the transaction overview page. It should be replaced by /transactions/groups/overview/ + */ +export const transactionGroupsRoute = createRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/transactions/groups', + params: t.type({ + path: t.type({ + serviceName: t.string, + }), + query: t.intersection([ + t.type({ + transactionType: t.string, + }), + uiFiltersRt, + rangeRt, + ]), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + const { serviceName } = context.params.path; + const { transactionType } = context.params.query; + + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + + return getTransactionGroupList( + { + type: 'top_transactions', + serviceName, + transactionType, + searchAggregatedTransactions, + }, + setup + ); + }, +}); + +export const transactionGroupsOverviewRoute = createRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/transactions/groups/overview', + params: t.type({ + path: t.type({ serviceName: t.string }), + query: t.intersection([ + rangeRt, + uiFiltersRt, + t.type({ + size: toNumberRt, + numBuckets: toNumberRt, + pageIndex: toNumberRt, + sortDirection: t.union([t.literal('asc'), t.literal('desc')]), + sortField: t.union([ + t.literal('latency'), + t.literal('throughput'), + t.literal('errorRate'), + t.literal('impact'), + ]), + }), + ]), + }), + options: { + tags: ['access:apm'], + }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + + const { + path: { serviceName }, + query: { size, numBuckets, pageIndex, sortDirection, sortField }, + } = context.params; + + return getServiceTransactionGroups({ + setup, + serviceName, + pageIndex, + searchAggregatedTransactions, + size, + sortDirection, + sortField, + numBuckets, + }); + }, +}); + +/** + * Returns timeseries for latency, throughput and anomalies + * TODO: break it into 3 new APIs: + * - Latency: /transactions/charts/latency + * - Throughput: /transactions/charts/throughput + * - anomalies: /transactions/charts/anomaly + */ +export const transactionChartsRoute = createRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/transactions/charts', + params: t.type({ + path: t.type({ + serviceName: t.string, + }), + query: t.intersection([ + t.partial({ + transactionType: t.string, + transactionName: t.string, + }), + uiFiltersRt, + rangeRt, + ]), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + const logger = context.logger; + const { serviceName } = context.params.path; + const { transactionType, transactionName } = context.params.query; + + if (!setup.uiFilters.environment) { + throw Boom.badRequest( + `environment is a required property of the ?uiFilters JSON for transaction_groups/charts.` + ); + } + + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + + const options = { + serviceName, + transactionType, + transactionName, + setup, + searchAggregatedTransactions, + logger, + }; + + return getTransactionCharts(options); + }, +}); + +export const transactionChartsDistributionRoute = createRoute({ + endpoint: + 'GET /api/apm/services/{serviceName}/transactions/charts/distribution', + params: t.type({ + path: t.type({ + serviceName: t.string, + }), + query: t.intersection([ + t.type({ + transactionType: t.string, + transactionName: t.string, + }), + t.partial({ + transactionId: t.string, + traceId: t.string, + }), + uiFiltersRt, + rangeRt, + ]), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + const { serviceName } = context.params.path; + const { + transactionType, + transactionName, + transactionId = '', + traceId = '', + } = context.params.query; + + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + + return getTransactionDistribution({ + serviceName, + transactionType, + transactionName, + transactionId, + traceId, + setup, + searchAggregatedTransactions, + }); + }, +}); + +export const transactionChartsBreakdownRoute = createRoute({ + endpoint: 'GET /api/apm/services/{serviceName}/transaction/charts/breakdown', + params: t.type({ + path: t.type({ + serviceName: t.string, + }), + query: t.intersection([ + t.type({ + transactionType: t.string, + }), + t.partial({ + transactionName: t.string, + }), + uiFiltersRt, + rangeRt, + ]), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + const { serviceName } = context.params.path; + const { transactionName, transactionType } = context.params.query; + + return getTransactionBreakdown({ + serviceName, + transactionName, + transactionType, + setup, + }); + }, +}); + +export const transactionChartsErrorRateRoute = createRoute({ + endpoint: + 'GET /api/apm/services/{serviceName}/transactions/charts/error_rate', + params: t.type({ + path: t.type({ + serviceName: t.string, + }), + query: t.intersection([ + uiFiltersRt, + rangeRt, + t.partial({ + transactionType: t.string, + transactionName: t.string, + }), + ]), + }), + options: { tags: ['access:apm'] }, + handler: async ({ context, request }) => { + const setup = await setupRequest(context, request); + const { params } = context; + const { serviceName } = params.path; + const { transactionType, transactionName } = params.query; + + const searchAggregatedTransactions = await getSearchAggregatedTransactions( + setup + ); + + return getErrorRate({ + serviceName, + transactionType, + transactionName, + setup, + searchAggregatedTransactions, + }); + }, +}); diff --git a/x-pack/plugins/apm/server/saved_objects/apm_indices.ts b/x-pack/plugins/apm/server/saved_objects/apm_indices.ts index 1137abdb474acc..c226c59a542467 100644 --- a/x-pack/plugins/apm/server/saved_objects/apm_indices.ts +++ b/x-pack/plugins/apm/server/saved_objects/apm_indices.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { SavedObjectsType } from 'src/core/server'; +import { i18n } from '@kbn/i18n'; export const apmIndices: SavedObjectsType = { name: 'apm-indices', @@ -32,4 +33,12 @@ export const apmIndices: SavedObjectsType = { }, }, }, + management: { + importableAndExportable: true, + icon: 'apmApp', + getTitle: () => + i18n.translate('xpack.apm.apmSettings.index', { + defaultMessage: 'APM Settings - Index', + }), + }, }; diff --git a/x-pack/plugins/audit_trail/jest.config.js b/x-pack/plugins/audit_trail/jest.config.js new file mode 100644 index 00000000000000..31de78fc6bbd9c --- /dev/null +++ b/x-pack/plugins/audit_trail/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/audit_trail'], +}; diff --git a/x-pack/plugins/beats_management/jest.config.js b/x-pack/plugins/beats_management/jest.config.js new file mode 100644 index 00000000000000..8ffbb97b1656d9 --- /dev/null +++ b/x-pack/plugins/beats_management/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/beats_management'], +}; diff --git a/x-pack/plugins/beats_management/public/components/inputs/code_editor.tsx b/x-pack/plugins/beats_management/public/components/inputs/code_editor.tsx index 46ea90a9c1b301..78eecf79848659 100644 --- a/x-pack/plugins/beats_management/public/components/inputs/code_editor.tsx +++ b/x-pack/plugins/beats_management/public/components/inputs/code_editor.tsx @@ -68,6 +68,7 @@ class CodeEditor extends Component< public render() { const { + name, id, label, isReadOnly, diff --git a/x-pack/plugins/beats_management/public/components/inputs/input.tsx b/x-pack/plugins/beats_management/public/components/inputs/input.tsx index 29cdcfccfc756c..17f2f95070c59c 100644 --- a/x-pack/plugins/beats_management/public/components/inputs/input.tsx +++ b/x-pack/plugins/beats_management/public/components/inputs/input.tsx @@ -71,6 +71,7 @@ class FieldText extends Component< public render() { const { + name, id, required, label, diff --git a/x-pack/plugins/beats_management/public/components/inputs/multi_input.tsx b/x-pack/plugins/beats_management/public/components/inputs/multi_input.tsx index 16bcf1b3b9a06b..ed0d67bb221495 100644 --- a/x-pack/plugins/beats_management/public/components/inputs/multi_input.tsx +++ b/x-pack/plugins/beats_management/public/components/inputs/multi_input.tsx @@ -73,6 +73,7 @@ class MultiFieldText extends Component< public render() { const { + name, id, required, label, diff --git a/x-pack/plugins/beats_management/public/components/inputs/password_input.tsx b/x-pack/plugins/beats_management/public/components/inputs/password_input.tsx index 30f4cb85fb58c1..edb8cf6ab3abc4 100644 --- a/x-pack/plugins/beats_management/public/components/inputs/password_input.tsx +++ b/x-pack/plugins/beats_management/public/components/inputs/password_input.tsx @@ -67,6 +67,7 @@ class FieldPassword extends Component< public render() { const { + name, id, required, label, diff --git a/x-pack/plugins/canvas/README.md b/x-pack/plugins/canvas/README.md index 7bd9a1994ba7ed..f77585b5b062c0 100644 --- a/x-pack/plugins/canvas/README.md +++ b/x-pack/plugins/canvas/README.md @@ -149,7 +149,7 @@ yarn start #### Adding a server-side function -> Server side functions may be deprecated in a later version of Kibana as they require using an API marked _legacy_ +> Server side functions may be deprecated in a later version of Kibana Now, let's add a function which runs on the server. @@ -206,9 +206,7 @@ And then in our setup method, register it with the Expressions plugin: ```typescript setup(core: CoreSetup, plugins: CanvasExamplePluginsSetup) { - // .register requires serverFunctions and types, so pass an empty array - // if you don't have any custom types to register - plugins.expressions.__LEGACY.register({ serverFunctions, types: [] }); + serverFunctions.forEach((f) => plugins.expressions.registerFunction(f)); } ``` diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/location.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/location.ts index 5c0ca74f5225ac..4eed89b95132a3 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/location.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/location.ts @@ -28,7 +28,7 @@ export function location(): ExpressionFunctionDefinition<'location', null, {}, P help, fn: () => { return new Promise((resolve) => { - function createLocation(geoposition: Position) { + function createLocation(geoposition: GeolocationPosition) { const { latitude, longitude } = geoposition.coords; return resolve({ type: 'datatable', diff --git a/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts b/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts index 765ff507282289..380d07972ca4dc 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts +++ b/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts @@ -83,6 +83,7 @@ export function savedLens(): ExpressionFunctionDefinition< title: args.title === null ? undefined : args.title, disableTriggers: true, palette: args.palette, + renderMode: 'noInteractivity', }, embeddableType: EmbeddableTypes.lens, generatedAt: Date.now(), diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/__stories__/render.tsx b/x-pack/plugins/canvas/canvas_plugin_src/renderers/__stories__/render.tsx index 647c63c2c10427..54702f26548393 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/__stories__/render.tsx +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/__stories__/render.tsx @@ -11,6 +11,7 @@ export const defaultHandlers: RendererHandlers = { destroy: () => action('destroy'), getElementId: () => 'element-id', getFilter: () => 'filter', + getRenderMode: () => 'display', onComplete: (fn) => undefined, onEmbeddableDestroyed: action('onEmbeddableDestroyed'), onEmbeddableInputChange: action('onEmbeddableInputChange'), diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot b/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot index 3fba41069253e7..59771973f2aa59 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot @@ -23,11 +23,6 @@ exports[`Storyshots renderers/TimeFilter default 1`] = `
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
`; diff --git a/x-pack/plugins/canvas/jest.config.js b/x-pack/plugins/canvas/jest.config.js new file mode 100644 index 00000000000000..d010fb8c150bc6 --- /dev/null +++ b/x-pack/plugins/canvas/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/canvas'], +}; diff --git a/x-pack/plugins/canvas/public/application.tsx b/x-pack/plugins/canvas/public/application.tsx index 9fcd6ccc8ae88d..7d65a99b1dd453 100644 --- a/x-pack/plugins/canvas/public/application.tsx +++ b/x-pack/plugins/canvas/public/application.tsx @@ -137,7 +137,7 @@ export const initializeCanvas = async ( }); if (setupPlugins.usageCollection) { - initStatsReporter(setupPlugins.usageCollection.reportUiStats); + initStatsReporter(setupPlugins.usageCollection.reportUiCounter); } return canvasStore; diff --git a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot index 05339ca558562b..8194d923f34a5d 100644 --- a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot @@ -18,7 +18,7 @@ exports[`Storyshots components/Assets/Asset airplane 1`] = ` className="canvasAsset__thumb canvasCheckered" >
Asset thumbnail
Asset thumbnail
Asset thumbnail
Asset thumbnail
- -
-
- - Select an option: - , is selected - -
-
-
+ />
`; exports[`Storyshots components/FontPicker with value 1`] = `
- -
-
- - Select an option: -
- American Typewriter -
- , is selected -
- -
- - -
-
-
-
+ />
`; diff --git a/x-pack/plugins/canvas/public/components/palette_picker/__stories__/__snapshots__/palette_picker.stories.storyshot b/x-pack/plugins/canvas/public/components/palette_picker/__stories__/__snapshots__/palette_picker.stories.storyshot index d5990d3dbfd537..680f792f4d1b96 100644 --- a/x-pack/plugins/canvas/public/components/palette_picker/__stories__/__snapshots__/palette_picker.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/palette_picker/__stories__/__snapshots__/palette_picker.stories.storyshot @@ -9,7 +9,7 @@ exports[`Storyshots components/Color/PalettePicker clearable 1`] = ` } >
- -
-
- - Select an option: None, is selected - - -
- - -
-
-
-
+ />
`; @@ -75,7 +32,7 @@ exports[`Storyshots components/Color/PalettePicker default 1`] = ` } >
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
`; @@ -157,7 +55,7 @@ exports[`Storyshots components/Color/PalettePicker interactive 1`] = ` } >
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
`; diff --git a/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot b/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot index 1d292c94436e3f..548c441680c55a 100644 --- a/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot @@ -3,11 +3,6 @@ exports[`Storyshots components/Shapes/ShapePickerPopover default 1`] = `
- -
-
- - Select an option: - , is selected - -
-
-
+ />
- -
-
- - Select an option: - , is selected - -
-
-
+ />
- -
-
- - Select an option: -
- - - - - - Boolean - -
- , is selected -
- -
- - -
-
-
-
+ />
@@ -442,7 +363,7 @@ Array [ className="euiFormRow__fieldWrapper" >
- -
-
- - Select an option: -
- - - - - - Number - -
- , is selected -
- -
- - -
-
-
-
+ />
@@ -746,7 +588,7 @@ Array [ className="euiFormRow__fieldWrapper" >
- -
-
- - Select an option: -
- - - - - - String - -
- , is selected -
- -
- - -
-
-
-
+ />
@@ -1026,7 +789,7 @@ Array [ className="euiFormRow__fieldWrapper" >
- -
-
- - Select an option: -
- - - - - - String - -
- , is selected -
- -
- - -
-
-
-
+ />
diff --git a/x-pack/plugins/canvas/public/components/workpad_header/edit_menu/__stories__/__snapshots__/edit_menu.stories.storyshot b/x-pack/plugins/canvas/public/components/workpad_header/edit_menu/__stories__/__snapshots__/edit_menu.stories.storyshot index 93f4db664d1dbe..a242747f743624 100644 --- a/x-pack/plugins/canvas/public/components/workpad_header/edit_menu/__stories__/__snapshots__/edit_menu.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/workpad_header/edit_menu/__stories__/__snapshots__/edit_menu.stories.storyshot @@ -3,11 +3,6 @@ exports[`Storyshots components/WorkpadHeader/EditMenu 2 elements selected 1`] = `
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
@@ -436,11 +375,6 @@ exports[`Storyshots arguments/ContainerStyle extended 1`] = `
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
@@ -905,11 +778,6 @@ exports[`Storyshots arguments/ContainerStyle/components border form 1`] = `
- -
-
- - Select an option: -
- , is selected - - -
- - -
-
-
-
+ />
@@ -1386,11 +1193,6 @@ exports[`Storyshots arguments/ContainerStyle/components extended template 1`] =
({ getFilter() { return ''; }, + getRenderMode() { + return 'display'; + }, onComplete(fn: () => void) { this.done = fn; }, diff --git a/x-pack/plugins/canvas/public/lib/ui_metric.ts b/x-pack/plugins/canvas/public/lib/ui_metric.ts index 2a1a4b88b7264d..3af0b684d0dd88 100644 --- a/x-pack/plugins/canvas/public/lib/ui_metric.ts +++ b/x-pack/plugins/canvas/public/lib/ui_metric.ts @@ -4,21 +4,21 @@ * you may not use this file except in compliance with the Elastic License. */ -import { UiStatsMetricType, METRIC_TYPE } from '@kbn/analytics'; +import { UiCounterMetricType, METRIC_TYPE } from '@kbn/analytics'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; export { METRIC_TYPE }; -export let reportUiStats: UsageCollectionSetup['reportUiStats'] | undefined; +export let reportUiCounter: UsageCollectionSetup['reportUiCounter'] | undefined; -export function init(_reportUiStats: UsageCollectionSetup['reportUiStats']): void { - reportUiStats = _reportUiStats; +export function init(_reportUiCounter: UsageCollectionSetup['reportUiCounter']): void { + reportUiCounter = _reportUiCounter; } -export function trackCanvasUiMetric(metricType: UiStatsMetricType, name: string | string[]) { - if (!reportUiStats) { +export function trackCanvasUiMetric(metricType: UiCounterMetricType, name: string | string[]) { + if (!reportUiCounter) { return; } - reportUiStats('canvas', metricType, name); + reportUiCounter('canvas', metricType, name); } diff --git a/x-pack/plugins/canvas/scripts/jest.js b/x-pack/plugins/canvas/scripts/jest.js index a91431a0141c54..9dd8bac88e1e2d 100644 --- a/x-pack/plugins/canvas/scripts/jest.js +++ b/x-pack/plugins/canvas/scripts/jest.js @@ -4,89 +4,37 @@ * you may not use this file except in compliance with the Elastic License. */ -const { run } = require('@kbn/dev-utils'); -const { runXPackScript } = require('./_helpers'); +const { resolve } = require('path'); +process.argv.push('--config', resolve(__dirname, '../jest.config.js')); -// Due to https://github.com/facebook/jest/issues/7267, folders that start with `.` -// are ignored if using watchman. Disabling watchman makes testing slow. So -// we're making this script allow -run( - ({ log, flags }) => { - const { all, storybook, update, coverage } = flags; - let { path } = flags; - let options = []; - process.argv.splice(2, process.argv.length - 2); +const storybookPosition = process.argv.indexOf('--storybook'); +const allPosition = process.argv.indexOf('--all'); - if (path) { - log.info(`Limiting tests to ${path}...`); - path = 'plugins/canvas/' + path; - } else { - path = 'plugins/canvas'; - } +console.log(` +A helper proxying to the following command: - if (coverage) { - log.info(`Collecting test coverage and writing to canvas/coverage...`); - options = [ - '--coverage', - '--collectCoverageFrom', // Ignore TS definition files - `!${path}/**/*.d.ts`, - '--collectCoverageFrom', // Ignore build directories - `!${path}/**/build/**`, - '--collectCoverageFrom', // Ignore coverage on test files - `!${path}/**/__tests__/**/*`, - '--collectCoverageFrom', // Ignore coverage on example files - `!${path}/**/__examples__/**/*`, - '--collectCoverageFrom', // Ignore flot files - `!${path}/**/flot-charts/**`, - '--collectCoverageFrom', // Ignore coverage files - `!${path}/**/coverage/**`, - '--collectCoverageFrom', // Ignore scripts - `!${path}/**/scripts/**`, - '--collectCoverageFrom', // Ignore mock files - `!${path}/**/mocks/**`, - '--collectCoverageFrom', // Include JS files - `${path}/**/*.js`, - '--collectCoverageFrom', // Include TS/X files - `${path}/**/*.ts*`, - '--coverageDirectory', // Output to canvas/coverage - 'plugins/canvas/coverage', - ]; - } - // Mitigation for https://github.com/facebook/jest/issues/7267 - if (all || storybook) { - options = options.concat(['--no-cache', '--no-watchman']); - } + yarn jest --config x-pack/plugins/canvas/jest.config.js - if (all) { - log.info('Running all available tests. This will take a while...'); - } else if (storybook) { - path = 'plugins/canvas/storybook'; - log.info('Running Storybook Snapshot tests...'); - } else { - log.info('Running tests. This does not include Storybook Snapshots...'); - } +Provides the following additional options: + --all Runs all tests and snapshots. Slower. + --storybook Runs Storybook Snapshot tests only. +`); - if (update) { - log.info('Updating any Jest snapshots...'); - options.push('-u'); - } +if (storybookPosition > -1) { + process.argv.splice(storybookPosition, 1); - runXPackScript('jest', [path].concat(options)); - }, - { - description: ` - Jest test runner for Canvas. By default, will not include Storybook Snapshots. - `, - flags: { - boolean: ['all', 'storybook', 'update', 'coverage'], - string: ['path'], - help: ` - --all Runs all tests and snapshots. Slower. - --storybook Runs Storybook Snapshot tests only. - --update Updates Storybook Snapshot tests. - --path Runs any tests at a given path. - --coverage Collect coverage statistics. - `, - }, - } -); + console.log('Running Storybook Snapshot tests only'); + process.argv.push('canvas/storybook/'); +} else if (allPosition > -1) { + process.argv.splice(allPosition, 1); + console.log('Running all available tests. This will take a while...'); +} else { + console.log('Running tests. This does not include Storybook Snapshots...'); + process.argv.push('--modulePathIgnorePatterns="/canvas/storybook/"'); +} + +if (process.env.NODE_ENV == null) { + process.env.NODE_ENV = 'test'; +} + +require('jest').run(); diff --git a/x-pack/plugins/canvas/shareable_runtime/test/utils.ts b/x-pack/plugins/canvas/shareable_runtime/test/utils.ts index 5e65594972da2e..939343b6a28c5e 100644 --- a/x-pack/plugins/canvas/shareable_runtime/test/utils.ts +++ b/x-pack/plugins/canvas/shareable_runtime/test/utils.ts @@ -21,7 +21,7 @@ export const takeMountedSnapshot = (mountedComponent: ReactWrapper<{}, {}, Compo }; export const waitFor = (fn: () => boolean, stepMs = 100, failAfterMs = 1000) => { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { let waitForTimeout: NodeJS.Timeout; const tryCondition = () => { diff --git a/x-pack/plugins/canvas/storybook/dll_contexts.js b/x-pack/plugins/canvas/storybook/dll_contexts.js index 02ceafd0b39837..8397f2f2e75f62 100644 --- a/x-pack/plugins/canvas/storybook/dll_contexts.js +++ b/x-pack/plugins/canvas/storybook/dll_contexts.js @@ -10,6 +10,3 @@ // eslint-disable-next-line @kbn/eslint/no-restricted-paths require('../../../../src/core/server/core_app/assets/legacy_light_theme.css'); - -const json = require.context('../shareable_runtime/test/workpads', false, /\.json$/); -json.keys().forEach((key) => json(key)); diff --git a/x-pack/plugins/case/common/api/cases/case.ts b/x-pack/plugins/case/common/api/cases/case.ts index 52e4a15a3f445f..9b99bf0e54cc2b 100644 --- a/x-pack/plugins/case/common/api/cases/case.ts +++ b/x-pack/plugins/case/common/api/cases/case.ts @@ -15,12 +15,24 @@ import { CaseConnectorRt, ESCaseConnector, ConnectorPartialFieldsRt } from '../c // eslint-disable-next-line @kbn/eslint/no-restricted-paths export { ActionTypeExecutorResult } from '../../../../actions/server/types'; -const StatusRt = rt.union([rt.literal('open'), rt.literal('closed')]); +export enum CaseStatuses { + open = 'open', + 'in-progress' = 'in-progress', + closed = 'closed', +} + +const CaseStatusRt = rt.union([ + rt.literal(CaseStatuses.open), + rt.literal(CaseStatuses['in-progress']), + rt.literal(CaseStatuses.closed), +]); + +export const caseStatuses = Object.values(CaseStatuses); const CaseBasicRt = rt.type({ connector: CaseConnectorRt, description: rt.string, - status: StatusRt, + status: CaseStatusRt, tags: rt.array(rt.string), title: rt.string, }); @@ -68,7 +80,7 @@ export const CaseExternalServiceRequestRt = CaseExternalServiceBasicRt; export const CasesFindRequestRt = rt.partial({ tags: rt.union([rt.array(rt.string), rt.string]), - status: StatusRt, + status: CaseStatusRt, reporters: rt.union([rt.array(rt.string), rt.string]), defaultSearchOperator: rt.union([rt.literal('AND'), rt.literal('OR')]), fields: rt.array(rt.string), @@ -177,7 +189,6 @@ export type CasesResponse = rt.TypeOf; export type CasesFindResponse = rt.TypeOf; export type CasePatchRequest = rt.TypeOf; export type CasesPatchRequest = rt.TypeOf; -export type Status = rt.TypeOf; export type CaseExternalServiceRequest = rt.TypeOf; export type ServiceConnectorCaseParams = rt.TypeOf; export type ServiceConnectorCaseResponse = rt.TypeOf; diff --git a/x-pack/plugins/case/common/api/cases/status.ts b/x-pack/plugins/case/common/api/cases/status.ts index 984181da8cdeea..b812126dc1eab6 100644 --- a/x-pack/plugins/case/common/api/cases/status.ts +++ b/x-pack/plugins/case/common/api/cases/status.ts @@ -8,6 +8,7 @@ import * as rt from 'io-ts'; export const CasesStatusResponseRt = rt.type({ count_open_cases: rt.number, + count_in_progress_cases: rt.number, count_closed_cases: rt.number, }); diff --git a/x-pack/plugins/case/jest.config.js b/x-pack/plugins/case/jest.config.js new file mode 100644 index 00000000000000..8095c70bc4a140 --- /dev/null +++ b/x-pack/plugins/case/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/case'], +}; diff --git a/x-pack/plugins/case/server/client/cases/create.test.ts b/x-pack/plugins/case/server/client/cases/create.test.ts index d82979de2cb446..e09ce226b3125d 100644 --- a/x-pack/plugins/case/server/client/cases/create.test.ts +++ b/x-pack/plugins/case/server/client/cases/create.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ConnectorTypes, CasePostRequest } from '../../../common/api'; +import { ConnectorTypes, CasePostRequest, CaseStatuses } from '../../../common/api'; import { createMockSavedObjectsRepository, @@ -60,7 +60,7 @@ describe('create', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: null, updated_by: null, @@ -126,7 +126,7 @@ describe('create', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: null, updated_by: null, @@ -169,7 +169,7 @@ describe('create', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: null, updated_by: null, @@ -316,7 +316,7 @@ describe('create', () => { title: 'a title', description: 'This is a brand new case of a bad meanie defacing data', tags: ['defacement'], - status: 'closed', + status: CaseStatuses.closed, connector: { id: 'none', name: 'none', diff --git a/x-pack/plugins/case/server/client/cases/update.test.ts b/x-pack/plugins/case/server/client/cases/update.test.ts index 10eebd1210a9e6..ae701f16b2bcb6 100644 --- a/x-pack/plugins/case/server/client/cases/update.test.ts +++ b/x-pack/plugins/case/server/client/cases/update.test.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ConnectorTypes, CasesPatchRequest } from '../../../common/api'; +import { ConnectorTypes, CasesPatchRequest, CaseStatuses } from '../../../common/api'; import { createMockSavedObjectsRepository, mockCaseNoConnectorId, @@ -27,7 +27,7 @@ describe('update', () => { cases: [ { id: 'mock-id-1', - status: 'closed' as const, + status: CaseStatuses.closed, version: 'WzAsMV0=', }, ], @@ -56,7 +56,7 @@ describe('update', () => { description: 'This is a brand new case of a bad meanie defacing data', id: 'mock-id-1', external_service: null, - status: 'closed', + status: CaseStatuses.closed, tags: ['defacement'], title: 'Super Bad Security Issue', totalComment: 0, @@ -79,8 +79,8 @@ describe('update', () => { username: 'awesome', }, action_field: ['status'], - new_value: 'closed', - old_value: 'open', + new_value: CaseStatuses.closed, + old_value: CaseStatuses.open, }, references: [ { @@ -98,7 +98,7 @@ describe('update', () => { cases: [ { id: 'mock-id-1', - status: 'open' as const, + status: CaseStatuses.open, version: 'WzAsMV0=', }, ], @@ -106,7 +106,10 @@ describe('update', () => { const savedObjectsClient = createMockSavedObjectsRepository({ caseSavedObject: [ - { ...mockCases[0], attributes: { ...mockCases[0].attributes, status: 'closed' } }, + { + ...mockCases[0], + attributes: { ...mockCases[0].attributes, status: CaseStatuses.closed }, + }, ...mockCases.slice(1), ], }); @@ -130,7 +133,7 @@ describe('update', () => { description: 'This is a brand new case of a bad meanie defacing data', id: 'mock-id-1', external_service: null, - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], title: 'Super Bad Security Issue', totalComment: 0, @@ -146,7 +149,7 @@ describe('update', () => { cases: [ { id: 'mock-no-connector_id', - status: 'closed' as const, + status: CaseStatuses.closed, version: 'WzAsMV0=', }, ], @@ -177,7 +180,7 @@ describe('update', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'closed', + status: CaseStatuses.closed, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { email: 'd00d@awesome.com', full_name: 'Awesome D00d', username: 'awesome' }, @@ -231,7 +234,7 @@ describe('update', () => { description: 'Oh no, a bad meanie going LOLBins all over the place!', external_service: null, title: 'Another bad one', - status: 'open', + status: CaseStatuses.open, tags: ['LOLBins'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { @@ -314,7 +317,7 @@ describe('update', () => { cases: [ { id: 'mock-id-1', - status: 'open' as const, + status: CaseStatuses.open, version: 'WzAsMV0=', }, ], diff --git a/x-pack/plugins/case/server/client/cases/update.ts b/x-pack/plugins/case/server/client/cases/update.ts index a754ce27c5e41b..406e43a74cccfc 100644 --- a/x-pack/plugins/case/server/client/cases/update.ts +++ b/x-pack/plugins/case/server/client/cases/update.ts @@ -19,6 +19,7 @@ import { ESCasePatchRequest, CasePatchRequest, CasesResponse, + CaseStatuses, } from '../../../common/api'; import { buildCaseUserActions } from '../../services/user_actions/helpers'; import { @@ -98,12 +99,15 @@ export const update = ({ cases: updateFilterCases.map((thisCase) => { const { id: caseId, version, ...updateCaseAttributes } = thisCase; let closedInfo = {}; - if (updateCaseAttributes.status && updateCaseAttributes.status === 'closed') { + if (updateCaseAttributes.status && updateCaseAttributes.status === CaseStatuses.closed) { closedInfo = { closed_at: updatedDt, closed_by: { email, full_name, username }, }; - } else if (updateCaseAttributes.status && updateCaseAttributes.status === 'open') { + } else if ( + updateCaseAttributes.status && + updateCaseAttributes.status === CaseStatuses.open + ) { closedInfo = { closed_at: null, closed_by: null, diff --git a/x-pack/plugins/case/server/connectors/case/index.test.ts b/x-pack/plugins/case/server/connectors/case/index.test.ts index 90bb1d604e7330..adf94661216cbc 100644 --- a/x-pack/plugins/case/server/connectors/case/index.test.ts +++ b/x-pack/plugins/case/server/connectors/case/index.test.ts @@ -9,7 +9,7 @@ import { Logger } from '../../../../../../src/core/server'; import { loggingSystemMock } from '../../../../../../src/core/server/mocks'; import { actionsMock } from '../../../../actions/server/mocks'; import { validateParams } from '../../../../actions/server/lib'; -import { ConnectorTypes, CommentType } from '../../../common/api'; +import { ConnectorTypes, CommentType, CaseStatuses } from '../../../common/api'; import { createCaseServiceMock, createConfigureServiceMock, @@ -785,7 +785,7 @@ describe('case connector', () => { tags: ['case', 'connector'], description: 'Yo fields!!', external_service: null, - status: 'open' as const, + status: CaseStatuses.open, updated_at: null, updated_by: null, version: 'WzksMV0=', @@ -868,7 +868,7 @@ describe('case connector', () => { description: 'This is a brand new case of a bad meanie defacing data', id: 'mock-id-1', external_service: null, - status: 'open' as const, + status: CaseStatuses.open, tags: ['defacement'], title: 'Update title', totalComment: 0, @@ -937,7 +937,7 @@ describe('case connector', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open' as const, + status: CaseStatuses.open, tags: ['defacement'], updated_at: null, updated_by: null, diff --git a/x-pack/plugins/case/server/routes/api/__fixtures__/mock_saved_objects.ts b/x-pack/plugins/case/server/routes/api/__fixtures__/mock_saved_objects.ts index 4c0b5887ca9988..95856dd75d0ae8 100644 --- a/x-pack/plugins/case/server/routes/api/__fixtures__/mock_saved_objects.ts +++ b/x-pack/plugins/case/server/routes/api/__fixtures__/mock_saved_objects.ts @@ -11,6 +11,7 @@ import { ESCaseAttributes, ConnectorTypes, CommentType, + CaseStatuses, } from '../../../../common/api'; export const mockCases: Array> = [ @@ -35,7 +36,7 @@ export const mockCases: Array> = [ description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { @@ -69,7 +70,7 @@ export const mockCases: Array> = [ description: 'Oh no, a bad meanie destroying data!', external_service: null, title: 'Damaging Data Destruction Detected', - status: 'open', + status: CaseStatuses.open, tags: ['Data Destruction'], updated_at: '2019-11-25T22:32:00.900Z', updated_by: { @@ -107,7 +108,7 @@ export const mockCases: Array> = [ description: 'Oh no, a bad meanie going LOLBins all over the place!', external_service: null, title: 'Another bad one', - status: 'open', + status: CaseStatuses.open, tags: ['LOLBins'], updated_at: '2019-11-25T22:32:17.947Z', updated_by: { @@ -148,7 +149,7 @@ export const mockCases: Array> = [ }, description: 'Oh no, a bad meanie going LOLBins all over the place!', external_service: null, - status: 'closed', + status: CaseStatuses.closed, title: 'Another bad one', tags: ['LOLBins'], updated_at: '2019-11-25T22:32:17.947Z', @@ -179,7 +180,7 @@ export const mockCaseNoConnectorId: SavedObject> = { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { diff --git a/x-pack/plugins/case/server/routes/api/cases/find_cases.test.ts b/x-pack/plugins/case/server/routes/api/cases/find_cases.test.ts index b2ba8b2fcb33ab..dca94589bf72ad 100644 --- a/x-pack/plugins/case/server/routes/api/cases/find_cases.test.ts +++ b/x-pack/plugins/case/server/routes/api/cases/find_cases.test.ts @@ -38,6 +38,10 @@ describe('FIND all cases', () => { const response = await routeHandler(theContext, request, kibanaResponseFactory); expect(response.status).toEqual(200); expect(response.payload.cases).toHaveLength(4); + // mockSavedObjectsRepository do not support filters and returns all cases every time. + expect(response.payload.count_open_cases).toEqual(4); + expect(response.payload.count_closed_cases).toEqual(4); + expect(response.payload.count_in_progress_cases).toEqual(4); }); it(`has proper connector id on cases with configured connector`, async () => { diff --git a/x-pack/plugins/case/server/routes/api/cases/find_cases.ts b/x-pack/plugins/case/server/routes/api/cases/find_cases.ts index e70225456d5a83..b034e86b4f0d48 100644 --- a/x-pack/plugins/case/server/routes/api/cases/find_cases.ts +++ b/x-pack/plugins/case/server/routes/api/cases/find_cases.ts @@ -11,7 +11,13 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { isEmpty } from 'lodash'; -import { CasesFindResponseRt, CasesFindRequestRt, throwErrors } from '../../../../common/api'; +import { + CasesFindResponseRt, + CasesFindRequestRt, + throwErrors, + CaseStatuses, + caseStatuses, +} from '../../../../common/api'; import { transformCases, sortToSnake, wrapError, escapeHatch } from '../utils'; import { RouteDeps, TotalCommentByCase } from '../types'; import { CASE_SAVED_OBJECT } from '../../../saved_object_types'; @@ -20,7 +26,7 @@ import { CASES_URL } from '../../../../common/constants'; const combineFilters = (filters: string[], operator: 'OR' | 'AND'): string => filters?.filter((i) => i !== '').join(` ${operator} `); -const getStatusFilter = (status: 'open' | 'closed', appendFilter?: string) => +const getStatusFilter = (status: CaseStatuses, appendFilter?: string) => `${CASE_SAVED_OBJECT}.attributes.status: ${status}${ !isEmpty(appendFilter) ? ` AND ${appendFilter}` : '' }`; @@ -75,30 +81,21 @@ export function initFindCasesApi({ caseService, caseConfigureService, router }: client, }; - const argsOpenCases = { + const statusArgs = caseStatuses.map((caseStatus) => ({ client, options: { fields: [], page: 1, perPage: 1, - filter: getStatusFilter('open', myFilters), + filter: getStatusFilter(caseStatus, myFilters), }, - }; + })); - const argsClosedCases = { - client, - options: { - fields: [], - page: 1, - perPage: 1, - filter: getStatusFilter('closed', myFilters), - }, - }; - const [cases, openCases, closesCases] = await Promise.all([ + const [cases, openCases, inProgressCases, closedCases] = await Promise.all([ caseService.findCases(args), - caseService.findCases(argsOpenCases), - caseService.findCases(argsClosedCases), + ...statusArgs.map((arg) => caseService.findCases(arg)), ]); + const totalCommentsFindByCases = await Promise.all( cases.saved_objects.map((c) => caseService.getAllCaseComments({ @@ -133,7 +130,8 @@ export function initFindCasesApi({ caseService, caseConfigureService, router }: transformCases( cases, openCases.total ?? 0, - closesCases.total ?? 0, + inProgressCases.total ?? 0, + closedCases.total ?? 0, totalCommentsByCases ) ), diff --git a/x-pack/plugins/case/server/routes/api/cases/patch_cases.test.ts b/x-pack/plugins/case/server/routes/api/cases/patch_cases.test.ts index ea69ee77c58020..053f9ec18ab0f8 100644 --- a/x-pack/plugins/case/server/routes/api/cases/patch_cases.test.ts +++ b/x-pack/plugins/case/server/routes/api/cases/patch_cases.test.ts @@ -16,7 +16,7 @@ import { } from '../__fixtures__'; import { initPatchCasesApi } from './patch_cases'; import { mockCaseConfigure, mockCaseNoConnectorId } from '../__fixtures__/mock_saved_objects'; -import { ConnectorTypes } from '../../../../common/api/connectors'; +import { ConnectorTypes, CaseStatuses } from '../../../../common/api'; describe('PATCH cases', () => { let routeHandler: RequestHandler; @@ -36,7 +36,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-1', - status: 'closed', + status: CaseStatuses.closed, version: 'WzAsMV0=', }, ], @@ -67,7 +67,7 @@ describe('PATCH cases', () => { description: 'This is a brand new case of a bad meanie defacing data', id: 'mock-id-1', external_service: null, - status: 'closed', + status: CaseStatuses.closed, tags: ['defacement'], title: 'Super Bad Security Issue', totalComment: 0, @@ -86,7 +86,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-4', - status: 'open', + status: CaseStatuses.open, version: 'WzUsMV0=', }, ], @@ -118,7 +118,7 @@ describe('PATCH cases', () => { description: 'Oh no, a bad meanie going LOLBins all over the place!', id: 'mock-id-4', external_service: null, - status: 'open', + status: CaseStatuses.open, tags: ['LOLBins'], title: 'Another bad one', totalComment: 0, @@ -129,6 +129,56 @@ describe('PATCH cases', () => { ]); }); + it(`Change case to in-progress`, async () => { + const request = httpServerMock.createKibanaRequest({ + path: '/api/cases', + method: 'patch', + body: { + cases: [ + { + id: 'mock-id-1', + status: CaseStatuses['in-progress'], + version: 'WzAsMV0=', + }, + ], + }, + }); + + const theContext = await createRouteContext( + createMockSavedObjectsRepository({ + caseSavedObject: mockCases, + }) + ); + + const response = await routeHandler(theContext, request, kibanaResponseFactory); + expect(response.status).toEqual(200); + expect(response.payload).toEqual([ + { + closed_at: null, + closed_by: null, + comments: [], + connector: { + id: 'none', + name: 'none', + type: ConnectorTypes.none, + fields: null, + }, + created_at: '2019-11-25T21:54:48.952Z', + created_by: { email: 'testemail@elastic.co', full_name: 'elastic', username: 'elastic' }, + description: 'This is a brand new case of a bad meanie defacing data', + id: 'mock-id-1', + external_service: null, + status: CaseStatuses['in-progress'], + tags: ['defacement'], + title: 'Super Bad Security Issue', + totalComment: 0, + updated_at: '2019-11-25T21:54:48.952Z', + updated_by: { email: 'd00d@awesome.com', full_name: 'Awesome D00d', username: 'awesome' }, + version: 'WzE3LDFd', + }, + ]); + }); + it(`Patches a case without a connector.id`, async () => { const request = httpServerMock.createKibanaRequest({ path: '/api/cases', @@ -137,7 +187,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-no-connector_id', - status: 'closed', + status: CaseStatuses.closed, version: 'WzAsMV0=', }, ], @@ -163,7 +213,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-3', - status: 'closed', + status: CaseStatuses.closed, version: 'WzUsMV0=', }, ], @@ -225,7 +275,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-1', - case: { status: 'closed' }, + case: { status: CaseStatuses.closed }, version: 'badv=', }, ], @@ -250,7 +300,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-1', - case: { status: 'open' }, + case: { status: CaseStatuses.open }, version: 'WzAsMV0=', }, ], @@ -276,7 +326,7 @@ describe('PATCH cases', () => { cases: [ { id: 'mock-id-does-not-exist', - status: 'closed', + status: CaseStatuses.closed, version: 'WzAsMV0=', }, ], diff --git a/x-pack/plugins/case/server/routes/api/cases/post_case.test.ts b/x-pack/plugins/case/server/routes/api/cases/post_case.test.ts index 1e1b19baa1c479..508684b4228917 100644 --- a/x-pack/plugins/case/server/routes/api/cases/post_case.test.ts +++ b/x-pack/plugins/case/server/routes/api/cases/post_case.test.ts @@ -16,7 +16,7 @@ import { import { initPostCaseApi } from './post_case'; import { CASES_URL } from '../../../../common/constants'; import { mockCaseConfigure } from '../__fixtures__/mock_saved_objects'; -import { ConnectorTypes } from '../../../../common/api/connectors'; +import { ConnectorTypes, CaseStatuses } from '../../../../common/api'; describe('POST cases', () => { let routeHandler: RequestHandler; @@ -54,6 +54,7 @@ describe('POST cases', () => { const response = await routeHandler(theContext, request, kibanaResponseFactory); expect(response.status).toEqual(200); expect(response.payload.id).toEqual('mock-it'); + expect(response.payload.status).toEqual('open'); expect(response.payload.created_by.username).toEqual('awesome'); expect(response.payload.connector).toEqual({ id: 'none', @@ -104,7 +105,7 @@ describe('POST cases', () => { body: { description: 'This is a brand new case of a bad meanie defacing data', title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], connector: null, }, @@ -191,7 +192,7 @@ describe('POST cases', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, id: 'mock-it', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], title: 'Super Bad Security Issue', totalComment: 0, diff --git a/x-pack/plugins/case/server/routes/api/cases/push_case.ts b/x-pack/plugins/case/server/routes/api/cases/push_case.ts index 6ba2da111090f7..6a6b09dc3f87ab 100644 --- a/x-pack/plugins/case/server/routes/api/cases/push_case.ts +++ b/x-pack/plugins/case/server/routes/api/cases/push_case.ts @@ -18,7 +18,12 @@ import { getCommentContextFromAttributes, } from '../utils'; -import { CaseExternalServiceRequestRt, CaseResponseRt, throwErrors } from '../../../../common/api'; +import { + CaseExternalServiceRequestRt, + CaseResponseRt, + throwErrors, + CaseStatuses, +} from '../../../../common/api'; import { buildCaseUserActionItem } from '../../../services/user_actions/helpers'; import { RouteDeps } from '../types'; import { CASE_DETAILS_URL } from '../../../../common/constants'; @@ -77,7 +82,7 @@ export function initPushCaseUserActionApi({ actionsClient.getAll(), ]); - if (myCase.attributes.status === 'closed') { + if (myCase.attributes.status === CaseStatuses.closed) { throw Boom.conflict( `This case ${myCase.attributes.title} is closed. You can not pushed if the case is closed.` ); @@ -117,7 +122,7 @@ export function initPushCaseUserActionApi({ ...(myCaseConfigure.total > 0 && myCaseConfigure.saved_objects[0].attributes.closure_type === 'close-by-pushing' ? { - status: 'closed', + status: CaseStatuses.closed, closed_at: pushedDate, closed_by: { email, full_name, username }, } @@ -153,7 +158,7 @@ export function initPushCaseUserActionApi({ actionBy: { username, full_name, email }, caseId, fields: ['status'], - newValue: 'closed', + newValue: CaseStatuses.closed, oldValue: myCase.attributes.status, }), ] diff --git a/x-pack/plugins/case/server/routes/api/cases/status/get_status.ts b/x-pack/plugins/case/server/routes/api/cases/status/get_status.ts index 8f86dbc91f315d..4379a6b56367c0 100644 --- a/x-pack/plugins/case/server/routes/api/cases/status/get_status.ts +++ b/x-pack/plugins/case/server/routes/api/cases/status/get_status.ts @@ -7,7 +7,7 @@ import { RouteDeps } from '../../types'; import { wrapError } from '../../utils'; -import { CasesStatusResponseRt } from '../../../../../common/api'; +import { CasesStatusResponseRt, caseStatuses } from '../../../../../common/api'; import { CASE_SAVED_OBJECT } from '../../../../saved_object_types'; import { CASE_STATUS_URL } from '../../../../../common/constants'; @@ -20,34 +20,24 @@ export function initGetCasesStatusApi({ caseService, router }: RouteDeps) { async (context, request, response) => { try { const client = context.core.savedObjects.client; - const argsOpenCases = { + const args = caseStatuses.map((status) => ({ client, options: { fields: [], page: 1, perPage: 1, - filter: `${CASE_SAVED_OBJECT}.attributes.status: open`, + filter: `${CASE_SAVED_OBJECT}.attributes.status: ${status}`, }, - }; + })); - const argsClosedCases = { - client, - options: { - fields: [], - page: 1, - perPage: 1, - filter: `${CASE_SAVED_OBJECT}.attributes.status: closed`, - }, - }; - - const [openCases, closesCases] = await Promise.all([ - caseService.findCases(argsOpenCases), - caseService.findCases(argsClosedCases), - ]); + const [openCases, inProgressCases, closesCases] = await Promise.all( + args.map((arg) => caseService.findCases(arg)) + ); return response.ok({ body: CasesStatusResponseRt.encode({ count_open_cases: openCases.total, + count_in_progress_cases: inProgressCases.total, count_closed_cases: closesCases.total, }), }); diff --git a/x-pack/plugins/case/server/routes/api/utils.test.ts b/x-pack/plugins/case/server/routes/api/utils.test.ts index a67bae5ed74dc9..7654ae5ff0d1af 100644 --- a/x-pack/plugins/case/server/routes/api/utils.test.ts +++ b/x-pack/plugins/case/server/routes/api/utils.test.ts @@ -23,7 +23,7 @@ import { mockCaseComments, mockCaseNoConnectorId, } from './__fixtures__/mock_saved_objects'; -import { ConnectorTypes, ESCaseConnector, CommentType } from '../../../common/api'; +import { ConnectorTypes, ESCaseConnector, CommentType, CaseStatuses } from '../../../common/api'; describe('Utils', () => { describe('transformNewCase', () => { @@ -57,7 +57,7 @@ describe('Utils', () => { created_at: '2020-04-09T09:43:51.778Z', created_by: { email: 'elastic@elastic.co', full_name: 'Elastic', username: 'elastic' }, external_service: null, - status: 'open', + status: CaseStatuses.open, updated_at: null, updated_by: null, }); @@ -80,7 +80,7 @@ describe('Utils', () => { created_at: '2020-04-09T09:43:51.778Z', created_by: { email: undefined, full_name: undefined, username: undefined }, external_service: null, - status: 'open', + status: CaseStatuses.open, updated_at: null, updated_by: null, }); @@ -106,7 +106,7 @@ describe('Utils', () => { created_at: '2020-04-09T09:43:51.778Z', created_by: { email: null, full_name: null, username: null }, external_service: null, - status: 'open', + status: CaseStatuses.open, updated_at: null, updated_by: null, }); @@ -247,6 +247,7 @@ describe('Utils', () => { }, 2, 2, + 2, extraCaseData ); expect(res).toEqual({ @@ -259,6 +260,7 @@ describe('Utils', () => { ), count_open_cases: 2, count_closed_cases: 2, + count_in_progress_cases: 2, }); }); }); @@ -289,7 +291,7 @@ describe('Utils', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { @@ -328,7 +330,7 @@ describe('Utils', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { @@ -374,7 +376,7 @@ describe('Utils', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { @@ -484,7 +486,7 @@ describe('Utils', () => { description: 'This is a brand new case of a bad meanie defacing data', external_service: null, title: 'Super Bad Security Issue', - status: 'open', + status: CaseStatuses.open, tags: ['defacement'], updated_at: '2019-11-25T21:54:48.952Z', updated_by: { diff --git a/x-pack/plugins/case/server/routes/api/utils.ts b/x-pack/plugins/case/server/routes/api/utils.ts index 589d7c02a7be60..c8753772648c29 100644 --- a/x-pack/plugins/case/server/routes/api/utils.ts +++ b/x-pack/plugins/case/server/routes/api/utils.ts @@ -33,6 +33,7 @@ import { CommentType, excess, throwErrors, + CaseStatuses, } from '../../../common/api'; import { transformESConnectorToCaseConnector } from './cases/helpers'; @@ -61,7 +62,7 @@ export const transformNewCase = ({ created_at: createdDate, created_by: { email, full_name, username }, external_service: null, - status: 'open', + status: CaseStatuses.open, updated_at: null, updated_by: null, }); @@ -103,6 +104,7 @@ export function wrapError(error: any): CustomHttpResponseOptions export const transformCases = ( cases: SavedObjectsFindResponse, countOpenCases: number, + countInProgressCases: number, countClosedCases: number, totalCommentByCase: TotalCommentByCase[] ): CasesFindResponse => ({ @@ -111,6 +113,7 @@ export const transformCases = ( total: cases.total, cases: flattenCaseSavedObjects(cases.saved_objects, totalCommentByCase), count_open_cases: countOpenCases, + count_in_progress_cases: countInProgressCases, count_closed_cases: countClosedCases, }); diff --git a/x-pack/plugins/cloud/jest.config.js b/x-pack/plugins/cloud/jest.config.js new file mode 100644 index 00000000000000..e3844a97e5692d --- /dev/null +++ b/x-pack/plugins/cloud/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/cloud'], +}; diff --git a/x-pack/plugins/code/jest.config.js b/x-pack/plugins/code/jest.config.js new file mode 100644 index 00000000000000..2b2b078cc966c6 --- /dev/null +++ b/x-pack/plugins/code/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/code'], +}; diff --git a/x-pack/plugins/cross_cluster_replication/jest.config.js b/x-pack/plugins/cross_cluster_replication/jest.config.js new file mode 100644 index 00000000000000..6202a45413906e --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/cross_cluster_replication'], +}; diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js new file mode 100644 index 00000000000000..df3017ebf92a4a --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { FollowerIndexPauseProvider } from './follower_index_pause_provider'; +import { FollowerIndexResumeProvider } from './follower_index_resume_provider'; +import { FollowerIndexUnfollowProvider } from './follower_index_unfollow_provider'; + +export const FollowerIndexActionsProvider = (props) => { + return ( + + {(pauseFollowerIndex) => ( + + {(resumeFollowerIndex) => ( + + {(unfollowLeaderIndex) => { + const { children } = props; + return children(() => ({ + pauseFollowerIndex, + resumeFollowerIndex, + unfollowLeaderIndex, + })); + }} + + )} + + )} + + ); +}; diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js similarity index 95% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js rename to x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js index 9c1e8255d069c2..7d1168d8316316 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_pause_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js @@ -11,9 +11,9 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; -import { pauseFollowerIndex } from '../store/actions'; -import { arrify } from '../../../common/services/utils'; -import { areAllSettingsDefault } from '../services/follower_index_default_settings'; +import { pauseFollowerIndex } from '../../store/actions'; +import { arrify } from '../../../../common/services/utils'; +import { areAllSettingsDefault } from '../../services/follower_index_default_settings'; class FollowerIndexPauseProviderUi extends PureComponent { static propTypes = { diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js similarity index 95% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js rename to x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js index 101e3df6bf710c..86f8c0447e7342 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_resume_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js @@ -10,10 +10,10 @@ import { connect } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiConfirmModal, EuiLink, EuiOverlayMask } from '@elastic/eui'; -import { reactRouterNavigate } from '../../../../../../src/plugins/kibana_react/public'; -import { routing } from '../services/routing'; -import { resumeFollowerIndex } from '../store/actions'; -import { arrify } from '../../../common/services/utils'; +import { reactRouterNavigate } from '../../../../../../../src/plugins/kibana_react/public'; +import { routing } from '../../services/routing'; +import { resumeFollowerIndex } from '../../store/actions'; +import { arrify } from '../../../../common/services/utils'; class FollowerIndexResumeProviderUi extends PureComponent { static propTypes = { diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js similarity index 97% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js rename to x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js index 68b6b970ad90ba..f9644aa20c2c2a 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_unfollow_provider.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js @@ -11,8 +11,8 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; -import { unfollowLeaderIndex } from '../store/actions'; -import { arrify } from '../../../common/services/utils'; +import { unfollowLeaderIndex } from '../../store/actions'; +import { arrify } from '../../../../common/services/utils'; class FollowerIndexUnfollowProviderUi extends PureComponent { static propTypes = { diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js new file mode 100644 index 00000000000000..fe1a7d82a56a19 --- /dev/null +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { FollowerIndexActionsProvider } from './follower_index_actions_provider'; +export { FollowerIndexPauseProvider } from './follower_index_pause_provider'; +export { FollowerIndexResumeProvider } from './follower_index_resume_provider'; +export { FollowerIndexUnfollowProvider } from './follower_index_unfollow_provider'; diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/index.js b/x-pack/plugins/cross_cluster_replication/public/app/components/index.js index 6d971bff03981f..55609fa85fb11b 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/components/index.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/components/index.js @@ -12,9 +12,10 @@ export { AutoFollowPatternForm } from './auto_follow_pattern_form'; export { AutoFollowPatternDeleteProvider } from './auto_follow_pattern_delete_provider'; export { AutoFollowPatternPageTitle } from './auto_follow_pattern_page_title'; export { AutoFollowPatternIndicesPreview } from './auto_follow_pattern_indices_preview'; -export { FollowerIndexPauseProvider } from './follower_index_pause_provider'; -export { FollowerIndexResumeProvider } from './follower_index_resume_provider'; -export { FollowerIndexUnfollowProvider } from './follower_index_unfollow_provider'; +export { FollowerIndexPauseProvider } from './follower_index_actions_providers'; +export { FollowerIndexResumeProvider } from './follower_index_actions_providers'; +export { FollowerIndexUnfollowProvider } from './follower_index_actions_providers'; +export { FollowerIndexActionsProvider } from './follower_index_actions_providers'; export { FollowerIndexForm } from './follower_index_form'; export { FollowerIndexPageTitle } from './follower_index_page_title'; export { FormEntryRow } from './form_entry_row'; diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js index 2309dece3f92be..dd5fe6f2128083 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { PureComponent, Fragment } from 'react'; +import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { i18n } from '@kbn/i18n'; import { @@ -13,7 +13,6 @@ import { EuiLoadingKibana, EuiOverlayMask, EuiHealth, - EuiIcon, } from '@elastic/eui'; import { API_STATUS, UIM_AUTO_FOLLOW_PATTERN_SHOW_DETAILS_CLICK } from '../../../../../constants'; import { @@ -23,6 +22,33 @@ import { import { routing } from '../../../../../services/routing'; import { trackUiMetric } from '../../../../../services/track_ui_metric'; +const actionI18nTexts = { + pause: i18n.translate( + 'xpack.crossClusterReplication.autoFollowPatternList.table.actionPauseDescription', + { + defaultMessage: 'Pause replication', + } + ), + resume: i18n.translate( + 'xpack.crossClusterReplication.autoFollowPatternList.table.actionResumeDescription', + { + defaultMessage: 'Resume replication', + } + ), + edit: i18n.translate( + 'xpack.crossClusterReplication.autoFollowPatternList.table.actionEditDescription', + { + defaultMessage: 'Edit auto-follow pattern', + } + ), + delete: i18n.translate( + 'xpack.crossClusterReplication.autoFollowPatternList.table.actionDeleteDescription', + { + defaultMessage: 'Delete auto-follow pattern', + } + ), +}; + const getFilteredPatterns = (autoFollowPatterns, queryText) => { if (queryText) { const normalizedSearchText = queryText.toLowerCase(); @@ -93,7 +119,7 @@ export class AutoFollowPatternTable extends PureComponent { }); }; - getTableColumns() { + getTableColumns(deleteAutoFollowPattern) { const { selectAutoFollowPattern } = this.props; return [ @@ -200,88 +226,34 @@ export class AutoFollowPatternTable extends PureComponent { ), actions: [ { - render: ({ name, active }) => { - const label = active - ? i18n.translate( - 'xpack.crossClusterReplication.autoFollowPatternList.table.actionPauseDescription', - { - defaultMessage: 'Pause replication', - } - ) - : i18n.translate( - 'xpack.crossClusterReplication.autoFollowPatternList.table.actionResumeDescription', - { - defaultMessage: 'Resume replication', - } - ); - - return ( - { - if (event.stopPropagation) { - event.stopPropagation(); - } - if (active) { - this.props.pauseAutoFollowPattern(name); - } else { - this.props.resumeAutoFollowPattern(name); - } - }} - data-test-subj={active ? 'contextMenuPauseButton' : 'contextMenuResumeButton'} - > - - {label} - - ); - }, + name: actionI18nTexts.pause, + description: actionI18nTexts.pause, + icon: 'pause', + onClick: (item) => this.props.pauseAutoFollowPattern(item.name), + available: (item) => item.active, + 'data-test-subj': 'contextMenuPauseButton', }, { - render: ({ name }) => { - const label = i18n.translate( - 'xpack.crossClusterReplication.autoFollowPatternList.table.actionEditDescription', - { - defaultMessage: 'Edit auto-follow pattern', - } - ); - - return ( - routing.navigate(routing.getAutoFollowPatternPath(name))} - data-test-subj="contextMenuEditButton" - > - - {label} - - ); - }, + name: actionI18nTexts.resume, + description: actionI18nTexts.resume, + icon: 'play', + onClick: (item) => this.props.resumeAutoFollowPattern(item.name), + available: (item) => !item.active, + 'data-test-subj': 'contextMenuResumeButton', }, { - render: ({ name }) => { - const label = i18n.translate( - 'xpack.crossClusterReplication.autoFollowPatternList.table.actionDeleteDescription', - { - defaultMessage: 'Delete auto-follow pattern', - } - ); - - return ( - - {(deleteAutoFollowPattern) => ( - deleteAutoFollowPattern(name)} - data-test-subj="contextMenuDeleteButton" - > - - {label} - - )} - - ); - }, + name: actionI18nTexts.edit, + description: actionI18nTexts.edit, + icon: 'pencil', + onClick: (item) => routing.navigate(routing.getAutoFollowPatternPath(item.name)), + 'data-test-subj': 'contextMenuEditButton', + }, + { + name: actionI18nTexts.delete, + description: actionI18nTexts.delete, + icon: 'trash', + onClick: (item) => deleteAutoFollowPattern(item.name), + 'data-test-subj': 'contextMenuDeleteButton', }, ], width: '100px', @@ -339,26 +311,30 @@ export class AutoFollowPatternTable extends PureComponent { }; return ( - - ({ - 'data-test-subj': 'row', - })} - cellProps={(item, column) => ({ - 'data-test-subj': `cell_${column.field}`, - })} - data-test-subj="autoFollowPatternListTable" - /> - {this.renderLoading()} - + + {(deleteAutoFollowPattern) => ( + <> + ({ + 'data-test-subj': 'row', + })} + cellProps={(item, column) => ({ + 'data-test-subj': `cell_${column.field}`, + })} + data-test-subj="autoFollowPatternListTable" + /> + {this.renderLoading()} + + )} + ); } } diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js index 0c57b3f7330cfd..2ea73e272b24e6 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js +++ b/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js @@ -4,12 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { PureComponent, Fragment } from 'react'; +import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { - EuiIcon, EuiHealth, EuiInMemoryTable, EuiLink, @@ -17,15 +16,38 @@ import { EuiOverlayMask, } from '@elastic/eui'; import { API_STATUS, UIM_FOLLOWER_INDEX_SHOW_DETAILS_CLICK } from '../../../../../constants'; -import { - FollowerIndexPauseProvider, - FollowerIndexResumeProvider, - FollowerIndexUnfollowProvider, -} from '../../../../../components'; +import { FollowerIndexActionsProvider } from '../../../../../components'; import { routing } from '../../../../../services/routing'; import { trackUiMetric } from '../../../../../services/track_ui_metric'; import { ContextMenu } from '../context_menu'; +const actionI18nTexts = { + pause: i18n.translate( + 'xpack.crossClusterReplication.followerIndexList.table.actionPauseDescription', + { + defaultMessage: 'Pause replication', + } + ), + resume: i18n.translate( + 'xpack.crossClusterReplication.followerIndexList.table.actionResumeDescription', + { + defaultMessage: 'Resume replication', + } + ), + edit: i18n.translate( + 'xpack.crossClusterReplication.followerIndexList.table.actionEditDescription', + { + defaultMessage: 'Edit follower index', + } + ), + unfollow: i18n.translate( + 'xpack.crossClusterReplication.followerIndexList.table.actionUnfollowDescription', + { + defaultMessage: 'Unfollow leader index', + } + ), +}; + const getFilteredIndices = (followerIndices, queryText) => { if (queryText) { const normalizedSearchText = queryText.toLowerCase(); @@ -101,91 +123,43 @@ export class FollowerIndicesTable extends PureComponent { routing.navigate(uri); }; - getTableColumns() { + getTableColumns(actionHandlers) { const { selectFollowerIndex } = this.props; const actions = [ - /* Pause or resume follower index */ + /* Pause follower index */ { - render: (followerIndex) => { - const { name, isPaused } = followerIndex; - const label = isPaused - ? i18n.translate( - 'xpack.crossClusterReplication.followerIndexList.table.actionResumeDescription', - { - defaultMessage: 'Resume replication', - } - ) - : i18n.translate( - 'xpack.crossClusterReplication.followerIndexList.table.actionPauseDescription', - { - defaultMessage: 'Pause replication', - } - ); - - return isPaused ? ( - - {(resumeFollowerIndex) => ( - resumeFollowerIndex(name)} data-test-subj="resumeButton"> - - {label} - - )} - - ) : ( - - {(pauseFollowerIndex) => ( - pauseFollowerIndex(followerIndex)} - data-test-subj="pauseButton" - > - - {label} - - )} - - ); - }, + name: actionI18nTexts.pause, + description: actionI18nTexts.pause, + icon: 'pause', + onClick: (item) => actionHandlers.pauseFollowerIndex(item), + available: (item) => !item.isPaused, + 'data-test-subj': 'pauseButton', + }, + /* Resume follower index */ + { + name: actionI18nTexts.resume, + description: actionI18nTexts.resume, + icon: 'play', + onClick: (item) => actionHandlers.resumeFollowerIndex(item.name), + available: (item) => item.isPaused, + 'data-test-subj': 'resumeButton', }, /* Edit follower index */ { - render: ({ name }) => { - const label = i18n.translate( - 'xpack.crossClusterReplication.followerIndexList.table.actionEditDescription', - { - defaultMessage: 'Edit follower index', - } - ); - - return ( - this.editFollowerIndex(name)} data-test-subj="editButton"> - - {label} - - ); - }, + name: actionI18nTexts.edit, + description: actionI18nTexts.edit, + onClick: (item) => this.editFollowerIndex(item.name), + icon: 'pencil', + 'data-test-subj': 'editButton', }, /* Unfollow leader index */ { - render: ({ name }) => { - const label = i18n.translate( - 'xpack.crossClusterReplication.followerIndexList.table.actionUnfollowDescription', - { - defaultMessage: 'Unfollow leader index', - } - ); - - return ( - - {(unfollowLeaderIndex) => ( - unfollowLeaderIndex(name)} data-test-subj="unfollowButton"> - - {label} - - )} - - ); - }, + name: actionI18nTexts.unfollow, + description: actionI18nTexts.unfollow, + onClick: (item) => actionHandlers.unfollowLeaderIndex(item.name), + icon: 'indexFlush', + 'data-test-subj': 'unfollowButton', }, ]; @@ -321,26 +295,33 @@ export class FollowerIndicesTable extends PureComponent { }; return ( - - ({ - 'data-test-subj': 'row', - })} - cellProps={(item, column) => ({ - 'data-test-subj': `cell-${column.field}`, - })} - data-test-subj="followerIndexListTable" - /> - {this.renderLoading()} - + + {(getActionHandlers) => { + const actionHandlers = getActionHandlers(); + return ( + <> + ({ + 'data-test-subj': 'row', + })} + cellProps={(item, column) => ({ + 'data-test-subj': `cell-${column.field}`, + })} + data-test-subj="followerIndexListTable" + /> + {this.renderLoading()} + + ); + }} + ); } } diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts b/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts index b4307ed125bf2e..c13ef9c4cdba1c 100644 --- a/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts +++ b/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts @@ -5,17 +5,17 @@ */ import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; -import { UiStatsMetricType, METRIC_TYPE } from '@kbn/analytics'; +import { UiCounterMetricType, METRIC_TYPE } from '@kbn/analytics'; import { UIM_APP_NAME } from '../constants'; export { METRIC_TYPE }; // usageCollection is an optional dependency, so we default to a no-op. -export let trackUiMetric = (metricType: UiStatsMetricType, eventName: string) => {}; +export let trackUiMetric = (metricType: UiCounterMetricType, eventName: string) => {}; export function init(usageCollection: UsageCollectionSetup): void { - trackUiMetric = usageCollection.reportUiStats.bind(usageCollection, UIM_APP_NAME); + trackUiMetric = usageCollection.reportUiCounter.bind(usageCollection, UIM_APP_NAME); } /** diff --git a/x-pack/plugins/dashboard_enhanced/jest.config.js b/x-pack/plugins/dashboard_enhanced/jest.config.js new file mode 100644 index 00000000000000..5aeb423383c418 --- /dev/null +++ b/x-pack/plugins/dashboard_enhanced/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/dashboard_enhanced'], +}; diff --git a/x-pack/plugins/dashboard_mode/jest.config.js b/x-pack/plugins/dashboard_mode/jest.config.js new file mode 100644 index 00000000000000..062ad302da7c41 --- /dev/null +++ b/x-pack/plugins/dashboard_mode/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/dashboard_mode'], +}; diff --git a/x-pack/plugins/data_enhanced/common/index.ts b/x-pack/plugins/data_enhanced/common/index.ts index 61767af030803e..7b14a723d78777 100644 --- a/x-pack/plugins/data_enhanced/common/index.ts +++ b/x-pack/plugins/data_enhanced/common/index.ts @@ -10,9 +10,9 @@ export { EqlRequestParams, EqlSearchStrategyRequest, EqlSearchStrategyResponse, - IAsyncSearchRequest, - IEnhancedEsSearchRequest, IAsyncSearchOptions, - doPartialSearch, - throwOnEsError, + pollSearch, + BackgroundSessionSavedObjectAttributes, + BackgroundSessionFindOptions, + BackgroundSessionStatus, } from './search'; diff --git a/x-pack/plugins/data_enhanced/common/search/es_search/es_search_rxjs_utils.ts b/x-pack/plugins/data_enhanced/common/search/es_search/es_search_rxjs_utils.ts deleted file mode 100644 index 8b25a59ed857a6..00000000000000 --- a/x-pack/plugins/data_enhanced/common/search/es_search/es_search_rxjs_utils.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { of, merge, timer, throwError } from 'rxjs'; -import { map, takeWhile, switchMap, expand, mergeMap, tap } from 'rxjs/operators'; -import { ApiResponse } from '@elastic/elasticsearch'; - -import { - doSearch, - IKibanaSearchResponse, - isErrorResponse, -} from '../../../../../../src/plugins/data/common'; -import { AbortError } from '../../../../../../src/plugins/kibana_utils/common'; -import type { IKibanaSearchRequest } from '../../../../../../src/plugins/data/common'; -import type { IAsyncSearchOptions } from '../../../common/search/types'; - -const DEFAULT_POLLING_INTERVAL = 1000; - -export const doPartialSearch = ( - searchMethod: () => Promise, - partialSearchMethod: (id: IKibanaSearchRequest['id']) => Promise, - isCompleteResponse: (response: SearchResponse) => boolean, - getId: (response: SearchResponse) => IKibanaSearchRequest['id'], - requestId: IKibanaSearchRequest['id'], - { abortSignal, pollInterval = DEFAULT_POLLING_INTERVAL }: IAsyncSearchOptions -) => - doSearch( - requestId ? () => partialSearchMethod(requestId) : searchMethod, - abortSignal - ).pipe( - tap((response) => (requestId = getId(response))), - expand(() => timer(pollInterval).pipe(switchMap(() => partialSearchMethod(requestId)))), - takeWhile((response) => !isCompleteResponse(response), true) - ); - -export const normalizeEqlResponse = () => - map((eqlResponse) => ({ - ...eqlResponse, - body: { - ...eqlResponse.body, - ...eqlResponse, - }, - })); - -export const throwOnEsError = () => - mergeMap((r: IKibanaSearchResponse) => - isErrorResponse(r) ? merge(of(r), throwError(new AbortError())) : of(r) - ); diff --git a/x-pack/plugins/data_enhanced/common/search/es_search/index.ts b/x-pack/plugins/data_enhanced/common/search/es_search/index.ts deleted file mode 100644 index bbf9f14ba63c29..00000000000000 --- a/x-pack/plugins/data_enhanced/common/search/es_search/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -export * from './es_search_rxjs_utils'; diff --git a/x-pack/plugins/data_enhanced/common/search/index.ts b/x-pack/plugins/data_enhanced/common/search/index.ts index 44f82386e35c3c..5617a1780c269e 100644 --- a/x-pack/plugins/data_enhanced/common/search/index.ts +++ b/x-pack/plugins/data_enhanced/common/search/index.ts @@ -5,4 +5,5 @@ */ export * from './types'; -export * from './es_search'; +export * from './poll_search'; +export * from './session'; diff --git a/x-pack/plugins/data_enhanced/common/search/poll_search.ts b/x-pack/plugins/data_enhanced/common/search/poll_search.ts new file mode 100644 index 00000000000000..c0e289c691cfda --- /dev/null +++ b/x-pack/plugins/data_enhanced/common/search/poll_search.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { from, NEVER, Observable, timer } from 'rxjs'; +import { expand, finalize, switchMap, takeUntil, takeWhile, tap } from 'rxjs/operators'; +import type { IKibanaSearchResponse } from '../../../../../src/plugins/data/common'; +import { isErrorResponse, isPartialResponse } from '../../../../../src/plugins/data/common'; +import { AbortError, abortSignalToPromise } from '../../../../../src/plugins/kibana_utils/common'; +import type { IAsyncSearchOptions } from './types'; + +export const pollSearch = ( + search: () => Promise, + { pollInterval = 1000, ...options }: IAsyncSearchOptions = {} +): Observable => { + const aborted = options?.abortSignal + ? abortSignalToPromise(options?.abortSignal) + : { promise: NEVER, cleanup: () => {} }; + + return from(search()).pipe( + expand(() => timer(pollInterval).pipe(switchMap(search))), + tap((response) => { + if (isErrorResponse(response)) throw new AbortError(); + }), + takeWhile(isPartialResponse, true), + takeUntil(from(aborted.promise)), + finalize(aborted.cleanup) + ); +}; diff --git a/x-pack/plugins/data_enhanced/common/search/session/index.ts b/x-pack/plugins/data_enhanced/common/search/session/index.ts new file mode 100644 index 00000000000000..ef7f3f1c7f2c4c --- /dev/null +++ b/x-pack/plugins/data_enhanced/common/search/session/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './status'; +export * from './types'; diff --git a/x-pack/plugins/data_enhanced/common/search/session/status.ts b/x-pack/plugins/data_enhanced/common/search/session/status.ts new file mode 100644 index 00000000000000..a83dd389e4f13d --- /dev/null +++ b/x-pack/plugins/data_enhanced/common/search/session/status.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export enum BackgroundSessionStatus { + IN_PROGRESS = 'in_progress', + ERROR = 'error', + COMPLETE = 'complete', + CANCELLED = 'cancelled', + EXPIRED = 'expired', +} diff --git a/x-pack/plugins/data_enhanced/common/search/session/types.ts b/x-pack/plugins/data_enhanced/common/search/session/types.ts new file mode 100644 index 00000000000000..0b82c9160ea1a0 --- /dev/null +++ b/x-pack/plugins/data_enhanced/common/search/session/types.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export interface BackgroundSessionSavedObjectAttributes { + /** + * User-facing session name to be displayed in session management + */ + name: string; + /** + * App that created the session. e.g 'discover' + */ + appId: string; + created: string; + expires: string; + status: string; + urlGeneratorId: string; + initialState: Record; + restoreState: Record; + idMapping: Record; +} + +export interface BackgroundSessionFindOptions { + page?: number; + perPage?: number; + sortField?: string; + sortOrder?: string; + filter?: string; +} diff --git a/x-pack/plugins/data_enhanced/common/search/types.ts b/x-pack/plugins/data_enhanced/common/search/types.ts index 4abf8351114f81..f017462d4050bc 100644 --- a/x-pack/plugins/data_enhanced/common/search/types.ts +++ b/x-pack/plugins/data_enhanced/common/search/types.ts @@ -9,27 +9,12 @@ import { ApiResponse, TransportRequestOptions } from '@elastic/elasticsearch/lib import { ISearchOptions, - IEsSearchRequest, IKibanaSearchRequest, IKibanaSearchResponse, } from '../../../../../src/plugins/data/common'; export const ENHANCED_ES_SEARCH_STRATEGY = 'ese'; -export interface IAsyncSearchRequest extends IEsSearchRequest { - /** - * The ID received from the response from the initial request - */ - id?: string; -} - -export interface IEnhancedEsSearchRequest extends IEsSearchRequest { - /** - * Used to determine whether to use the _rollups_search or a regular search endpoint. - */ - isRollup?: boolean; -} - export const EQL_SEARCH_STRATEGY = 'eql'; export type EqlRequestParams = EqlSearch>; diff --git a/x-pack/plugins/data_enhanced/jest.config.js b/x-pack/plugins/data_enhanced/jest.config.js new file mode 100644 index 00000000000000..b0b1e2d94b40ab --- /dev/null +++ b/x-pack/plugins/data_enhanced/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/data_enhanced'], +}; diff --git a/x-pack/plugins/data_enhanced/kibana.json b/x-pack/plugins/data_enhanced/kibana.json index bc7c8410d3df10..eea0101ec4ed78 100644 --- a/x-pack/plugins/data_enhanced/kibana.json +++ b/x-pack/plugins/data_enhanced/kibana.json @@ -6,6 +6,7 @@ "xpack", "data_enhanced" ], "requiredPlugins": [ + "bfetch", "data", "features" ], diff --git a/x-pack/plugins/data_enhanced/public/plugin.ts b/x-pack/plugins/data_enhanced/public/plugin.ts index 948858a5ed4c18..a3b37e47287e50 100644 --- a/x-pack/plugins/data_enhanced/public/plugin.ts +++ b/x-pack/plugins/data_enhanced/public/plugin.ts @@ -7,6 +7,7 @@ import React from 'react'; import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from 'src/core/public'; import { DataPublicPluginSetup, DataPublicPluginStart } from '../../../../src/plugins/data/public'; +import { BfetchPublicSetup } from '../../../../src/plugins/bfetch/public'; import { setAutocompleteService } from './services'; import { setupKqlQuerySuggestionProvider, KUERY_LANGUAGE_NAME } from './autocomplete'; @@ -16,6 +17,7 @@ import { createConnectedBackgroundSessionIndicator } from './search'; import { ConfigSchema } from '../config'; export interface DataEnhancedSetupDependencies { + bfetch: BfetchPublicSetup; data: DataPublicPluginSetup; } export interface DataEnhancedStartDependencies { @@ -33,7 +35,7 @@ export class DataEnhancedPlugin public setup( core: CoreSetup, - { data }: DataEnhancedSetupDependencies + { bfetch, data }: DataEnhancedSetupDependencies ) { data.autocomplete.addQuerySuggestionProvider( KUERY_LANGUAGE_NAME, @@ -41,6 +43,7 @@ export class DataEnhancedPlugin ); this.enhancedSearchInterceptor = new EnhancedSearchInterceptor({ + bfetch, toasts: core.notifications.toasts, http: core.http, uiSettings: core.uiSettings, @@ -65,6 +68,8 @@ export class DataEnhancedPlugin React.createElement( createConnectedBackgroundSessionIndicator({ sessionService: plugins.data.search.session, + application: core.application, + timeFilter: plugins.data.query.timefilter.timefilter, }) ) ), diff --git a/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts b/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts index 044489d58eb0e4..20b55d9688edba 100644 --- a/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts +++ b/x-pack/plugins/data_enhanced/public/search/search_interceptor.test.ts @@ -9,8 +9,10 @@ import { EnhancedSearchInterceptor } from './search_interceptor'; import { CoreSetup, CoreStart } from 'kibana/public'; import { UI_SETTINGS } from '../../../../../src/plugins/data/common'; import { AbortError } from '../../../../../src/plugins/kibana_utils/public'; -import { SearchTimeoutError } from 'src/plugins/data/public'; +import { ISessionService, SearchTimeoutError, SessionState } from 'src/plugins/data/public'; import { dataPluginMock } from '../../../../../src/plugins/data/public/mocks'; +import { bfetchPluginMock } from '../../../../../src/plugins/bfetch/public/mocks'; +import { BehaviorSubject } from 'rxjs'; const timeTravel = (msToRun = 0) => { jest.advanceTimersByTime(msToRun); @@ -24,12 +26,13 @@ const complete = jest.fn(); let searchInterceptor: EnhancedSearchInterceptor; let mockCoreSetup: MockedKeys; let mockCoreStart: MockedKeys; +let fetchMock: jest.Mock; jest.useFakeTimers(); function mockFetchImplementation(responses: any[]) { let i = 0; - mockCoreSetup.http.fetch.mockImplementation(() => { + fetchMock.mockImplementation(() => { const { time = 0, value = {}, isError = false } = responses[i++]; return new Promise((resolve, reject) => setTimeout(() => { @@ -41,11 +44,19 @@ function mockFetchImplementation(responses: any[]) { describe('EnhancedSearchInterceptor', () => { let mockUsageCollector: any; + let sessionService: jest.Mocked; + let sessionState$: BehaviorSubject; beforeEach(() => { mockCoreSetup = coreMock.createSetup(); mockCoreStart = coreMock.createStart(); + sessionState$ = new BehaviorSubject(SessionState.None); const dataPluginMockStart = dataPluginMock.createStartContract(); + sessionService = { + ...(dataPluginMockStart.search.session as jest.Mocked), + state$: sessionState$, + }; + fetchMock = jest.fn(); mockCoreSetup.uiSettings.get.mockImplementation((name: string) => { switch (name) { @@ -74,13 +85,17 @@ describe('EnhancedSearchInterceptor', () => { ]); }); + const bfetchMock = bfetchPluginMock.createSetupContract(); + bfetchMock.batchedFunction.mockReturnValue(fetchMock); + searchInterceptor = new EnhancedSearchInterceptor({ + bfetch: bfetchMock, toasts: mockCoreSetup.notifications.toasts, startServices: mockPromise as any, http: mockCoreSetup.http, uiSettings: mockCoreSetup.uiSettings, usageCollector: mockUsageCollector, - session: dataPluginMockStart.search.session, + session: sessionService, }); }); @@ -117,7 +132,7 @@ describe('EnhancedSearchInterceptor', () => { { time: 10, value: { - isPartial: false, + isPartial: true, isRunning: true, id: 1, rawResponse: { @@ -137,6 +152,7 @@ describe('EnhancedSearchInterceptor', () => { }, }, ]; + mockFetchImplementation(responses); const response = searchInterceptor.search({}, { pollInterval: 0 }); @@ -175,8 +191,6 @@ describe('EnhancedSearchInterceptor', () => { await timeTravel(10); - expect(next).toHaveBeenCalled(); - expect(next.mock.calls[0][0]).toStrictEqual(responses[0].value); expect(error).toHaveBeenCalled(); expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); }); @@ -212,7 +226,7 @@ describe('EnhancedSearchInterceptor', () => { { time: 10, value: { - isPartial: false, + isPartial: true, isRunning: true, id: 1, }, @@ -247,7 +261,7 @@ describe('EnhancedSearchInterceptor', () => { expect(error).toHaveBeenCalled(); expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); - expect(mockCoreSetup.http.fetch).toHaveBeenCalledTimes(2); + expect(fetchMock).toHaveBeenCalledTimes(2); expect(mockCoreSetup.http.delete).toHaveBeenCalled(); }); @@ -271,7 +285,7 @@ describe('EnhancedSearchInterceptor', () => { expect(error).toHaveBeenCalled(); expect(error.mock.calls[0][0]).toBeInstanceOf(SearchTimeoutError); - expect(mockCoreSetup.http.fetch).toHaveBeenCalled(); + expect(fetchMock).toHaveBeenCalled(); expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); }); @@ -280,7 +294,7 @@ describe('EnhancedSearchInterceptor', () => { { time: 10, value: { - isPartial: false, + isPartial: true, isRunning: true, id: 1, }, @@ -303,7 +317,7 @@ describe('EnhancedSearchInterceptor', () => { expect(next).toHaveBeenCalled(); expect(error).not.toHaveBeenCalled(); - expect(mockCoreSetup.http.fetch).toHaveBeenCalled(); + expect(fetchMock).toHaveBeenCalled(); expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); // Long enough to reach the timeout but not long enough to reach the next response @@ -311,7 +325,7 @@ describe('EnhancedSearchInterceptor', () => { expect(error).toHaveBeenCalled(); expect(error.mock.calls[0][0]).toBeInstanceOf(SearchTimeoutError); - expect(mockCoreSetup.http.fetch).toHaveBeenCalledTimes(2); + expect(fetchMock).toHaveBeenCalledTimes(2); expect(mockCoreSetup.http.delete).toHaveBeenCalled(); }); @@ -320,7 +334,7 @@ describe('EnhancedSearchInterceptor', () => { { time: 10, value: { - isPartial: false, + isPartial: true, isRunning: true, id: 1, }, @@ -345,7 +359,7 @@ describe('EnhancedSearchInterceptor', () => { expect(next).toHaveBeenCalled(); expect(error).not.toHaveBeenCalled(); - expect(mockCoreSetup.http.fetch).toHaveBeenCalled(); + expect(fetchMock).toHaveBeenCalled(); expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); // Long enough to reach the timeout but not long enough to reach the next response @@ -353,9 +367,57 @@ describe('EnhancedSearchInterceptor', () => { expect(error).toHaveBeenCalled(); expect(error.mock.calls[0][0]).toBe(responses[1].value); - expect(mockCoreSetup.http.fetch).toHaveBeenCalledTimes(2); + expect(fetchMock).toHaveBeenCalledTimes(2); expect(mockCoreSetup.http.delete).toHaveBeenCalled(); }); + + test('should NOT DELETE a running SAVED async search on abort', async () => { + const sessionId = 'sessionId'; + sessionService.getSessionId.mockImplementation(() => sessionId); + const responses = [ + { + time: 10, + value: { + isPartial: true, + isRunning: true, + id: 1, + }, + }, + { + time: 300, + value: { + isPartial: false, + isRunning: false, + id: 1, + }, + }, + ]; + mockFetchImplementation(responses); + + const abortController = new AbortController(); + setTimeout(() => abortController.abort(), 250); + + const response = searchInterceptor.search( + {}, + { abortSignal: abortController.signal, pollInterval: 0, sessionId } + ); + response.subscribe({ next, error }); + + await timeTravel(10); + + expect(next).toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + + sessionState$.next(SessionState.BackgroundLoading); + + await timeTravel(240); + + expect(error).toHaveBeenCalled(); + expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); + + expect(fetchMock).toHaveBeenCalledTimes(2); + expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); + }); }); describe('cancelPending', () => { @@ -385,11 +447,113 @@ describe('EnhancedSearchInterceptor', () => { await timeTravel(); - const areAllRequestsAborted = mockCoreSetup.http.fetch.mock.calls.every( - ([{ signal }]) => signal?.aborted - ); + const areAllRequestsAborted = fetchMock.mock.calls.every(([_, signal]) => signal?.aborted); expect(areAllRequestsAborted).toBe(true); expect(mockUsageCollector.trackQueriesCancelled).toBeCalledTimes(1); }); }); + + describe('session', () => { + beforeEach(() => { + const responses = [ + { + time: 10, + value: { + isPartial: true, + isRunning: true, + id: 1, + }, + }, + { + time: 300, + value: { + isPartial: false, + isRunning: false, + id: 1, + }, + }, + ]; + + mockFetchImplementation(responses); + }); + + test('should track searches', async () => { + const sessionId = 'sessionId'; + sessionService.getSessionId.mockImplementation(() => sessionId); + + const untrack = jest.fn(); + sessionService.trackSearch.mockImplementation(() => untrack); + + const response = searchInterceptor.search({}, { pollInterval: 0, sessionId }); + response.subscribe({ next, error }); + await timeTravel(10); + expect(sessionService.trackSearch).toBeCalledTimes(1); + expect(untrack).not.toBeCalled(); + await timeTravel(300); + expect(sessionService.trackSearch).toBeCalledTimes(1); + expect(untrack).toBeCalledTimes(1); + }); + + test('session service should be able to cancel search', async () => { + const sessionId = 'sessionId'; + sessionService.getSessionId.mockImplementation(() => sessionId); + + const untrack = jest.fn(); + sessionService.trackSearch.mockImplementation(() => untrack); + + const response = searchInterceptor.search({}, { pollInterval: 0, sessionId }); + response.subscribe({ next, error }); + await timeTravel(10); + expect(sessionService.trackSearch).toBeCalledTimes(1); + + const abort = sessionService.trackSearch.mock.calls[0][0].abort; + expect(abort).toBeInstanceOf(Function); + + abort(); + + await timeTravel(10); + + expect(error).toHaveBeenCalled(); + expect(error.mock.calls[0][0]).toBeInstanceOf(AbortError); + }); + + test("don't track non current session searches", async () => { + const sessionId = 'sessionId'; + sessionService.getSessionId.mockImplementation(() => sessionId); + + const untrack = jest.fn(); + sessionService.trackSearch.mockImplementation(() => untrack); + + const response1 = searchInterceptor.search( + {}, + { pollInterval: 0, sessionId: 'something different' } + ); + response1.subscribe({ next, error }); + + const response2 = searchInterceptor.search({}, { pollInterval: 0, sessionId: undefined }); + response2.subscribe({ next, error }); + + await timeTravel(10); + expect(sessionService.trackSearch).toBeCalledTimes(0); + }); + + test("don't track if no current session", async () => { + sessionService.getSessionId.mockImplementation(() => undefined); + + const untrack = jest.fn(); + sessionService.trackSearch.mockImplementation(() => untrack); + + const response1 = searchInterceptor.search( + {}, + { pollInterval: 0, sessionId: 'something different' } + ); + response1.subscribe({ next, error }); + + const response2 = searchInterceptor.search({}, { pollInterval: 0, sessionId: undefined }); + response2.subscribe({ next, error }); + + await timeTravel(10); + expect(sessionService.trackSearch).toBeCalledTimes(0); + }); + }); }); diff --git a/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts b/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts index e1bd71caddb4d5..0e87c093d2a8d9 100644 --- a/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts +++ b/x-pack/plugins/data_enhanced/public/search/search_interceptor.ts @@ -4,24 +4,18 @@ * you may not use this file except in compliance with the Elastic License. */ -import { throwError, from, Subscription } from 'rxjs'; -import { tap, takeUntil, finalize, catchError } from 'rxjs/operators'; +import { throwError, Subscription } from 'rxjs'; +import { tap, finalize, catchError, filter, take, skip } from 'rxjs/operators'; import { TimeoutErrorMode, - IEsSearchResponse, SearchInterceptor, SearchInterceptorDeps, UI_SETTINGS, + IKibanaSearchRequest, + SessionState, } from '../../../../../src/plugins/data/public'; -import { AbortError, abortSignalToPromise } from '../../../../../src/plugins/kibana_utils/public'; - -import { - IAsyncSearchRequest, - ENHANCED_ES_SEARCH_STRATEGY, - IAsyncSearchOptions, - doPartialSearch, - throwOnEsError, -} from '../../common'; +import { AbortError } from '../../../../../src/plugins/kibana_utils/common'; +import { ENHANCED_ES_SEARCH_STRATEGY, IAsyncSearchOptions, pollSearch } from '../../common'; export class EnhancedSearchInterceptor extends SearchInterceptor { private uiSettingsSub: Subscription; @@ -60,49 +54,51 @@ export class EnhancedSearchInterceptor extends SearchInterceptor { if (this.deps.usageCollector) this.deps.usageCollector.trackQueriesCancelled(); }; - public search( - request: IAsyncSearchRequest, - { pollInterval = 1000, ...options }: IAsyncSearchOptions = {} - ) { - let { id } = request; - - const { combinedSignal, timeoutSignal, cleanup } = this.setupAbortSignal({ + public search({ id, ...request }: IKibanaSearchRequest, options: IAsyncSearchOptions = {}) { + const { combinedSignal, timeoutSignal, cleanup, abort } = this.setupAbortSignal({ abortSignal: options.abortSignal, timeout: this.searchTimeout, }); - const abortedPromise = abortSignalToPromise(combinedSignal); const strategy = options?.strategy ?? ENHANCED_ES_SEARCH_STRATEGY; + const searchOptions = { ...options, strategy, abortSignal: combinedSignal }; + const search = () => this.runSearch({ id, ...request }, searchOptions); this.pendingCount$.next(this.pendingCount$.getValue() + 1); + const isCurrentSession = () => + !!options.sessionId && options.sessionId === this.deps.session.getSessionId(); - return doPartialSearch( - () => this.runSearch(request, { ...options, strategy, abortSignal: combinedSignal }), - (requestId) => - this.runSearch( - { ...request, id: requestId }, - { ...options, strategy, abortSignal: combinedSignal } - ), - (r) => !r.isRunning, - (response) => response.id, - id, - { pollInterval } - ).pipe( - tap((r) => { - id = r.id ?? id; - }), - throwOnEsError(), - takeUntil(from(abortedPromise.promise)), - catchError((e: AbortError) => { - if (id) { - this.deps.http.delete(`/internal/search/${strategy}/${id}`); - } + const untrackSearch = isCurrentSession() && this.deps.session.trackSearch({ abort }); + + // track if this search's session will be send to background + // if yes, then we don't need to cancel this search when it is aborted + let isSavedToBackground = false; + const savedToBackgroundSub = + isCurrentSession() && + this.deps.session.state$ + .pipe( + skip(1), // ignore any state, we are only interested in transition x -> BackgroundLoading + filter((state) => isCurrentSession() && state === SessionState.BackgroundLoading), + take(1) + ) + .subscribe(() => { + isSavedToBackground = true; + }); - return throwError(this.handleSearchError(e, request, timeoutSignal, options)); + return pollSearch(search, { ...options, abortSignal: combinedSignal }).pipe( + tap((response) => (id = response.id)), + catchError((e: AbortError) => { + if (id && !isSavedToBackground) this.deps.http.delete(`/internal/search/${strategy}/${id}`); + return throwError(this.handleSearchError(e, timeoutSignal, options)); }), finalize(() => { this.pendingCount$.next(this.pendingCount$.getValue() - 1); cleanup(); - abortedPromise.cleanup(); + if (untrackSearch && isCurrentSession()) { + untrackSearch(); + } + if (savedToBackgroundSub) { + savedToBackgroundSub.unsubscribe(); + } }) ); } diff --git a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.stories.tsx b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.stories.tsx index 9cef76c62279c1..4a6a852be755b5 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.stories.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.stories.tsx @@ -7,24 +7,33 @@ import React from 'react'; import { storiesOf } from '@storybook/react'; import { BackgroundSessionIndicator } from './background_session_indicator'; -import { BackgroundSessionViewState } from '../connected_background_session_indicator'; +import { SessionState } from '../../../../../../../src/plugins/data/public'; storiesOf('components/BackgroundSessionIndicator', module).add('default', () => ( <>
- +
- +
- +
- +
- + +
+
+
)); diff --git a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.test.tsx b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.test.tsx index 5b7ab2e4f9b1f0..b7d342300f3119 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.test.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.test.tsx @@ -8,8 +8,8 @@ import React, { ReactNode } from 'react'; import { screen, render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { BackgroundSessionIndicator } from './background_session_indicator'; -import { BackgroundSessionViewState } from '../connected_background_session_indicator'; import { IntlProvider } from 'react-intl'; +import { SessionState } from '../../../../../../../src/plugins/data/public'; function Container({ children }: { children?: ReactNode }) { return {children}; @@ -19,7 +19,7 @@ test('Loading state', async () => { const onCancel = jest.fn(); render( - + ); @@ -33,10 +33,7 @@ test('Completed state', async () => { const onSave = jest.fn(); render( - + ); @@ -50,10 +47,7 @@ test('Loading in the background state', async () => { const onCancel = jest.fn(); render( - + ); @@ -64,30 +58,26 @@ test('Loading in the background state', async () => { }); test('BackgroundCompleted state', async () => { - const onViewSession = jest.fn(); render( ); await userEvent.click(screen.getByLabelText('Results loaded in the background')); - await userEvent.click(screen.getByText('View background sessions')); - - expect(onViewSession).toBeCalled(); + expect(screen.getByRole('link', { name: 'View background sessions' }).getAttribute('href')).toBe( + '__link__' + ); }); test('Restored state', async () => { const onRefresh = jest.fn(); render( - + ); @@ -96,3 +86,27 @@ test('Restored state', async () => { expect(onRefresh).toBeCalled(); }); + +test('Canceled state', async () => { + const onRefresh = jest.fn(); + render( + + + + ); + + await userEvent.click(screen.getByLabelText('Canceled')); + await userEvent.click(screen.getByText('Refresh')); + + expect(onRefresh).toBeCalled(); +}); + +test('Disabled state', async () => { + render( + + + + ); + + expect(screen.getByTestId('backgroundSessionIndicator').querySelector('button')).toBeDisabled(); +}); diff --git a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.tsx b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.tsx index b55bd6b6553716..ce77686c4f3c10 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/background_session_indicator/background_session_indicator.tsx @@ -19,22 +19,29 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { BackgroundSessionViewState } from '../connected_background_session_indicator'; + import './background_session_indicator.scss'; +import { SessionState } from '../../../../../../../src/plugins/data/public/'; export interface BackgroundSessionIndicatorProps { - state: BackgroundSessionViewState; + state: SessionState; onContinueInBackground?: () => void; onCancel?: () => void; - onViewBackgroundSessions?: () => void; + viewBackgroundSessionsLink?: string; onSaveResults?: () => void; onRefresh?: () => void; + disabled?: boolean; + disabledReasonText?: string; } type ActionButtonProps = BackgroundSessionIndicatorProps & { buttonProps: EuiButtonEmptyProps }; const CancelButton = ({ onCancel = () => {}, buttonProps = {} }: ActionButtonProps) => ( - + {}, buttonProps = {}, }: ActionButtonProps) => ( - + {}, + viewBackgroundSessionsLink = 'management', buttonProps = {}, }: ActionButtonProps) => ( - // TODO: make this a link - + {}, buttonProps = {} }: ActionButtonProps) => ( - + {}, buttonProps = {} }: ActionButtonP ); const SaveButton = ({ onSaveResults = () => {}, buttonProps = {} }: ActionButtonProps) => ( - + {}, buttonProps = {} }: ActionButton ); const backgroundSessionIndicatorViewStateToProps: { - [state in BackgroundSessionViewState]: { - button: Pick & { tooltipText: string }; + [state in SessionState]: { + button: Pick & { + tooltipText: string; + }; popover: { text: string; primaryAction?: React.ComponentType; secondaryAction?: React.ComponentType; }; - }; + } | null; } = { - [BackgroundSessionViewState.Loading]: { + [SessionState.None]: null, + [SessionState.Loading]: { button: { color: 'subdued', iconType: 'clock', @@ -116,7 +141,7 @@ const backgroundSessionIndicatorViewStateToProps: { secondaryAction: ContinueInBackgroundButton, }, }, - [BackgroundSessionViewState.Completed]: { + [SessionState.Completed]: { button: { color: 'subdued', iconType: 'checkInCircleFilled', @@ -141,7 +166,7 @@ const backgroundSessionIndicatorViewStateToProps: { secondaryAction: ViewBackgroundSessionsButton, }, }, - [BackgroundSessionViewState.BackgroundLoading]: { + [SessionState.BackgroundLoading]: { button: { iconType: EuiLoadingSpinner, 'aria-label': i18n.translate( @@ -165,7 +190,7 @@ const backgroundSessionIndicatorViewStateToProps: { secondaryAction: ViewBackgroundSessionsButton, }, }, - [BackgroundSessionViewState.BackgroundCompleted]: { + [SessionState.BackgroundCompleted]: { button: { color: 'success', iconType: 'checkInCircleFilled', @@ -192,7 +217,7 @@ const backgroundSessionIndicatorViewStateToProps: { primaryAction: ViewBackgroundSessionsButton, }, }, - [BackgroundSessionViewState.Restored]: { + [SessionState.Restored]: { button: { color: 'warning', iconType: 'refresh', @@ -217,6 +242,25 @@ const backgroundSessionIndicatorViewStateToProps: { secondaryAction: ViewBackgroundSessionsButton, }, }, + [SessionState.Canceled]: { + button: { + color: 'subdued', + iconType: 'refresh', + 'aria-label': i18n.translate('xpack.data.backgroundSessionIndicator.canceledIconAriaLabel', { + defaultMessage: 'Canceled', + }), + tooltipText: i18n.translate('xpack.data.backgroundSessionIndicator.canceledTooltipText', { + defaultMessage: 'Search was canceled', + }), + }, + popover: { + text: i18n.translate('xpack.data.backgroundSessionIndicator.canceledText', { + defaultMessage: 'Search was canceled', + }), + primaryAction: RefreshButton, + secondaryAction: ViewBackgroundSessionsButton, + }, + }, }; const VerticalDivider: React.FC = () => ( @@ -228,7 +272,9 @@ export const BackgroundSessionIndicator: React.FC setIsPopoverOpen((isOpen) => !isOpen); const closePopover = () => setIsPopoverOpen(false); - const { button, popover } = backgroundSessionIndicatorViewStateToProps[props.state]; + if (!backgroundSessionIndicatorViewStateToProps[props.state]) return null; + + const { button, popover } = backgroundSessionIndicatorViewStateToProps[props.state]!; return ( + } @@ -255,6 +303,7 @@ export const BackgroundSessionIndicator: React.FC diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.test.tsx b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.test.tsx index d97d10512783c7..e08773c6a8a760 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.test.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.test.tsx @@ -5,17 +5,37 @@ */ import React from 'react'; -import { render, waitFor } from '@testing-library/react'; +import { render, waitFor, screen, act } from '@testing-library/react'; import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks'; import { createConnectedBackgroundSessionIndicator } from './connected_background_session_indicator'; import { BehaviorSubject } from 'rxjs'; -import { ISessionService } from '../../../../../../../src/plugins/data/public'; +import { + ISessionService, + RefreshInterval, + SessionState, + TimefilterContract, +} from '../../../../../../../src/plugins/data/public'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; -const sessionService = dataPluginMock.createStartContract().search - .session as jest.Mocked; +const coreStart = coreMock.createStart(); +const dataStart = dataPluginMock.createStartContract(); +const sessionService = dataStart.search.session as jest.Mocked; + +const refreshInterval$ = new BehaviorSubject({ value: 0, pause: true }); +const timeFilter = dataStart.query.timefilter.timefilter as jest.Mocked; +timeFilter.getRefreshIntervalUpdate$.mockImplementation(() => refreshInterval$); +timeFilter.getRefreshInterval.mockImplementation(() => refreshInterval$.getValue()); + +beforeEach(() => { + refreshInterval$.next({ value: 0, pause: true }); +}); test("shouldn't show indicator in case no active search session", async () => { - const BackgroundSessionIndicator = createConnectedBackgroundSessionIndicator({ sessionService }); + const BackgroundSessionIndicator = createConnectedBackgroundSessionIndicator({ + sessionService, + application: coreStart.application, + timeFilter, + }); const { getByTestId, container } = render(); // make sure `backgroundSessionIndicator` isn't appearing after some time (lazy-loading) @@ -26,11 +46,36 @@ test("shouldn't show indicator in case no active search session", async () => { }); test('should show indicator in case there is an active search session', async () => { - const session$ = new BehaviorSubject('session_id'); - sessionService.getSession$.mockImplementation(() => session$); - sessionService.getSessionId.mockImplementation(() => session$.getValue()); - const BackgroundSessionIndicator = createConnectedBackgroundSessionIndicator({ sessionService }); + const state$ = new BehaviorSubject(SessionState.Loading); + const BackgroundSessionIndicator = createConnectedBackgroundSessionIndicator({ + sessionService: { ...sessionService, state$ }, + application: coreStart.application, + timeFilter, + }); const { getByTestId } = render(); await waitFor(() => getByTestId('backgroundSessionIndicator')); }); + +test('should be disabled during auto-refresh', async () => { + const state$ = new BehaviorSubject(SessionState.Loading); + const BackgroundSessionIndicator = createConnectedBackgroundSessionIndicator({ + sessionService: { ...sessionService, state$ }, + application: coreStart.application, + timeFilter, + }); + + render(); + + await waitFor(() => screen.getByTestId('backgroundSessionIndicator')); + + expect( + screen.getByTestId('backgroundSessionIndicator').querySelector('button') + ).not.toBeDisabled(); + + act(() => { + refreshInterval$.next({ value: 0, pause: false }); + }); + + expect(screen.getByTestId('backgroundSessionIndicator').querySelector('button')).toBeDisabled(); +}); diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.tsx b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.tsx index d097a1aecb66af..b80295d87d2023 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.tsx +++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/connected_background_session_indicator.tsx @@ -5,28 +5,67 @@ */ import React from 'react'; +import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators'; import useObservable from 'react-use/lib/useObservable'; -import { distinctUntilChanged, map } from 'rxjs/operators'; +import { i18n } from '@kbn/i18n'; import { BackgroundSessionIndicator } from '../background_session_indicator'; -import { ISessionService } from '../../../../../../../src/plugins/data/public/'; -import { BackgroundSessionViewState } from './background_session_view_state'; +import { ISessionService, TimefilterContract } from '../../../../../../../src/plugins/data/public/'; +import { RedirectAppLinks } from '../../../../../../../src/plugins/kibana_react/public'; +import { ApplicationStart } from '../../../../../../../src/core/public'; export interface BackgroundSessionIndicatorDeps { sessionService: ISessionService; + timeFilter: TimefilterContract; + application: ApplicationStart; } export const createConnectedBackgroundSessionIndicator = ({ sessionService, + application, + timeFilter, }: BackgroundSessionIndicatorDeps): React.FC => { - const sessionId$ = sessionService.getSession$(); - const hasActiveSession$ = sessionId$.pipe( - map((sessionId) => !!sessionId), - distinctUntilChanged() - ); + const isAutoRefreshEnabled = () => !timeFilter.getRefreshInterval().pause; + const isAutoRefreshEnabled$ = timeFilter + .getRefreshIntervalUpdate$() + .pipe(map(isAutoRefreshEnabled), distinctUntilChanged()); return () => { - const isSession = useObservable(hasActiveSession$, !!sessionService.getSessionId()); - if (!isSession) return null; - return ; + const state = useObservable(sessionService.state$.pipe(debounceTime(500))); + const autoRefreshEnabled = useObservable(isAutoRefreshEnabled$, isAutoRefreshEnabled()); + let disabled = false; + let disabledReasonText: string = ''; + + if (autoRefreshEnabled) { + disabled = true; + disabledReasonText = i18n.translate( + 'xpack.data.backgroundSessionIndicator.disabledDueToAutoRefreshMessage', + { + defaultMessage: 'Send to background is not available when auto refresh is enabled.', + } + ); + } + + if (!state) return null; + return ( + + { + sessionService.save(); + }} + onSaveResults={() => { + sessionService.save(); + }} + onRefresh={() => { + sessionService.refresh(); + }} + onCancel={() => { + sessionService.cancel(); + }} + disabled={disabled} + disabledReasonText={disabledReasonText} + /> + + ); }; }; diff --git a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/index.ts b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/index.ts index adbb6edbbfcf3f..223a0537129df5 100644 --- a/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/index.ts +++ b/x-pack/plugins/data_enhanced/public/search/ui/connected_background_session_indicator/index.ts @@ -8,4 +8,3 @@ export { BackgroundSessionIndicatorDeps, createConnectedBackgroundSessionIndicator, } from './connected_background_session_indicator'; -export { BackgroundSessionViewState } from './background_session_view_state'; diff --git a/x-pack/plugins/data_enhanced/server/plugin.ts b/x-pack/plugins/data_enhanced/server/plugin.ts index ad21216bb7035f..d0757ca5111b6e 100644 --- a/x-pack/plugins/data_enhanced/server/plugin.ts +++ b/x-pack/plugins/data_enhanced/server/plugin.ts @@ -4,22 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ -import { - PluginInitializerContext, - CoreSetup, - CoreStart, - Plugin, - Logger, -} from '../../../../src/core/server'; +import { CoreSetup, CoreStart, Logger, Plugin, PluginInitializerContext } from 'kibana/server'; import { PluginSetup as DataPluginSetup, PluginStart as DataPluginStart, usageProvider, } from '../../../../src/plugins/data/server'; -import { enhancedEsSearchStrategyProvider, eqlSearchStrategyProvider } from './search'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/server'; -import { getUiSettings } from './ui_settings'; import { ENHANCED_ES_SEARCH_STRATEGY, EQL_SEARCH_STRATEGY } from '../common'; +import { registerSessionRoutes } from './routes'; +import { backgroundSessionMapping } from './saved_objects'; +import { + BackgroundSessionService, + enhancedEsSearchStrategyProvider, + eqlSearchStrategyProvider, +} from './search'; +import { getUiSettings } from './ui_settings'; interface SetupDependencies { data: DataPluginSetup; @@ -28,6 +28,7 @@ interface SetupDependencies { export class EnhancedDataServerPlugin implements Plugin { private readonly logger: Logger; + private sessionService!: BackgroundSessionService; constructor(private initializerContext: PluginInitializerContext) { this.logger = initializerContext.logger.get('data_enhanced'); @@ -37,6 +38,7 @@ export class EnhancedDataServerPlugin implements Plugin; +} diff --git a/src/plugins/data/server/search/routes/session.test.ts b/x-pack/plugins/data_enhanced/server/routes/session.test.ts similarity index 78% rename from src/plugins/data/server/search/routes/session.test.ts rename to x-pack/plugins/data_enhanced/server/routes/session.test.ts index f697f6d5a5c2bd..313dfb1e0f1f07 100644 --- a/src/plugins/data/server/search/routes/session.test.ts +++ b/x-pack/plugins/data_enhanced/server/routes/session.test.ts @@ -1,27 +1,14 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import type { MockedKeys } from '@kbn/utility-types/jest'; import type { CoreSetup, RequestHandlerContext } from 'kibana/server'; -import type { DataPluginStart } from '../../plugin'; -import { coreMock, httpServerMock } from '../../../../../../src/core/server/mocks'; -import { createSearchRequestHandlerContext } from '../mocks'; +import { coreMock, httpServerMock } from '../../../../../src/core/server/mocks'; +import { PluginStart as DataPluginStart } from '../../../../../src/plugins/data/server'; +import { createSearchRequestHandlerContext } from './mocks'; import { registerSessionRoutes } from './session'; describe('registerSessionRoutes', () => { diff --git a/src/plugins/data/server/search/routes/session.ts b/x-pack/plugins/data_enhanced/server/routes/session.ts similarity index 83% rename from src/plugins/data/server/search/routes/session.ts rename to x-pack/plugins/data_enhanced/server/routes/session.ts index 93f07ecfb92ff6..b6f1187f497816 100644 --- a/src/plugins/data/server/search/routes/session.ts +++ b/x-pack/plugins/data_enhanced/server/routes/session.ts @@ -1,20 +1,7 @@ /* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. */ import { schema } from '@kbn/config-schema'; @@ -28,19 +15,31 @@ export function registerSessionRoutes(router: IRouter): void { body: schema.object({ sessionId: schema.string(), name: schema.string(), + appId: schema.string(), expires: schema.maybe(schema.string()), + urlGeneratorId: schema.string(), initialState: schema.maybe(schema.object({}, { unknowns: 'allow' })), restoreState: schema.maybe(schema.object({}, { unknowns: 'allow' })), }), }, }, async (context, request, res) => { - const { sessionId, name, expires, initialState, restoreState } = request.body; + const { + sessionId, + name, + expires, + initialState, + restoreState, + appId, + urlGeneratorId, + } = request.body; try { const response = await context.search!.session.save(sessionId, { name, + appId, expires, + urlGeneratorId, initialState, restoreState, }); diff --git a/x-pack/plugins/data_enhanced/server/saved_objects/background_session.ts b/x-pack/plugins/data_enhanced/server/saved_objects/background_session.ts new file mode 100644 index 00000000000000..995e6731447970 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/saved_objects/background_session.ts @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SavedObjectsType } from 'kibana/server'; + +export const BACKGROUND_SESSION_TYPE = 'background-session'; + +export const backgroundSessionMapping: SavedObjectsType = { + name: BACKGROUND_SESSION_TYPE, + namespaceType: 'single', + hidden: true, + mappings: { + properties: { + sessionId: { + type: 'keyword', + }, + name: { + type: 'keyword', + }, + created: { + type: 'date', + }, + expires: { + type: 'date', + }, + status: { + type: 'keyword', + }, + appId: { + type: 'keyword', + }, + urlGeneratorId: { + type: 'keyword', + }, + initialState: { + type: 'object', + enabled: false, + }, + restoreState: { + type: 'object', + enabled: false, + }, + idMapping: { + type: 'object', + enabled: false, + }, + }, + }, +}; diff --git a/x-pack/plugins/data_enhanced/server/saved_objects/index.ts b/x-pack/plugins/data_enhanced/server/saved_objects/index.ts new file mode 100644 index 00000000000000..4e07fe7117eaaa --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/saved_objects/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './background_session'; diff --git a/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.test.ts b/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.test.ts index cd94d91db8c5ec..f2d7725954a262 100644 --- a/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.test.ts +++ b/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.test.ts @@ -178,7 +178,7 @@ describe('EQL search strategy', () => { expect(requestOptions).toEqual( expect.objectContaining({ - max_retries: 2, + maxRetries: 2, ignore: [300], }) ); diff --git a/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.ts b/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.ts index 7b3d0db450b044..26325afc378f7c 100644 --- a/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.ts +++ b/x-pack/plugins/data_enhanced/server/search/eql_search_strategy.ts @@ -4,21 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ +import { tap } from 'rxjs/operators'; import type { Logger } from 'kibana/server'; -import type { ApiResponse } from '@elastic/elasticsearch'; - -import { search } from '../../../../../src/plugins/data/server'; -import { - doPartialSearch, - normalizeEqlResponse, -} from '../../common/search/es_search/es_search_rxjs_utils'; -import { getAsyncOptions, getDefaultSearchParams } from './get_default_search_params'; - -import type { ISearchStrategy, IEsRawSearchResponse } from '../../../../../src/plugins/data/server'; +import type { ISearchStrategy } from '../../../../../src/plugins/data/server'; import type { EqlSearchStrategyRequest, EqlSearchStrategyResponse, -} from '../../common/search/types'; + IAsyncSearchOptions, +} from '../../common'; +import { getDefaultSearchParams, shimAbortSignal } from '../../../../../src/plugins/data/server'; +import { pollSearch } from '../../common'; +import { getDefaultAsyncGetParams, getIgnoreThrottled } from './request_utils'; +import { toEqlKibanaSearchResponse } from './response_utils'; +import { EqlSearchResponse } from './types'; export const eqlSearchStrategyProvider = ( logger: Logger @@ -26,48 +24,37 @@ export const eqlSearchStrategyProvider = ( return { cancel: async (id, options, { esClient }) => { logger.debug(`_eql/delete ${id}`); - await esClient.asCurrentUser.eql.delete({ - id, - }); + await esClient.asCurrentUser.eql.delete({ id }); }, - search: (request, options, { esClient, uiSettingsClient }) => { - logger.debug(`_eql/search ${JSON.stringify(request.params) || request.id}`); + search: ({ id, ...request }, options: IAsyncSearchOptions, { esClient, uiSettingsClient }) => { + logger.debug(`_eql/search ${JSON.stringify(request.params) || id}`); - const { utils } = search.esSearch; - const asyncOptions = getAsyncOptions(); - const requestOptions = utils.toSnakeCase({ ...request.options }); const client = esClient.asCurrentUser.eql; - return doPartialSearch>( - async () => { - const { ignoreThrottled, ignoreUnavailable } = await getDefaultSearchParams( - uiSettingsClient - ); - - return client.search( - utils.toSnakeCase({ - ignoreThrottled, - ignoreUnavailable, - ...asyncOptions, + const search = async () => { + const { track_total_hits: _, ...defaultParams } = await getDefaultSearchParams( + uiSettingsClient + ); + const params = id + ? getDefaultAsyncGetParams() + : { + ...(await getIgnoreThrottled(uiSettingsClient)), + ...defaultParams, + ...getDefaultAsyncGetParams(), ...request.params, - }) as EqlSearchStrategyRequest['params'], - requestOptions - ); - }, - (id) => - client.get( - { - id: id!, - ...utils.toSnakeCase(asyncOptions), - }, - requestOptions - ), - (response) => !response.body.is_running, - (response) => response.body.id, - request.id, - options - ).pipe(normalizeEqlResponse(), utils.toKibanaSearchResponse()); + }; + const promise = id + ? client.get({ ...params, id }, request.options) + : client.search( + params as EqlSearchStrategyRequest['params'], + request.options + ); + const response = await shimAbortSignal(promise, options.abortSignal); + return toEqlKibanaSearchResponse(response); + }; + + return pollSearch(search, options).pipe(tap((response) => (id = response.id))); }, }; }; diff --git a/x-pack/plugins/data_enhanced/server/search/es_search_strategy.ts b/x-pack/plugins/data_enhanced/server/search/es_search_strategy.ts index 2070610ceb20e4..e1c7d7b5fc22e2 100644 --- a/x-pack/plugins/data_enhanced/server/search/es_search_strategy.ts +++ b/x-pack/plugins/data_enhanced/server/search/es_search_strategy.ts @@ -4,86 +4,67 @@ * you may not use this file except in compliance with the Elastic License. */ +import type { Observable } from 'rxjs'; +import type { Logger, SharedGlobalConfig } from 'kibana/server'; +import { first, tap } from 'rxjs/operators'; +import { SearchResponse } from 'elasticsearch'; import { from } from 'rxjs'; -import { first, map } from 'rxjs/operators'; -import { Observable } from 'rxjs'; - -import type { SearchResponse } from 'elasticsearch'; -import type { ApiResponse } from '@elastic/elasticsearch'; - -import { - getShardTimeout, - shimHitsTotal, - search, - SearchStrategyDependencies, -} from '../../../../../src/plugins/data/server'; -import { doPartialSearch } from '../../common/search/es_search/es_search_rxjs_utils'; -import { getDefaultSearchParams, getAsyncOptions } from './get_default_search_params'; - -import type { SharedGlobalConfig, Logger } from '../../../../../src/core/server'; - import type { + IEsSearchRequest, + IEsSearchResponse, + ISearchOptions, ISearchStrategy, + SearchStrategyDependencies, SearchUsage, - IEsRawSearchResponse, - ISearchOptions, - IEsSearchResponse, } from '../../../../../src/plugins/data/server'; - -import type { IEnhancedEsSearchRequest } from '../../common'; - -const { utils } = search.esSearch; - -interface IEsRawAsyncSearchResponse extends IEsRawSearchResponse { - response: SearchResponse; -} +import { + getDefaultSearchParams, + getShardTimeout, + getTotalLoaded, + searchUsageObserver, + shimAbortSignal, +} from '../../../../../src/plugins/data/server'; +import type { IAsyncSearchOptions } from '../../common'; +import { pollSearch } from '../../common'; +import { + getDefaultAsyncGetParams, + getDefaultAsyncSubmitParams, + getIgnoreThrottled, +} from './request_utils'; +import { toAsyncKibanaSearchResponse } from './response_utils'; +import { AsyncSearchResponse } from './types'; export const enhancedEsSearchStrategyProvider = ( config$: Observable, logger: Logger, usage?: SearchUsage -): ISearchStrategy => { +): ISearchStrategy => { function asyncSearch( - request: IEnhancedEsSearchRequest, - options: ISearchOptions, + { id, ...request }: IEsSearchRequest, + options: IAsyncSearchOptions, { esClient, uiSettingsClient }: SearchStrategyDependencies ) { - const asyncOptions = getAsyncOptions(); const client = esClient.asCurrentUser.asyncSearch; - return doPartialSearch>( - async () => - client.submit( - utils.toSnakeCase({ - ...(await getDefaultSearchParams(uiSettingsClient)), - batchedReduceSize: 64, - keepOnCompletion: !!options.sessionId, // Always return an ID, even if the request completes quickly - ...asyncOptions, - ...request.params, - }) - ), - (id) => - client.get({ - id: id!, - ...utils.toSnakeCase({ ...asyncOptions }), - }), - (response) => !response.body.is_running, - (response) => response.body.id, - request.id, - options - ).pipe( - utils.toKibanaSearchResponse(), - map((response) => ({ - ...response, - rawResponse: shimHitsTotal(response.rawResponse.response!), - })), - utils.trackSearchStatus(logger, usage), - utils.includeTotalLoaded() + const search = async () => { + const params = id + ? getDefaultAsyncGetParams() + : { ...(await getDefaultAsyncSubmitParams(uiSettingsClient, options)), ...request.params }; + const promise = id + ? client.get({ ...params, id }) + : client.submit(params); + const { body } = await shimAbortSignal(promise, options.abortSignal); + return toAsyncKibanaSearchResponse(body); + }; + + return pollSearch(search, options).pipe( + tap((response) => (id = response.id)), + tap(searchUsageObserver(logger, usage)) ); } async function rollupSearch( - request: IEnhancedEsSearchRequest, + request: IEsSearchRequest, options: ISearchOptions, { esClient, uiSettingsClient }: SearchStrategyDependencies ): Promise { @@ -91,11 +72,12 @@ export const enhancedEsSearchStrategyProvider = ( const { body, index, ...params } = request.params!; const method = 'POST'; const path = encodeURI(`/${index}/_rollup_search`); - const querystring = utils.toSnakeCase({ + const querystring = { ...getShardTimeout(config), + ...(await getIgnoreThrottled(uiSettingsClient)), ...(await getDefaultSearchParams(uiSettingsClient)), ...params, - }); + }; const promise = esClient.asCurrentUser.transport.request({ method, @@ -104,17 +86,16 @@ export const enhancedEsSearchStrategyProvider = ( querystring, }); - const esResponse = await utils.shimAbortSignal(promise, options?.abortSignal); - + const esResponse = await shimAbortSignal(promise, options?.abortSignal); const response = esResponse.body as SearchResponse; return { rawResponse: response, - ...utils.getTotalLoaded(response._shards), + ...getTotalLoaded(response), }; } return { - search: (request, options, deps) => { + search: (request, options: IAsyncSearchOptions, deps) => { logger.debug(`search ${JSON.stringify(request.params) || request.id}`); return request.indexType !== 'rollup' diff --git a/x-pack/plugins/data_enhanced/server/search/get_default_search_params.ts b/x-pack/plugins/data_enhanced/server/search/get_default_search_params.ts deleted file mode 100644 index fdda78798808f8..00000000000000 --- a/x-pack/plugins/data_enhanced/server/search/get_default_search_params.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { IUiSettingsClient } from 'src/core/server'; -import { UI_SETTINGS } from '../../../../../src/plugins/data/common'; - -import { getDefaultSearchParams as getBaseSearchParams } from '../../../../../src/plugins/data/server'; - -/** - @internal - */ -export async function getDefaultSearchParams(uiSettingsClient: IUiSettingsClient) { - const ignoreThrottled = !(await uiSettingsClient.get(UI_SETTINGS.SEARCH_INCLUDE_FROZEN)); - - return { - ignoreThrottled, - ...(await getBaseSearchParams(uiSettingsClient)), - }; -} - -/** - @internal - */ -export const getAsyncOptions = (): { - waitForCompletionTimeout: string; - keepAlive: string; -} => ({ - waitForCompletionTimeout: '100ms', // Wait up to 100ms for the response to return - keepAlive: '1m', // Extend the TTL for this search request by one minute, -}); diff --git a/x-pack/plugins/data_enhanced/server/search/index.ts b/x-pack/plugins/data_enhanced/server/search/index.ts index 64a28cea358e53..67369ef829752f 100644 --- a/x-pack/plugins/data_enhanced/server/search/index.ts +++ b/x-pack/plugins/data_enhanced/server/search/index.ts @@ -6,3 +6,4 @@ export { enhancedEsSearchStrategyProvider } from './es_search_strategy'; export { eqlSearchStrategyProvider } from './eql_search_strategy'; +export * from './session'; diff --git a/x-pack/plugins/data_enhanced/server/search/request_utils.ts b/x-pack/plugins/data_enhanced/server/search/request_utils.ts new file mode 100644 index 00000000000000..f54ab2199c9054 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/request_utils.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { IUiSettingsClient } from 'kibana/server'; +import { + AsyncSearchGet, + AsyncSearchSubmit, + Search, +} from '@elastic/elasticsearch/api/requestParams'; +import { ISearchOptions, UI_SETTINGS } from '../../../../../src/plugins/data/common'; +import { getDefaultSearchParams } from '../../../../../src/plugins/data/server'; + +/** + * @internal + */ +export async function getIgnoreThrottled( + uiSettingsClient: IUiSettingsClient +): Promise> { + const includeFrozen = await uiSettingsClient.get(UI_SETTINGS.SEARCH_INCLUDE_FROZEN); + return { ignore_throttled: !includeFrozen }; +} + +/** + @internal + */ +export async function getDefaultAsyncSubmitParams( + uiSettingsClient: IUiSettingsClient, + options: ISearchOptions +): Promise< + Pick< + AsyncSearchSubmit, + | 'batched_reduce_size' + | 'keep_alive' + | 'wait_for_completion_timeout' + | 'ignore_throttled' + | 'max_concurrent_shard_requests' + | 'ignore_unavailable' + | 'track_total_hits' + | 'keep_on_completion' + > +> { + return { + batched_reduce_size: 64, + keep_on_completion: !!options.sessionId, // Always return an ID, even if the request completes quickly + ...getDefaultAsyncGetParams(), + ...(await getIgnoreThrottled(uiSettingsClient)), + ...(await getDefaultSearchParams(uiSettingsClient)), + }; +} + +/** + @internal + */ +export function getDefaultAsyncGetParams(): Pick< + AsyncSearchGet, + 'keep_alive' | 'wait_for_completion_timeout' +> { + return { + keep_alive: '1m', // Extend the TTL for this search request by one minute + wait_for_completion_timeout: '100ms', // Wait up to 100ms for the response to return + }; +} diff --git a/x-pack/plugins/data_enhanced/server/search/response_utils.ts b/x-pack/plugins/data_enhanced/server/search/response_utils.ts new file mode 100644 index 00000000000000..716e7d72d80e70 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/response_utils.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ApiResponse } from '@elastic/elasticsearch'; +import { getTotalLoaded } from '../../../../../src/plugins/data/server'; +import { AsyncSearchResponse, EqlSearchResponse } from './types'; +import { EqlSearchStrategyResponse } from '../../common/search'; + +/** + * Get the Kibana representation of an async search response (see `IKibanaSearchResponse`). + */ +export function toAsyncKibanaSearchResponse(response: AsyncSearchResponse) { + return { + id: response.id, + rawResponse: response.response, + isPartial: response.is_partial, + isRunning: response.is_running, + ...getTotalLoaded(response.response), + }; +} + +/** + * Get the Kibana representation of an EQL search response (see `IKibanaSearchResponse`). + * (EQL does not provide _shard info, so total/loaded cannot be calculated.) + */ +export function toEqlKibanaSearchResponse( + response: ApiResponse +): EqlSearchStrategyResponse { + return { + id: response.body.id, + rawResponse: response, + isPartial: response.body.is_partial, + isRunning: response.body.is_running, + }; +} diff --git a/x-pack/plugins/data_enhanced/server/search/session/index.ts b/x-pack/plugins/data_enhanced/server/search/session/index.ts new file mode 100644 index 00000000000000..5b75885fb31dfa --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/session/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './session_service'; diff --git a/x-pack/plugins/data_enhanced/server/search/session/session_service.test.ts b/x-pack/plugins/data_enhanced/server/search/session/session_service.test.ts new file mode 100644 index 00000000000000..766de908353f5c --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/session/session_service.test.ts @@ -0,0 +1,598 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { BehaviorSubject, of } from 'rxjs'; +import type { SavedObject, SavedObjectsClientContract } from 'kibana/server'; +import type { SearchStrategyDependencies } from '../../../../../../src/plugins/data/server'; +import { savedObjectsClientMock } from '../../../../../../src/core/server/mocks'; +import { BackgroundSessionStatus } from '../../../common'; +import { BACKGROUND_SESSION_TYPE } from '../../saved_objects'; +import { + BackgroundSessionDependencies, + BackgroundSessionService, + INMEM_TRACKING_INTERVAL, + MAX_UPDATE_RETRIES, + SessionInfo, +} from './session_service'; +import { createRequestHash } from './utils'; +import moment from 'moment'; +import { coreMock } from 'src/core/server/mocks'; +import { ConfigSchema } from '../../../config'; + +const flushPromises = () => new Promise((resolve) => setImmediate(resolve)); + +describe('BackgroundSessionService', () => { + let savedObjectsClient: jest.Mocked; + let service: BackgroundSessionService; + + const MOCK_SESSION_ID = 'session-id-mock'; + const MOCK_ASYNC_ID = '123456'; + const MOCK_KEY_HASH = '608de49a4600dbb5b173492759792e4a'; + + const createMockInternalSavedObjectClient = ( + findSpy?: jest.SpyInstance, + bulkUpdateSpy?: jest.SpyInstance + ) => { + Object.defineProperty(service, 'internalSavedObjectsClient', { + get: () => { + const find = + findSpy || + (() => { + return { + saved_objects: [ + { + attributes: { + sessionId: MOCK_SESSION_ID, + idMapping: { + 'another-key': 'another-async-id', + }, + }, + id: MOCK_SESSION_ID, + version: '1', + }, + ], + }; + }); + + const bulkUpdate = + bulkUpdateSpy || + (() => { + return { + saved_objects: [], + }; + }); + return { + find, + bulkUpdate, + }; + }, + }); + }; + + const createMockIdMapping = ( + mapValues: any[], + insertTime?: moment.Moment, + retryCount?: number + ): Map => { + const fakeMap = new Map(); + fakeMap.set(MOCK_SESSION_ID, { + ids: new Map(mapValues), + insertTime: insertTime || moment(), + retryCount: retryCount || 0, + }); + return fakeMap; + }; + + const sessionId = 'd7170a35-7e2c-48d6-8dec-9a056721b489'; + const mockSavedObject: SavedObject = { + id: 'd7170a35-7e2c-48d6-8dec-9a056721b489', + type: BACKGROUND_SESSION_TYPE, + attributes: { + name: 'my_name', + appId: 'my_app_id', + urlGeneratorId: 'my_url_generator_id', + idMapping: {}, + }, + references: [], + }; + + beforeEach(async () => { + savedObjectsClient = savedObjectsClientMock.create(); + const mockLogger: any = { + debug: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + }; + service = new BackgroundSessionService(mockLogger); + }); + + it('search throws if `name` is not provided', () => { + expect(() => service.save(sessionId, {}, { savedObjectsClient })).rejects.toMatchInlineSnapshot( + `[Error: Name is required]` + ); + }); + + it('save throws if `name` is not provided', () => { + expect(() => service.save(sessionId, {}, { savedObjectsClient })).rejects.toMatchInlineSnapshot( + `[Error: Name is required]` + ); + }); + + it('get calls saved objects client', async () => { + savedObjectsClient.get.mockResolvedValue(mockSavedObject); + + const response = await service.get(sessionId, { savedObjectsClient }); + + expect(response).toBe(mockSavedObject); + expect(savedObjectsClient.get).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId); + }); + + it('find calls saved objects client', async () => { + const mockFindSavedObject = { + ...mockSavedObject, + score: 1, + }; + const mockResponse = { + saved_objects: [mockFindSavedObject], + total: 1, + per_page: 1, + page: 0, + }; + savedObjectsClient.find.mockResolvedValue(mockResponse); + + const options = { page: 0, perPage: 5 }; + const response = await service.find(options, { savedObjectsClient }); + + expect(response).toBe(mockResponse); + expect(savedObjectsClient.find).toHaveBeenCalledWith({ + ...options, + type: BACKGROUND_SESSION_TYPE, + }); + }); + + it('update calls saved objects client', async () => { + const mockUpdateSavedObject = { + ...mockSavedObject, + attributes: {}, + }; + savedObjectsClient.update.mockResolvedValue(mockUpdateSavedObject); + + const attributes = { name: 'new_name' }; + const response = await service.update(sessionId, attributes, { savedObjectsClient }); + + expect(response).toBe(mockUpdateSavedObject); + expect(savedObjectsClient.update).toHaveBeenCalledWith( + BACKGROUND_SESSION_TYPE, + sessionId, + attributes + ); + }); + + it('delete calls saved objects client', async () => { + savedObjectsClient.delete.mockResolvedValue({}); + + const response = await service.delete(sessionId, { savedObjectsClient }); + + expect(response).toEqual({}); + expect(savedObjectsClient.delete).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId); + }); + + describe('search', () => { + const mockSearch = jest.fn().mockReturnValue(of({})); + const mockStrategy = { search: mockSearch }; + const mockSearchDeps = {} as SearchStrategyDependencies; + const mockDeps = {} as BackgroundSessionDependencies; + + beforeEach(() => { + mockSearch.mockClear(); + }); + + it('searches using the original request if not restoring', async () => { + const searchRequest = { params: {} }; + const options = { sessionId, isStored: false, isRestore: false }; + + await service + .search(mockStrategy, searchRequest, options, mockSearchDeps, mockDeps) + .toPromise(); + + expect(mockSearch).toBeCalledWith(searchRequest, options, mockSearchDeps); + }); + + it('searches using the original request if `id` is provided', async () => { + const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; + const searchRequest = { id: searchId, params: {} }; + const options = { sessionId, isStored: true, isRestore: true }; + + await service + .search(mockStrategy, searchRequest, options, mockSearchDeps, mockDeps) + .toPromise(); + + expect(mockSearch).toBeCalledWith(searchRequest, options, mockSearchDeps); + }); + + it('searches by looking up an `id` if restoring and `id` is not provided', async () => { + const searchRequest = { params: {} }; + const options = { sessionId, isStored: true, isRestore: true }; + const spyGetId = jest.spyOn(service, 'getId').mockResolvedValueOnce('my_id'); + + await service + .search(mockStrategy, searchRequest, options, mockSearchDeps, mockDeps) + .toPromise(); + + expect(mockSearch).toBeCalledWith({ ...searchRequest, id: 'my_id' }, options, mockSearchDeps); + + spyGetId.mockRestore(); + }); + + it('calls `trackId` once if the response contains an `id` and not restoring', async () => { + const searchRequest = { params: {} }; + const options = { sessionId, isStored: false, isRestore: false }; + const spyTrackId = jest.spyOn(service, 'trackId').mockResolvedValue(); + mockSearch.mockReturnValueOnce(of({ id: 'my_id' }, { id: 'my_id' })); + + await service + .search(mockStrategy, searchRequest, options, mockSearchDeps, mockDeps) + .toPromise(); + + expect(spyTrackId).toBeCalledTimes(1); + expect(spyTrackId).toBeCalledWith(searchRequest, 'my_id', options, {}); + + spyTrackId.mockRestore(); + }); + + it('does not call `trackId` if restoring', async () => { + const searchRequest = { params: {} }; + const options = { sessionId, isStored: true, isRestore: true }; + const spyGetId = jest.spyOn(service, 'getId').mockResolvedValueOnce('my_id'); + const spyTrackId = jest.spyOn(service, 'trackId').mockResolvedValue(); + mockSearch.mockReturnValueOnce(of({ id: 'my_id' })); + + await service + .search(mockStrategy, searchRequest, options, mockSearchDeps, mockDeps) + .toPromise(); + + expect(spyTrackId).not.toBeCalled(); + + spyGetId.mockRestore(); + spyTrackId.mockRestore(); + }); + }); + + describe('trackId', () => { + it('stores hash in memory when `isStored` is `false` for when `save` is called', async () => { + const searchRequest = { params: {} }; + const requestHash = createRequestHash(searchRequest.params); + const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; + const isStored = false; + const name = 'my saved background search session'; + const appId = 'my_app_id'; + const urlGeneratorId = 'my_url_generator_id'; + const created = new Date().toISOString(); + const expires = new Date().toISOString(); + + const mockIdMapping = createMockIdMapping([]); + const setSpy = jest.fn(); + mockIdMapping.set = setSpy; + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + await service.trackId( + searchRequest, + searchId, + { sessionId, isStored }, + { savedObjectsClient } + ); + + expect(savedObjectsClient.update).not.toHaveBeenCalled(); + + await service.save( + sessionId, + { name, created, expires, appId, urlGeneratorId }, + { savedObjectsClient } + ); + + expect(savedObjectsClient.create).toHaveBeenCalledWith( + BACKGROUND_SESSION_TYPE, + { + name, + created, + expires, + initialState: {}, + restoreState: {}, + status: BackgroundSessionStatus.IN_PROGRESS, + idMapping: {}, + appId, + urlGeneratorId, + sessionId, + }, + { id: sessionId } + ); + + const [setSessionId, setParams] = setSpy.mock.calls[0]; + expect(setParams.ids.get(requestHash)).toBe(searchId); + expect(setSessionId).toBe(sessionId); + }); + + it('updates saved object when `isStored` is `true`', async () => { + const searchRequest = { params: {} }; + const requestHash = createRequestHash(searchRequest.params); + const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; + const isStored = true; + + await service.trackId( + searchRequest, + searchId, + { sessionId, isStored }, + { savedObjectsClient } + ); + + expect(savedObjectsClient.update).toHaveBeenCalledWith(BACKGROUND_SESSION_TYPE, sessionId, { + idMapping: { [requestHash]: searchId }, + }); + }); + }); + + describe('getId', () => { + it('throws if `sessionId` is not provided', () => { + const searchRequest = { params: {} }; + + expect(() => + service.getId(searchRequest, {}, { savedObjectsClient }) + ).rejects.toMatchInlineSnapshot(`[Error: Session ID is required]`); + }); + + it('throws if there is not a saved object', () => { + const searchRequest = { params: {} }; + + expect(() => + service.getId(searchRequest, { sessionId, isStored: false }, { savedObjectsClient }) + ).rejects.toMatchInlineSnapshot( + `[Error: Cannot get search ID from a session that is not stored]` + ); + }); + + it('throws if not restoring a saved session', () => { + const searchRequest = { params: {} }; + + expect(() => + service.getId( + searchRequest, + { sessionId, isStored: true, isRestore: false }, + { savedObjectsClient } + ) + ).rejects.toMatchInlineSnapshot( + `[Error: Get search ID is only supported when restoring a session]` + ); + }); + + it('returns the search ID from the saved object ID mapping', async () => { + const searchRequest = { params: {} }; + const requestHash = createRequestHash(searchRequest.params); + const searchId = 'FnpFYlBpeXdCUTMyZXhCLTc1TWFKX0EbdDFDTzJzTE1Sck9PVTBIcW1iU05CZzo4MDA0'; + const mockSession = { + id: 'd7170a35-7e2c-48d6-8dec-9a056721b489', + type: BACKGROUND_SESSION_TYPE, + attributes: { + name: 'my_name', + appId: 'my_app_id', + urlGeneratorId: 'my_url_generator_id', + idMapping: { [requestHash]: searchId }, + }, + references: [], + }; + savedObjectsClient.get.mockResolvedValue(mockSession); + + const id = await service.getId( + searchRequest, + { sessionId, isStored: true, isRestore: true }, + { savedObjectsClient } + ); + + expect(id).toBe(searchId); + }); + }); + + describe('Monitor', () => { + beforeEach(async () => { + jest.useFakeTimers(); + const config$ = new BehaviorSubject({ + search: { + sendToBackground: { + enabled: true, + }, + }, + }); + await service.start(coreMock.createStart(), config$); + await flushPromises(); + }); + + afterEach(() => { + jest.useRealTimers(); + service.stop(); + }); + + it('schedules the next iteration', async () => { + const findSpy = jest.fn().mockResolvedValue({ saved_objects: [] }); + createMockInternalSavedObjectClient(findSpy); + + const mockIdMapping = createMockIdMapping([[MOCK_KEY_HASH, MOCK_ASYNC_ID]], moment()); + + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + expect(findSpy).toHaveBeenCalledTimes(1); + await flushPromises(); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + expect(findSpy).toHaveBeenCalledTimes(2); + }); + + it('should delete expired IDs', async () => { + const findSpy = jest.fn().mockResolvedValueOnce({ saved_objects: [] }); + createMockInternalSavedObjectClient(findSpy); + + const mockIdMapping = createMockIdMapping( + [[MOCK_KEY_HASH, MOCK_ASYNC_ID]], + moment().subtract(2, 'm') + ); + + const deleteSpy = jest.spyOn(mockIdMapping, 'delete'); + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + // Get setInterval to fire + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + + expect(findSpy).not.toHaveBeenCalled(); + expect(deleteSpy).toHaveBeenCalledTimes(1); + }); + + it('should delete IDs that passed max retries', async () => { + const findSpy = jest.fn().mockResolvedValueOnce({ saved_objects: [] }); + createMockInternalSavedObjectClient(findSpy); + + const mockIdMapping = createMockIdMapping( + [[MOCK_KEY_HASH, MOCK_ASYNC_ID]], + moment(), + MAX_UPDATE_RETRIES + ); + + const deleteSpy = jest.spyOn(mockIdMapping, 'delete'); + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + // Get setInterval to fire + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + + expect(findSpy).not.toHaveBeenCalled(); + expect(deleteSpy).toHaveBeenCalledTimes(1); + }); + + it('should not fetch when no IDs are mapped', async () => { + const findSpy = jest.fn().mockResolvedValueOnce({ saved_objects: [] }); + createMockInternalSavedObjectClient(findSpy); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + expect(findSpy).not.toHaveBeenCalled(); + }); + + it('should try to fetch saved objects if some ids are mapped', async () => { + const mockIdMapping = createMockIdMapping([[MOCK_KEY_HASH, MOCK_ASYNC_ID]]); + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + const findSpy = jest.fn().mockResolvedValueOnce({ saved_objects: [] }); + const bulkUpdateSpy = jest.fn().mockResolvedValueOnce({ saved_objects: [] }); + createMockInternalSavedObjectClient(findSpy, bulkUpdateSpy); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + expect(findSpy).toHaveBeenCalledTimes(1); + expect(bulkUpdateSpy).not.toHaveBeenCalled(); + }); + + it('should update saved objects if they are found, and delete session on success', async () => { + const mockIdMapping = createMockIdMapping([[MOCK_KEY_HASH, MOCK_ASYNC_ID]], undefined, 1); + const mockMapDeleteSpy = jest.fn(); + const mockSessionDeleteSpy = jest.fn(); + mockIdMapping.delete = mockMapDeleteSpy; + mockIdMapping.get(MOCK_SESSION_ID)!.ids.delete = mockSessionDeleteSpy; + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + const findSpy = jest.fn().mockResolvedValueOnce({ + saved_objects: [ + { + id: MOCK_SESSION_ID, + attributes: { + idMapping: { + b: 'c', + }, + }, + }, + ], + }); + const bulkUpdateSpy = jest.fn().mockResolvedValueOnce({ + saved_objects: [ + { + id: MOCK_SESSION_ID, + attributes: { + idMapping: { + b: 'c', + [MOCK_KEY_HASH]: MOCK_ASYNC_ID, + }, + }, + }, + ], + }); + createMockInternalSavedObjectClient(findSpy, bulkUpdateSpy); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + + // Release timers to call check after test actions are done. + jest.useRealTimers(); + await new Promise((r) => setTimeout(r, 15)); + + expect(findSpy).toHaveBeenCalledTimes(1); + expect(bulkUpdateSpy).toHaveBeenCalledTimes(1); + expect(mockSessionDeleteSpy).toHaveBeenCalledTimes(2); + expect(mockSessionDeleteSpy).toBeCalledWith('b'); + expect(mockSessionDeleteSpy).toBeCalledWith(MOCK_KEY_HASH); + expect(mockMapDeleteSpy).toBeCalledTimes(1); + }); + + it('should update saved objects if they are found, and increase retryCount on error', async () => { + const mockIdMapping = createMockIdMapping([[MOCK_KEY_HASH, MOCK_ASYNC_ID]]); + const mockMapDeleteSpy = jest.fn(); + const mockSessionDeleteSpy = jest.fn(); + mockIdMapping.delete = mockMapDeleteSpy; + mockIdMapping.get(MOCK_SESSION_ID)!.ids.delete = mockSessionDeleteSpy; + Object.defineProperty(service, 'sessionSearchMap', { + get: () => mockIdMapping, + }); + + const findSpy = jest.fn().mockResolvedValueOnce({ + saved_objects: [ + { + id: MOCK_SESSION_ID, + attributes: { + idMapping: { + b: 'c', + }, + }, + }, + ], + }); + const bulkUpdateSpy = jest.fn().mockResolvedValueOnce({ + saved_objects: [ + { + id: MOCK_SESSION_ID, + error: 'not ok', + }, + ], + }); + createMockInternalSavedObjectClient(findSpy, bulkUpdateSpy); + + jest.advanceTimersByTime(INMEM_TRACKING_INTERVAL); + + // Release timers to call check after test actions are done. + jest.useRealTimers(); + await new Promise((r) => setTimeout(r, 15)); + + expect(findSpy).toHaveBeenCalledTimes(1); + expect(bulkUpdateSpy).toHaveBeenCalledTimes(1); + expect(mockSessionDeleteSpy).not.toHaveBeenCalled(); + expect(mockMapDeleteSpy).not.toHaveBeenCalled(); + expect(mockIdMapping.get(MOCK_SESSION_ID)!.retryCount).toBe(1); + }); + }); +}); diff --git a/x-pack/plugins/data_enhanced/server/search/session/session_service.ts b/x-pack/plugins/data_enhanced/server/search/session/session_service.ts new file mode 100644 index 00000000000000..96d66157c48eca --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/session/session_service.ts @@ -0,0 +1,370 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import moment, { Moment } from 'moment'; +import { from, Observable } from 'rxjs'; +import { first, switchMap } from 'rxjs/operators'; +import { + CoreStart, + KibanaRequest, + SavedObjectsClient, + SavedObjectsClientContract, + Logger, + SavedObject, +} from '../../../../../../src/core/server'; +import { + IKibanaSearchRequest, + IKibanaSearchResponse, + ISearchOptions, + tapFirst, +} from '../../../../../../src/plugins/data/common'; +import { + ISearchStrategy, + ISessionService, + SearchStrategyDependencies, +} from '../../../../../../src/plugins/data/server'; +import { + BackgroundSessionSavedObjectAttributes, + BackgroundSessionFindOptions, + BackgroundSessionStatus, +} from '../../../common'; +import { BACKGROUND_SESSION_TYPE } from '../../saved_objects'; +import { createRequestHash } from './utils'; +import { ConfigSchema } from '../../../config'; + +const INMEM_MAX_SESSIONS = 10000; +const DEFAULT_EXPIRATION = 7 * 24 * 60 * 60 * 1000; +export const INMEM_TRACKING_INTERVAL = 10 * 1000; +export const INMEM_TRACKING_TIMEOUT_SEC = 60; +export const MAX_UPDATE_RETRIES = 3; + +export interface BackgroundSessionDependencies { + savedObjectsClient: SavedObjectsClientContract; +} + +export interface SessionInfo { + insertTime: Moment; + retryCount: number; + ids: Map; +} + +export class BackgroundSessionService implements ISessionService { + /** + * Map of sessionId to { [requestHash]: searchId } + * @private + */ + private sessionSearchMap = new Map(); + private internalSavedObjectsClient!: SavedObjectsClientContract; + private monitorTimer!: NodeJS.Timeout; + + constructor(private readonly logger: Logger) {} + + public async start(core: CoreStart, config$: Observable) { + return this.setupMonitoring(core, config$); + } + + public stop() { + this.sessionSearchMap.clear(); + clearTimeout(this.monitorTimer); + } + + private setupMonitoring = async (core: CoreStart, config$: Observable) => { + const config = await config$.pipe(first()).toPromise(); + if (config.search.sendToBackground.enabled) { + this.logger.debug(`setupMonitoring | Enabling monitoring`); + const internalRepo = core.savedObjects.createInternalRepository([BACKGROUND_SESSION_TYPE]); + this.internalSavedObjectsClient = new SavedObjectsClient(internalRepo); + this.monitorMappedIds(); + } + }; + + /** + * Gets all {@link SessionSavedObjectAttributes | Background Searches} that + * currently being tracked by the service. + * + * @remarks + * Uses `internalSavedObjectsClient` as this is called asynchronously, not within the + * context of a user's session. + */ + private async getAllMappedSavedObjects() { + const activeMappingIds = Array.from(this.sessionSearchMap.keys()) + .map((sessionId) => `"${sessionId}"`) + .join(' | '); + const res = await this.internalSavedObjectsClient.find({ + perPage: INMEM_MAX_SESSIONS, // If there are more sessions in memory, they will be synced when some items are cleared out. + type: BACKGROUND_SESSION_TYPE, + search: activeMappingIds, + searchFields: ['sessionId'], + namespaces: ['*'], + }); + this.logger.debug(`getAllMappedSavedObjects | Got ${res.saved_objects.length} items`); + return res.saved_objects; + } + + private clearSessions = () => { + const curTime = moment(); + + this.sessionSearchMap.forEach((sessionInfo, sessionId) => { + if ( + moment.duration(curTime.diff(sessionInfo.insertTime)).asSeconds() > + INMEM_TRACKING_TIMEOUT_SEC + ) { + this.logger.debug(`clearSessions | Deleting expired session ${sessionId}`); + this.sessionSearchMap.delete(sessionId); + } else if (sessionInfo.retryCount >= MAX_UPDATE_RETRIES) { + this.logger.warn(`clearSessions | Deleting failed session ${sessionId}`); + this.sessionSearchMap.delete(sessionId); + } + }); + }; + + private async monitorMappedIds() { + this.monitorTimer = setTimeout(async () => { + try { + this.clearSessions(); + + if (!this.sessionSearchMap.size) return; + this.logger.debug(`monitorMappedIds | Map contains ${this.sessionSearchMap.size} items`); + + const savedSessions = await this.getAllMappedSavedObjects(); + const updatedSessions = await this.updateAllSavedObjects(savedSessions); + + updatedSessions.forEach((updatedSavedObject) => { + const sessionInfo = this.sessionSearchMap.get(updatedSavedObject.id)!; + if (updatedSavedObject.error) { + // Retry next time + sessionInfo.retryCount++; + } else if (updatedSavedObject.attributes.idMapping) { + // Delete the ids that we just saved, avoiding a potential new ids being lost. + Object.keys(updatedSavedObject.attributes.idMapping).forEach((key) => { + sessionInfo.ids.delete(key); + }); + // If the session object is empty, delete it as well + if (!sessionInfo.ids.entries.length) { + this.sessionSearchMap.delete(updatedSavedObject.id); + } else { + sessionInfo.retryCount = 0; + } + } + }); + } catch (e) { + this.logger.error(`monitorMappedIds | Error while updating sessions. ${e}`); + } finally { + this.monitorMappedIds(); + } + }, INMEM_TRACKING_INTERVAL); + } + + private async updateAllSavedObjects( + activeMappingObjects: Array> + ) { + if (!activeMappingObjects.length) return []; + + this.logger.debug(`updateAllSavedObjects | Updating ${activeMappingObjects.length} items`); + const updatedSessions = activeMappingObjects + .filter((so) => !so.error) + .map((sessionSavedObject) => { + const sessionInfo = this.sessionSearchMap.get(sessionSavedObject.id); + const idMapping = sessionInfo ? Object.fromEntries(sessionInfo.ids.entries()) : {}; + sessionSavedObject.attributes.idMapping = { + ...sessionSavedObject.attributes.idMapping, + ...idMapping, + }; + return sessionSavedObject; + }); + + const updateResults = await this.internalSavedObjectsClient.bulkUpdate( + updatedSessions + ); + return updateResults.saved_objects; + } + + public search( + strategy: ISearchStrategy, + searchRequest: Request, + options: ISearchOptions, + searchDeps: SearchStrategyDependencies, + deps: BackgroundSessionDependencies + ): Observable { + // If this is a restored background search session, look up the ID using the provided sessionId + const getSearchRequest = async () => + !options.isRestore || searchRequest.id + ? searchRequest + : { + ...searchRequest, + id: await this.getId(searchRequest, options, deps), + }; + + return from(getSearchRequest()).pipe( + switchMap((request) => strategy.search(request, options, searchDeps)), + tapFirst((response) => { + if (searchRequest.id || !options.sessionId || !response.id || options.isRestore) return; + this.trackId(searchRequest, response.id, options, deps); + }) + ); + } + + // TODO: Generate the `userId` from the realm type/realm name/username + public save = async ( + sessionId: string, + { + name, + appId, + created = new Date().toISOString(), + expires = new Date(Date.now() + DEFAULT_EXPIRATION).toISOString(), + status = BackgroundSessionStatus.IN_PROGRESS, + urlGeneratorId, + initialState = {}, + restoreState = {}, + }: Partial, + { savedObjectsClient }: BackgroundSessionDependencies + ) => { + if (!name) throw new Error('Name is required'); + if (!appId) throw new Error('AppId is required'); + if (!urlGeneratorId) throw new Error('UrlGeneratorId is required'); + + this.logger.debug(`save | ${sessionId}`); + + const attributes = { + name, + created, + expires, + status, + initialState, + restoreState, + idMapping: {}, + urlGeneratorId, + appId, + sessionId, + }; + const session = await savedObjectsClient.create( + BACKGROUND_SESSION_TYPE, + attributes, + { id: sessionId } + ); + + return session; + }; + + // TODO: Throw an error if this session doesn't belong to this user + public get = (sessionId: string, { savedObjectsClient }: BackgroundSessionDependencies) => { + this.logger.debug(`get | ${sessionId}`); + return savedObjectsClient.get( + BACKGROUND_SESSION_TYPE, + sessionId + ); + }; + + // TODO: Throw an error if this session doesn't belong to this user + public find = ( + options: BackgroundSessionFindOptions, + { savedObjectsClient }: BackgroundSessionDependencies + ) => { + return savedObjectsClient.find({ + ...options, + type: BACKGROUND_SESSION_TYPE, + }); + }; + + // TODO: Throw an error if this session doesn't belong to this user + public update = ( + sessionId: string, + attributes: Partial, + { savedObjectsClient }: BackgroundSessionDependencies + ) => { + this.logger.debug(`update | ${sessionId}`); + return savedObjectsClient.update( + BACKGROUND_SESSION_TYPE, + sessionId, + attributes + ); + }; + + // TODO: Throw an error if this session doesn't belong to this user + public delete = (sessionId: string, { savedObjectsClient }: BackgroundSessionDependencies) => { + return savedObjectsClient.delete(BACKGROUND_SESSION_TYPE, sessionId); + }; + + /** + * Tracks the given search request/search ID in the saved session (if it exists). Otherwise, just + * store it in memory until a saved session exists. + * @internal + */ + public trackId = async ( + searchRequest: IKibanaSearchRequest, + searchId: string, + { sessionId, isStored }: ISearchOptions, + deps: BackgroundSessionDependencies + ) => { + if (!sessionId || !searchId) return; + this.logger.debug(`trackId | ${sessionId} | ${searchId}`); + const requestHash = createRequestHash(searchRequest.params); + + // If there is already a saved object for this session, update it to include this request/ID. + // Otherwise, just update the in-memory mapping for this session for when the session is saved. + if (isStored) { + const attributes = { idMapping: { [requestHash]: searchId } }; + await this.update(sessionId, attributes, deps); + } else { + const map = this.sessionSearchMap.get(sessionId) ?? { + insertTime: moment(), + retryCount: 0, + ids: new Map(), + }; + map.ids.set(requestHash, searchId); + this.sessionSearchMap.set(sessionId, map); + } + }; + + /** + * Look up an existing search ID that matches the given request in the given session so that the + * request can continue rather than restart. + * @internal + */ + public getId = async ( + searchRequest: IKibanaSearchRequest, + { sessionId, isStored, isRestore }: ISearchOptions, + deps: BackgroundSessionDependencies + ) => { + if (!sessionId) { + throw new Error('Session ID is required'); + } else if (!isStored) { + throw new Error('Cannot get search ID from a session that is not stored'); + } else if (!isRestore) { + throw new Error('Get search ID is only supported when restoring a session'); + } + + const session = await this.get(sessionId, deps); + const requestHash = createRequestHash(searchRequest.params); + if (!session.attributes.idMapping.hasOwnProperty(requestHash)) { + throw new Error('No search ID in this session matching the given search request'); + } + + return session.attributes.idMapping[requestHash]; + }; + + public asScopedProvider = ({ savedObjects }: CoreStart) => { + return (request: KibanaRequest) => { + const savedObjectsClient = savedObjects.getScopedClient(request, { + includedHiddenTypes: [BACKGROUND_SESSION_TYPE], + }); + const deps = { savedObjectsClient }; + return { + search: ( + strategy: ISearchStrategy, + ...args: Parameters['search']> + ) => this.search(strategy, ...args, deps), + save: (sessionId: string, attributes: Partial) => + this.save(sessionId, attributes, deps), + get: (sessionId: string) => this.get(sessionId, deps), + find: (options: BackgroundSessionFindOptions) => this.find(options, deps), + update: (sessionId: string, attributes: Partial) => + this.update(sessionId, attributes, deps), + delete: (sessionId: string) => this.delete(sessionId, deps), + }; + }; + }; +} diff --git a/x-pack/plugins/data_enhanced/server/search/session/utils.test.ts b/x-pack/plugins/data_enhanced/server/search/session/utils.test.ts new file mode 100644 index 00000000000000..aae1819a9c3e18 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/session/utils.test.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createRequestHash } from './utils'; + +describe('data/search/session utils', () => { + describe('createRequestHash', () => { + it('ignores `preference`', () => { + const request = { + foo: 'bar', + }; + + const withPreference = { + ...request, + preference: 1234, + }; + + expect(createRequestHash(request)).toEqual(createRequestHash(withPreference)); + }); + }); +}); diff --git a/x-pack/plugins/data_enhanced/server/search/session/utils.ts b/x-pack/plugins/data_enhanced/server/search/session/utils.ts new file mode 100644 index 00000000000000..beaecc5a839d31 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/session/utils.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createHash } from 'crypto'; +import stringify from 'json-stable-stringify'; + +/** + * Generate the hash for this request so that, in the future, this hash can be used to look up + * existing search IDs for this request. Ignores the `preference` parameter since it generally won't + * match from one request to another identical request. + */ +export function createRequestHash(keys: Record) { + const { preference, ...params } = keys; + return createHash(`sha256`).update(stringify(params)).digest('hex'); +} diff --git a/x-pack/plugins/data_enhanced/server/search/types.ts b/x-pack/plugins/data_enhanced/server/search/types.ts new file mode 100644 index 00000000000000..f01ac51a1516e1 --- /dev/null +++ b/x-pack/plugins/data_enhanced/server/search/types.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { SearchResponse } from 'elasticsearch'; + +export interface AsyncSearchResponse { + id?: string; + response: SearchResponse; + is_partial: boolean; + is_running: boolean; +} + +export interface EqlSearchResponse extends SearchResponse { + id?: string; + is_partial: boolean; + is_running: boolean; +} diff --git a/x-pack/plugins/discover_enhanced/jest.config.js b/x-pack/plugins/discover_enhanced/jest.config.js new file mode 100644 index 00000000000000..00e040beba4116 --- /dev/null +++ b/x-pack/plugins/discover_enhanced/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/discover_enhanced'], +}; diff --git a/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts b/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts index 40e7691e621fd3..30de6c0802713a 100644 --- a/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts +++ b/x-pack/plugins/discover_enhanced/public/actions/explore_data/abstract_explore_data_action.ts @@ -42,7 +42,7 @@ export abstract class AbstractExploreDataAction; + protected abstract getUrl(context: Context): Promise; public async isCompatible({ embeddable }: Context): Promise { if (!embeddable) return false; diff --git a/x-pack/plugins/drilldowns/jest.config.js b/x-pack/plugins/drilldowns/jest.config.js new file mode 100644 index 00000000000000..a7d79f8dac378e --- /dev/null +++ b/x-pack/plugins/drilldowns/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/drilldowns'], +}; diff --git a/x-pack/plugins/embeddable_enhanced/jest.config.js b/x-pack/plugins/embeddable_enhanced/jest.config.js new file mode 100644 index 00000000000000..c5c62f98ca2f3d --- /dev/null +++ b/x-pack/plugins/embeddable_enhanced/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/embeddable_enhanced'], +}; diff --git a/x-pack/plugins/encrypted_saved_objects/jest.config.js b/x-pack/plugins/encrypted_saved_objects/jest.config.js new file mode 100644 index 00000000000000..0883bdb224dd03 --- /dev/null +++ b/x-pack/plugins/encrypted_saved_objects/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/encrypted_saved_objects'], +}; diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts index 6346e73e6ba51f..85ec08fb7388d0 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.test.ts @@ -13,7 +13,18 @@ import { savedObjectsClientMock, savedObjectsTypeRegistryMock } from 'src/core/s import { mockAuthenticatedUser } from '../../../security/common/model/authenticated_user.mock'; import { encryptedSavedObjectsServiceMock } from '../crypto/index.mock'; -jest.mock('uuid', () => ({ v4: jest.fn().mockReturnValue('uuid-v4-id') })); +jest.mock('../../../../../src/core/server/saved_objects/service/lib/utils', () => { + const { SavedObjectsUtils } = jest.requireActual( + '../../../../../src/core/server/saved_objects/service/lib/utils' + ); + return { + SavedObjectsUtils: { + namespaceStringToId: SavedObjectsUtils.namespaceStringToId, + isRandomId: SavedObjectsUtils.isRandomId, + generateId: () => 'mock-saved-object-id', + }, + }; +}); let wrapper: EncryptedSavedObjectsClientWrapper; let mockBaseClient: jest.Mocked; @@ -76,7 +87,7 @@ describe('#create', () => { const attributes = { attrOne: 'one', attrSecret: 'secret', attrThree: 'three' }; await expect(wrapper.create('known-type', attributes, { id: 'some-id' })).rejects.toThrowError( - 'Predefined IDs are not allowed for saved objects with encrypted attributes.' + 'Predefined IDs are not allowed for saved objects with encrypted attributes, unless the ID has been generated using `SavedObjectsUtils.generateId`.' ); expect(mockBaseClient.create).not.toHaveBeenCalled(); @@ -143,7 +154,7 @@ describe('#create', () => { }; const options = { overwrite: true }; const mockedResponse = { - id: 'uuid-v4-id', + id: 'mock-saved-object-id', type: 'known-type', attributes: { attrOne: 'one', @@ -163,7 +174,7 @@ describe('#create', () => { expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledTimes(1); expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledWith( - { type: 'known-type', id: 'uuid-v4-id' }, + { type: 'known-type', id: 'mock-saved-object-id' }, { attrOne: 'one', attrSecret: 'secret', @@ -182,7 +193,7 @@ describe('#create', () => { attrNotSoSecret: '*not-so-secret*', attrThree: 'three', }, - { id: 'uuid-v4-id', overwrite: true } + { id: 'mock-saved-object-id', overwrite: true } ); }); @@ -191,7 +202,7 @@ describe('#create', () => { const attributes = { attrOne: 'one', attrSecret: 'secret', attrThree: 'three' }; const options = { overwrite: true, namespace }; const mockedResponse = { - id: 'uuid-v4-id', + id: 'mock-saved-object-id', type: 'known-type', attributes: { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, references: [], @@ -208,7 +219,7 @@ describe('#create', () => { expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledWith( { type: 'known-type', - id: 'uuid-v4-id', + id: 'mock-saved-object-id', namespace: expectNamespaceInDescriptor ? namespace : undefined, }, { attrOne: 'one', attrSecret: 'secret', attrThree: 'three' }, @@ -219,7 +230,7 @@ describe('#create', () => { expect(mockBaseClient.create).toHaveBeenCalledWith( 'known-type', { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, - { id: 'uuid-v4-id', overwrite: true, namespace } + { id: 'mock-saved-object-id', overwrite: true, namespace } ); }; @@ -245,7 +256,7 @@ describe('#create', () => { expect(mockBaseClient.create).toHaveBeenCalledWith( 'known-type', { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, - { id: 'uuid-v4-id' } + { id: 'mock-saved-object-id' } ); }); }); @@ -257,7 +268,7 @@ describe('#bulkCreate', () => { const mockedResponse = { saved_objects: [ { - id: 'uuid-v4-id', + id: 'mock-saved-object-id', type: 'known-type', attributes, references: [], @@ -290,7 +301,7 @@ describe('#bulkCreate', () => { [ { ...bulkCreateParams[0], - id: 'uuid-v4-id', + id: 'mock-saved-object-id', attributes: { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, }, bulkCreateParams[1], @@ -308,7 +319,7 @@ describe('#bulkCreate', () => { ]; await expect(wrapper.bulkCreate(bulkCreateParams)).rejects.toThrowError( - 'Predefined IDs are not allowed for saved objects with encrypted attributes.' + 'Predefined IDs are not allowed for saved objects with encrypted attributes, unless the ID has been generated using `SavedObjectsUtils.generateId`.' ); expect(mockBaseClient.bulkCreate).not.toHaveBeenCalled(); @@ -395,7 +406,7 @@ describe('#bulkCreate', () => { const mockedResponse = { saved_objects: [ { - id: 'uuid-v4-id', + id: 'mock-saved-object-id', type: 'known-type', attributes: { ...attributes, attrSecret: '*secret*', attrNotSoSecret: '*not-so-secret*' }, references: [], @@ -428,7 +439,7 @@ describe('#bulkCreate', () => { expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledTimes(1); expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledWith( - { type: 'known-type', id: 'uuid-v4-id' }, + { type: 'known-type', id: 'mock-saved-object-id' }, { attrOne: 'one', attrSecret: 'secret', @@ -443,7 +454,7 @@ describe('#bulkCreate', () => { [ { ...bulkCreateParams[0], - id: 'uuid-v4-id', + id: 'mock-saved-object-id', attributes: { attrOne: 'one', attrSecret: '*secret*', @@ -462,7 +473,9 @@ describe('#bulkCreate', () => { const attributes = { attrOne: 'one', attrSecret: 'secret', attrThree: 'three' }; const options = { namespace }; const mockedResponse = { - saved_objects: [{ id: 'uuid-v4-id', type: 'known-type', attributes, references: [] }], + saved_objects: [ + { id: 'mock-saved-object-id', type: 'known-type', attributes, references: [] }, + ], }; mockBaseClient.bulkCreate.mockResolvedValue(mockedResponse); @@ -481,7 +494,7 @@ describe('#bulkCreate', () => { expect(encryptedSavedObjectsServiceMockInstance.encryptAttributes).toHaveBeenCalledWith( { type: 'known-type', - id: 'uuid-v4-id', + id: 'mock-saved-object-id', namespace: expectNamespaceInDescriptor ? namespace : undefined, }, { attrOne: 'one', attrSecret: 'secret', attrThree: 'three' }, @@ -493,7 +506,7 @@ describe('#bulkCreate', () => { [ { ...bulkCreateParams[0], - id: 'uuid-v4-id', + id: 'mock-saved-object-id', attributes: { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, }, ], @@ -529,7 +542,7 @@ describe('#bulkCreate', () => { [ { type: 'known-type', - id: 'uuid-v4-id', + id: 'mock-saved-object-id', attributes: { attrOne: 'one', attrSecret: '*secret*', attrThree: 'three' }, }, ], diff --git a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts index 59309ab67e772e..313e7c7da9eba2 100644 --- a/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts +++ b/x-pack/plugins/encrypted_saved_objects/server/saved_objects/encrypted_saved_objects_client_wrapper.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import uuid from 'uuid'; import { SavedObject, SavedObjectsBaseOptions, @@ -25,7 +24,8 @@ import { SavedObjectsRemoveReferencesToOptions, ISavedObjectTypeRegistry, SavedObjectsRemoveReferencesToResponse, -} from 'src/core/server'; + SavedObjectsUtils, +} from '../../../../../src/core/server'; import { AuthenticatedUser } from '../../../security/common/model'; import { EncryptedSavedObjectsService } from '../crypto'; import { getDescriptorNamespace } from './get_descriptor_namespace'; @@ -37,14 +37,6 @@ interface EncryptedSavedObjectsClientOptions { getCurrentUser: () => AuthenticatedUser | undefined; } -/** - * Generates UUIDv4 ID for the any newly created saved object that is supposed to contain - * encrypted attributes. - */ -function generateID() { - return uuid.v4(); -} - export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientContract { constructor( private readonly options: EncryptedSavedObjectsClientOptions, @@ -67,21 +59,7 @@ export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientCon return await this.options.baseClient.create(type, attributes, options); } - // Saved objects with encrypted attributes should have IDs that are hard to guess especially - // since IDs are part of the AAD used during encryption, that's why we control them within this - // wrapper and don't allow consumers to specify their own IDs directly. - - // only allow a specified ID if we're overwriting an existing ESO with a Version - // this helps us ensure that the document really was previously created using ESO - // and not being used to get around the specified ID limitation - const canSpecifyID = options.overwrite && options.version; - if (options.id && !canSpecifyID) { - throw new Error( - 'Predefined IDs are not allowed for saved objects with encrypted attributes.' - ); - } - - const id = options.id ?? generateID(); + const id = getValidId(options.id, options.version, options.overwrite); const namespace = getDescriptorNamespace( this.options.baseTypeRegistry, type, @@ -115,17 +93,7 @@ export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientCon return object; } - // Saved objects with encrypted attributes should have IDs that are hard to guess especially - // since IDs are part of the AAD used during encryption, that's why we control them within this - // wrapper and don't allow consumers to specify their own IDs directly unless overwriting the original document. - const canSpecifyID = options?.overwrite && object.version; - if (object.id && !canSpecifyID) { - throw new Error( - 'Predefined IDs are not allowed for saved objects with encrypted attributes.' - ); - } - - const id = object.id ?? generateID(); + const id = getValidId(object.id, object.version, options?.overwrite); const namespace = getDescriptorNamespace( this.options.baseTypeRegistry, object.type, @@ -327,3 +295,26 @@ export class EncryptedSavedObjectsClientWrapper implements SavedObjectsClientCon return response; } } + +// Saved objects with encrypted attributes should have IDs that are hard to guess especially +// since IDs are part of the AAD used during encryption, that's why we control them within this +// wrapper and don't allow consumers to specify their own IDs directly unless overwriting the original document. +function getValidId( + id: string | undefined, + version: string | undefined, + overwrite: boolean | undefined +) { + if (id) { + // only allow a specified ID if we're overwriting an existing ESO with a Version + // this helps us ensure that the document really was previously created using ESO + // and not being used to get around the specified ID limitation + const canSpecifyID = (overwrite && version) || SavedObjectsUtils.isRandomId(id); + if (!canSpecifyID) { + throw new Error( + 'Predefined IDs are not allowed for saved objects with encrypted attributes, unless the ID has been generated using `SavedObjectsUtils.generateId`.' + ); + } + return id; + } + return SavedObjectsUtils.generateId(); +} diff --git a/x-pack/plugins/enterprise_search/jest.config.js b/x-pack/plugins/enterprise_search/jest.config.js new file mode 100644 index 00000000000000..db6a25a1f7efd9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/enterprise_search'], +}; diff --git a/x-pack/plugins/enterprise_search/kibana.json b/x-pack/plugins/enterprise_search/kibana.json index d60ab5c7d37f07..36a3895c616152 100644 --- a/x-pack/plugins/enterprise_search/kibana.json +++ b/x-pack/plugins/enterprise_search/kibana.json @@ -4,7 +4,7 @@ "kibanaVersion": "kibana", "requiredPlugins": ["features", "licensing"], "configPath": ["enterpriseSearch"], - "optionalPlugins": ["usageCollection", "security", "home", "spaces"], + "optionalPlugins": ["usageCollection", "security", "home", "spaces", "cloud"], "server": true, "ui": true, "requiredBundles": ["home"] diff --git a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts index ab91666d4acb65..95843a243a3c66 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_logic.mock.ts @@ -9,6 +9,10 @@ import { mockHistory } from './'; export const mockKibanaValues = { config: { host: 'http://localhost:3002' }, history: mockHistory, + cloud: { + isCloudEnabled: false, + cloudDeploymentUrl: 'https://cloud.elastic.co/deployments/some-id', + }, navigateToUrl: jest.fn(), setBreadcrumbs: jest.fn(), setDocTitle: jest.fn(), diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/constants.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/constants.ts new file mode 100644 index 00000000000000..54b0d47ee02d8e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/constants.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; + +export const DOCUMENTS_TITLE = i18n.translate('xpack.enterpriseSearch.appSearch.documents.title', { + defaultMessage: 'Documents', +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.test.tsx new file mode 100644 index 00000000000000..a62c735f1b6bfa --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.test.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { EuiButton } from '@elastic/eui'; + +import { DocumentCreationButton } from './document_creation_button'; + +describe('DocumentCreationButton', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should render', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiButton).length).toEqual(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.tsx new file mode 100644 index 00000000000000..cd6815ac4ba93e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_creation_button.tsx @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; + +import { EuiButton } from '@elastic/eui'; + +export const DocumentCreationButton: React.FC = () => { + return ( + + {i18n.translate('xpack.enterpriseSearch.appSearch.documents.indexDocuments', { + defaultMessage: 'Index documents', + })} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.test.tsx new file mode 100644 index 00000000000000..a289ec78d9e801 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.test.tsx @@ -0,0 +1,112 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { setMockValues, setMockActions } from '../../../__mocks__/kea.mock'; +import '../../../__mocks__/react_router_history.mock'; +import { unmountHandler } from '../../../__mocks__/shallow_useeffect.mock'; + +import React from 'react'; +import { shallow } from 'enzyme'; +import { useParams } from 'react-router-dom'; +import { EuiPageContent, EuiBasicTable } from '@elastic/eui'; + +import { Loading } from '../../../shared/loading'; +import { DocumentDetail } from '.'; +import { ResultFieldValue } from '../result_field_value'; + +describe('DocumentDetail', () => { + const values = { + dataLoading: false, + fields: [], + }; + + const actions = { + deleteDocument: jest.fn(), + getDocumentDetails: jest.fn(), + setFields: jest.fn(), + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + setMockActions(actions); + + (useParams as jest.Mock).mockImplementationOnce(() => ({ + documentId: '1', + })); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiPageContent).length).toBe(1); + }); + + it('initializes data on mount', () => { + shallow(); + expect(actions.getDocumentDetails).toHaveBeenCalledWith('1'); + }); + + it('calls setFields on unmount', () => { + shallow(); + unmountHandler(); + expect(actions.setFields).toHaveBeenCalledWith([]); + }); + + it('will show a loader while data is loading', () => { + setMockValues({ + ...values, + dataLoading: true, + }); + + const wrapper = shallow(); + + expect(wrapper.find(Loading).length).toBe(1); + }); + + describe('field values list', () => { + let columns: any; + + const field = { + name: 'Foo', + value: 'Bar', + type: 'string', + }; + + beforeEach(() => { + const wrapper = shallow(); + columns = wrapper.find(EuiBasicTable).props().columns; + }); + + it('will render the field name in the first column', () => { + const column = columns[0]; + const wrapper = shallow(
{column.render(field)}
); + expect(wrapper.text()).toEqual('Foo'); + }); + + it('will render the field value in the second column', () => { + const column = columns[1]; + const wrapper = shallow(
{column.render(field)}
); + expect(wrapper.find(ResultFieldValue).props()).toEqual({ + raw: 'Bar', + type: 'string', + }); + }); + }); + + it('will delete the document when the delete button is pressed', () => { + const wrapper = shallow(); + const button = wrapper.find('[data-test-subj="DeleteDocumentButton"]'); + + button.simulate('click'); + + expect(actions.deleteDocument).toHaveBeenCalledWith('1'); + }); + + it('correctly decodes document IDs', () => { + (useParams as jest.Mock).mockReturnValueOnce({ documentId: 'hello%20world%20%26%3F!' }); + const wrapper = shallow(); + expect(wrapper.find('h1').text()).toEqual('Document: hello world &?!'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.tsx new file mode 100644 index 00000000000000..017f5a2f67ad07 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail.tsx @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; +import { useActions, useValues } from 'kea'; +import { useParams } from 'react-router-dom'; + +import { + EuiButton, + EuiPageHeader, + EuiPageHeaderSection, + EuiTitle, + EuiPageContentBody, + EuiPageContent, + EuiBasicTable, + EuiBasicTableColumn, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { Loading } from '../../../shared/loading'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { FlashMessages } from '../../../shared/flash_messages'; +import { ResultFieldValue } from '../result_field_value'; + +import { DocumentDetailLogic } from './document_detail_logic'; +import { FieldDetails } from './types'; +import { DOCUMENTS_TITLE } from './constants'; + +const DOCUMENT_DETAIL_TITLE = (documentId: string) => + i18n.translate('xpack.enterpriseSearch.appSearch.documentDetail.title', { + defaultMessage: 'Document: {documentId}', + values: { documentId }, + }); +interface Props { + engineBreadcrumb: string[]; +} + +export const DocumentDetail: React.FC = ({ engineBreadcrumb }) => { + const { dataLoading, fields } = useValues(DocumentDetailLogic); + const { deleteDocument, getDocumentDetails, setFields } = useActions(DocumentDetailLogic); + + const { documentId } = useParams() as { documentId: string }; + + useEffect(() => { + getDocumentDetails(documentId); + return () => { + setFields([]); + }; + }, []); + + if (dataLoading) { + return ; + } + + const columns: Array> = [ + { + name: i18n.translate('xpack.enterpriseSearch.appSearch.documentDetail.fieldHeader', { + defaultMessage: 'Field', + }), + width: '20%', + render: (field: FieldDetails) => field.name, + }, + { + name: i18n.translate('xpack.enterpriseSearch.appSearch.documentDetail.valueHeader', { + defaultMessage: 'Value', + }), + width: '80%', + render: ({ value, type }: FieldDetails) => , + }, + ]; + + return ( + <> + + + + +

{DOCUMENT_DETAIL_TITLE(decodeURIComponent(documentId))}

+
+
+ + deleteDocument(documentId)} + data-test-subj="DeleteDocumentButton" + > + {i18n.translate('xpack.enterpriseSearch.appSearch.documentDetail.deleteButton', { + defaultMessage: 'Delete', + })} + + +
+ + + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.test.ts index 782b8159c94a10..4afa3f7aee5c88 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.test.ts @@ -16,6 +16,11 @@ jest.mock('../engine', () => ({ EngineLogic: { values: { engineName: 'engine1' } }, })); +jest.mock('../../../shared/kibana', () => ({ + KibanaLogic: { values: { navigateToUrl: jest.fn() } }, +})); +import { KibanaLogic } from '../../../shared/kibana'; + jest.mock('../../../shared/flash_messages', () => ({ setQueuedSuccessMessage: jest.fn(), flashAPIErrors: jest.fn(), @@ -98,7 +103,8 @@ describe('DocumentDetailLogic', () => { } catch { // Do nothing } - expect(flashAPIErrors).toHaveBeenCalledWith('An error occurred'); + expect(flashAPIErrors).toHaveBeenCalledWith('An error occurred', { isQueued: true }); + expect(KibanaLogic.values.navigateToUrl).toHaveBeenCalledWith('/engines/engine1/documents'); }); }); @@ -117,7 +123,7 @@ describe('DocumentDetailLogic', () => { confirmSpy.mockRestore(); }); - it('will call an API endpoint and show a success message', async () => { + it('will call an API endpoint and show a success message on the documents page', async () => { mount(); DocumentDetailLogic.actions.deleteDocument('1'); @@ -126,6 +132,7 @@ describe('DocumentDetailLogic', () => { expect(setQueuedSuccessMessage).toHaveBeenCalledWith( 'Successfully marked document for deletion. It will be deleted momentarily.' ); + expect(KibanaLogic.values.navigateToUrl).toHaveBeenCalledWith('/engines/engine1/documents'); }); it('will do nothing if not confirmed', async () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.ts index 87bf149fb1680b..62db2bf1723543 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/document_detail_logic.ts @@ -11,6 +11,8 @@ import { HttpLogic } from '../../../shared/http'; import { EngineLogic } from '../engine'; import { flashAPIErrors, setQueuedSuccessMessage } from '../../../shared/flash_messages'; import { FieldDetails } from './types'; +import { KibanaLogic } from '../../../shared/kibana'; +import { ENGINE_DOCUMENTS_PATH, getEngineRoute } from '../../routes'; interface DocumentDetailLogicValues { dataLoading: boolean; @@ -65,13 +67,17 @@ export const DocumentDetailLogic = kea({ try { const { http } = HttpLogic.values; - // TODO: Handle 404s const response = await http.get( `/api/app_search/engines/${engineName}/documents/${documentId}` ); actions.setFields(response.fields); } catch (e) { - flashAPIErrors(e); + // If an error occurs trying to load this document, it will typically be a 404, or some other + // error that will prevent the page from loading, so redirect to the documents page and + // show the error + flashAPIErrors(e, { isQueued: true }); + const engineRoute = getEngineRoute(engineName); + KibanaLogic.values.navigateToUrl(engineRoute + ENGINE_DOCUMENTS_PATH); } }, deleteDocument: async ({ documentId }) => { @@ -82,7 +88,8 @@ export const DocumentDetailLogic = kea({ const { http } = HttpLogic.values; await http.delete(`/api/app_search/engines/${engineName}/documents/${documentId}`); setQueuedSuccessMessage(DELETE_SUCCESS); - // TODO Handle routing after success + const engineRoute = getEngineRoute(engineName); + KibanaLogic.values.navigateToUrl(engineRoute + ENGINE_DOCUMENTS_PATH); } catch (e) { flashAPIErrors(e); } diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.test.tsx new file mode 100644 index 00000000000000..8940cc259c6476 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.test.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { setMockValues } from '../../../__mocks__/kea.mock'; + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { DocumentCreationButton } from './document_creation_button'; +import { SearchExperience } from './search_experience'; +import { Documents } from '.'; + +describe('Documents', () => { + const values = { + isMetaEngine: false, + myRole: { canManageEngineDocuments: true }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(SearchExperience).exists()).toBe(true); + }); + + it('renders a DocumentCreationButton if the user can manage engine documents', () => { + setMockValues({ + ...values, + myRole: { canManageEngineDocuments: true }, + }); + + const wrapper = shallow(); + expect(wrapper.find(DocumentCreationButton).exists()).toBe(true); + }); + + describe('Meta Engines', () => { + it('renders a Meta Engines message if this is a meta engine', () => { + setMockValues({ + ...values, + isMetaEngine: true, + }); + + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="MetaEnginesCallout"]').exists()).toBe(true); + }); + + it('does not render a Meta Engines message if this is not a meta engine', () => { + setMockValues({ + ...values, + isMetaEngine: false, + }); + + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="MetaEnginesCallout"]').exists()).toBe(false); + }); + + it('does not render a DocumentCreationButton even if the user can manage engine documents', () => { + setMockValues({ + ...values, + myRole: { canManageEngineDocuments: true }, + isMetaEngine: true, + }); + + const wrapper = shallow(); + expect(wrapper.find(DocumentCreationButton).exists()).toBe(false); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.tsx new file mode 100644 index 00000000000000..f7881dc991ae6d --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/documents.tsx @@ -0,0 +1,70 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { EuiPageHeader, EuiPageHeaderSection, EuiTitle, EuiCallOut, EuiSpacer } from '@elastic/eui'; +import { useValues } from 'kea'; +import { i18n } from '@kbn/i18n'; + +import { DocumentCreationButton } from './document_creation_button'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { FlashMessages } from '../../../shared/flash_messages'; +import { DOCUMENTS_TITLE } from './constants'; +import { EngineLogic } from '../engine'; +import { AppLogic } from '../../app_logic'; +import { SearchExperience } from './search_experience'; + +interface Props { + engineBreadcrumb: string[]; +} + +export const Documents: React.FC = ({ engineBreadcrumb }) => { + const { isMetaEngine } = useValues(EngineLogic); + const { myRole } = useValues(AppLogic); + + return ( + <> + + + + +

{DOCUMENTS_TITLE}

+
+
+ {myRole.canManageEngineDocuments && !isMetaEngine && ( + + + + )} +
+ + {isMetaEngine && ( + <> + +

+ {i18n.translate('xpack.enterpriseSearch.appSearch.documents.metaEngineCallout', { + defaultMessage: + 'Meta Engines have many Source Engines. Visit your Source Engines to alter their documents.', + })} +

+
+ + + )} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/index.ts index d374098d707885..b67e444939c0e5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/index.ts @@ -6,3 +6,5 @@ export { DocumentDetailLogic } from './document_detail_logic'; export { DocumentsLogic } from './documents_logic'; +export { Documents } from './documents'; +export { DocumentDetail } from './document_detail'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/__mocks__/hooks.mock.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/__mocks__/hooks.mock.ts new file mode 100644 index 00000000000000..c29f1204b369f3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/__mocks__/hooks.mock.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +jest.mock('../hooks', () => ({ + useSearchContextActions: jest.fn(() => ({})), + useSearchContextState: jest.fn(() => ({})), +})); + +import { useSearchContextState, useSearchContextActions } from '../hooks'; + +export const setMockSearchContextState = (values: object) => { + (useSearchContextState as jest.Mock).mockImplementation(() => values); +}; +export const setMockSearchContextActions = (actions: object) => { + (useSearchContextActions as jest.Mock).mockImplementation(() => actions); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.test.tsx new file mode 100644 index 00000000000000..e9d374ed89a6f6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.test.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +const mockAction = jest.fn(); + +let mockSubcription: (state: object) => void; +const mockDriver = { + state: { foo: 'foo' }, + actions: { bar: mockAction }, + subscribeToStateChanges: jest.fn().mockImplementation((fn) => { + mockSubcription = fn; + }), + unsubscribeToStateChanges: jest.fn(), +}; + +jest.mock('react', () => ({ + ...(jest.requireActual('react') as object), + useContext: jest.fn(() => ({ + driver: mockDriver, + })), +})); + +import React from 'react'; +import { act } from 'react-dom/test-utils'; +import { mount, ReactWrapper } from 'enzyme'; + +import { useSearchContextState, useSearchContextActions } from './hooks'; + +describe('hooks', () => { + describe('useSearchContextState', () => { + const TestComponent = () => { + const { foo } = useSearchContextState(); + return
{foo}
; + }; + + let wrapper: ReactWrapper; + beforeAll(() => { + wrapper = mount(); + }); + + it('exposes search state', () => { + expect(wrapper.text()).toEqual('foo'); + }); + + it('subscribes to state changes', () => { + act(() => { + mockSubcription({ foo: 'bar' }); + }); + + expect(wrapper.text()).toEqual('bar'); + }); + + it('unsubscribes to state changes when unmounted', () => { + wrapper.unmount(); + + expect(mockDriver.unsubscribeToStateChanges).toHaveBeenCalled(); + }); + }); + + describe('useSearchContextActions', () => { + it('exposes actions', () => { + const TestComponent = () => { + const { bar } = useSearchContextActions(); + bar(); + return null; + }; + + mount(); + expect(mockAction).toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.ts new file mode 100644 index 00000000000000..25a38421ead685 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/hooks.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useContext, useEffect, useState } from 'react'; + +// @ts-expect-error types are not available for this package yet +import { SearchContext } from '@elastic/react-search-ui'; + +export const useSearchContextState = () => { + const { driver } = useContext(SearchContext); + const [state, setState] = useState(driver.state); + + useEffect(() => { + driver.subscribeToStateChanges((newState: object) => { + setState(newState); + }); + return () => { + driver.unsubscribeToStateChanges(); + }; + }, [state]); + + return state; +}; + +export const useSearchContextActions = () => { + const { driver } = useContext(SearchContext); + return driver.actions; +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/index.ts new file mode 100644 index 00000000000000..9b09b3180e3e18 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { SearchExperience } from './search_experience'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.test.tsx new file mode 100644 index 00000000000000..b63e332d415b82 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.test.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; +// @ts-expect-error types are not available for this package yet +import { Paging, ResultsPerPage } from '@elastic/react-search-ui'; + +import { Pagination } from './pagination'; + +describe('Pagination', () => { + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(Paging).exists()).toBe(true); + expect(wrapper.find(ResultsPerPage).exists()).toBe(true); + }); + + it('passes aria-label through to Paging', () => { + const wrapper = shallow(); + expect(wrapper.find(Paging).prop('aria-label')).toEqual('foo'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.tsx new file mode 100644 index 00000000000000..7f4e6660e088fa --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/pagination.tsx @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +// @ts-expect-error types are not available for this package yet +import { Paging, ResultsPerPage } from '@elastic/react-search-ui'; +import { PagingView, ResultsPerPageView } from './views'; + +export const Pagination: React.FC<{ 'aria-label': string }> = ({ 'aria-label': ariaLabel }) => ( + + + + + + + + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.scss b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.scss new file mode 100644 index 00000000000000..cbc72dbffe57a3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.scss @@ -0,0 +1,19 @@ +.documentsSearchExperience { + .sui-results-container { + flex-grow: 1; + padding: 0; + } + + .documentsSearchExperience__sidebar { + flex-grow: 1; + min-width: $euiSize * 19; + } + + .documentsSearchExperience__content { + flex-grow: 4; + } + + .documentsSearchExperience__pagingInfo { + flex-grow: 0; + } +} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.test.tsx new file mode 100644 index 00000000000000..750d00311255ce --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.test.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import '../../../../__mocks__/kea.mock'; +import { setMockValues } from '../../../../__mocks__'; +import '../../../../__mocks__/enterprise_search_url.mock'; + +import React from 'react'; +// @ts-expect-error types are not available for this package yet +import { SearchProvider } from '@elastic/react-search-ui'; +import { shallow } from 'enzyme'; + +import { SearchExperience } from './search_experience'; + +describe('SearchExperience', () => { + const values = { + engine: { + name: 'some-engine', + apiKey: '1234', + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(SearchProvider).length).toBe(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.tsx new file mode 100644 index 00000000000000..49cc573b686bc2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { useValues } from 'kea'; +import { EuiSpacer, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +// @ts-expect-error types are not available for this package yet; +import { SearchProvider, SearchBox, Sorting } from '@elastic/react-search-ui'; +// @ts-expect-error types are not available for this package yet +import AppSearchAPIConnector from '@elastic/search-ui-app-search-connector'; + +import './search_experience.scss'; + +import { EngineLogic } from '../../engine'; +import { externalUrl } from '../../../../shared/enterprise_search_url'; + +import { SearchBoxView, SortingView } from './views'; +import { SearchExperienceContent } from './search_experience_content'; + +const DEFAULT_SORT_OPTIONS = [ + { + name: i18n.translate('xpack.enterpriseSearch.appSearch.documents.search.recentlyUploadedDesc', { + defaultMessage: 'Recently Uploaded (desc)', + }), + value: 'id', + direction: 'desc', + }, + { + name: i18n.translate('xpack.enterpriseSearch.appSearch.documents.search.recentlyUploadedAsc', { + defaultMessage: 'Recently Uploaded (asc)', + }), + value: 'id', + direction: 'asc', + }, +]; + +export const SearchExperience: React.FC = () => { + const { engine } = useValues(EngineLogic); + const endpointBase = externalUrl.enterpriseSearchUrl; + + // TODO const sortFieldsOptions = _flatten(fields.sortFields.map(fieldNameToSortOptions)) // we need to flatten this array since fieldNameToSortOptions returns an array of two sorting options + const sortingOptions = [...DEFAULT_SORT_OPTIONS /* TODO ...sortFieldsOptions*/]; + + const connector = new AppSearchAPIConnector({ + cacheResponses: false, + endpointBase, + engineName: engine.name, + searchKey: engine.apiKey, + }); + + const searchProviderConfig = { + alwaysSearchOnInitialLoad: true, + apiConnector: connector, + trackUrlState: false, + initialState: { + sortDirection: 'desc', + sortField: 'id', + }, + }; + + return ( +
+ + + + + + + + + + + + +
+ ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.test.tsx new file mode 100644 index 00000000000000..22a63f653a2941 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.test.tsx @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { setMockValues } from '../../../../__mocks__/kea.mock'; +import { setMockSearchContextState } from './__mocks__/hooks.mock'; + +import React from 'react'; + +import { shallow, mount } from 'enzyme'; +// @ts-expect-error types are not available for this package yet +import { Results } from '@elastic/react-search-ui'; + +import { ResultView } from './views'; +import { Pagination } from './pagination'; +import { SearchExperienceContent } from './search_experience_content'; + +describe('SearchExperienceContent', () => { + const searchState = { + resultSearchTerm: 'searchTerm', + totalResults: 100, + wasSearched: true, + }; + const values = { + engineName: 'engine1', + isMetaEngine: false, + myRole: { canManageEngineDocuments: true }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + setMockValues(values); + setMockSearchContextState(searchState); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(false); + }); + + it('passes engineName to the result view', () => { + const props = { + result: { + foo: { + raw: 'bar', + }, + }, + }; + + const wrapper = shallow(); + const resultView: any = wrapper.find(Results).prop('resultView'); + expect(resultView(props)).toEqual(); + }); + + it('renders pagination', () => { + const wrapper = shallow(); + expect(wrapper.find(Pagination).exists()).toBe(true); + }); + + it('renders empty if a search was not performed yet', () => { + setMockSearchContextState({ + ...searchState, + wasSearched: false, + }); + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + }); + + it('renders results if a search was performed and there are more than 0 totalResults', () => { + setMockSearchContextState({ + ...searchState, + wasSearched: true, + totalResults: 10, + }); + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="documentsSearchResults"]').length).toBe(1); + }); + + it('renders a no results message if a non-empty search was performed and there are no results', () => { + setMockSearchContextState({ + ...searchState, + resultSearchTerm: 'searchTerm', + wasSearched: true, + totalResults: 0, + }); + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="documentsSearchResults"]').length).toBe(0); + expect(wrapper.find('[data-test-subj="documentsSearchNoResults"]').length).toBe(1); + }); + + describe('when an empty search was performed and there are no results, meaning there are no documents indexed', () => { + beforeEach(() => { + setMockSearchContextState({ + ...searchState, + resultSearchTerm: '', + wasSearched: true, + totalResults: 0, + }); + }); + + it('renders a no documents message', () => { + const wrapper = shallow(); + expect(wrapper.find('[data-test-subj="documentsSearchResults"]').length).toBe(0); + expect(wrapper.find('[data-test-subj="documentsSearchNoDocuments"]').length).toBe(1); + }); + + it('will include a button to index new documents', () => { + const wrapper = mount(); + expect( + wrapper + .find( + '[data-test-subj="documentsSearchNoDocuments"] [data-test-subj="IndexDocumentsButton"]' + ) + .exists() + ).toBe(true); + }); + + it('will include a button to documentation if this is a meta engine', () => { + setMockValues({ + ...values, + isMetaEngine: true, + }); + + const wrapper = mount(); + + expect( + wrapper + .find( + '[data-test-subj="documentsSearchNoDocuments"] [data-test-subj="IndexDocumentsButton"]' + ) + .exists() + ).toBe(false); + + expect( + wrapper + .find( + '[data-test-subj="documentsSearchNoDocuments"] [data-test-subj="documentsSearchDocsLink"]' + ) + .exists() + ).toBe(true); + }); + + it('will include a button to documentation if the user cannot manage documents', () => { + setMockValues({ + ...values, + myRole: { canManageEngineDocuments: false }, + }); + + const wrapper = mount(); + + expect( + wrapper + .find( + '[data-test-subj="documentsSearchNoDocuments"] [data-test-subj="IndexDocumentsButton"]' + ) + .exists() + ).toBe(false); + + expect( + wrapper + .find( + '[data-test-subj="documentsSearchNoDocuments"] [data-test-subj="documentsSearchDocsLink"]' + ) + .exists() + ).toBe(true); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.tsx new file mode 100644 index 00000000000000..938c8930f4dd14 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/search_experience_content.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiFlexGroup, EuiSpacer, EuiButton, EuiEmptyPrompt } from '@elastic/eui'; +// @ts-expect-error types are not available for this package yet +import { Results, Paging, ResultsPerPage } from '@elastic/react-search-ui'; +import { useValues } from 'kea'; + +import { ResultView } from './views'; +import { Pagination } from './pagination'; +import { useSearchContextState } from './hooks'; +import { DocumentCreationButton } from '../document_creation_button'; +import { AppLogic } from '../../../app_logic'; +import { EngineLogic } from '../../engine'; +import { DOCS_PREFIX } from '../../../routes'; + +// TODO This is temporary until we create real Result type +interface Result { + [key: string]: { + raw: string | string[] | number | number[] | undefined; + }; +} + +export const SearchExperienceContent: React.FC = () => { + const { resultSearchTerm, totalResults, wasSearched } = useSearchContextState(); + + const { myRole } = useValues(AppLogic); + const { engineName, isMetaEngine } = useValues(EngineLogic); + + if (!wasSearched) return null; + + if (totalResults) { + return ( + + + + { + return ; + }} + /> + + + + ); + } + + // If we have no results, but have a search term, show a message + if (resultSearchTerm) { + return ( + + ); + } + + // If we have no results AND no search term, show a CTA for the user to index documents + return ( + + {i18n.translate('xpack.enterpriseSearch.appSearch.documents.search.indexDocumentsTitle', { + defaultMessage: 'No documents yet!', + })} + + } + body={i18n.translate('xpack.enterpriseSearch.appSearch.documents.search.indexDocuments', { + defaultMessage: 'Indexed documents will show up here.', + })} + actions={ + !isMetaEngine && myRole.canManageEngineDocuments ? ( + + ) : ( + + {i18n.translate('xpack.enterpriseSearch.appSearch.documents.search.indexingGuide', { + defaultMessage: 'Read the indexing guide', + })} + + ) + } + /> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/index.ts new file mode 100644 index 00000000000000..8c88fc81d3a3c2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { SearchBoxView } from './search_box_view'; +export { SortingView } from './sorting_view'; +export { ResultView } from './result_view'; +export { ResultsPerPageView } from './results_per_page_view'; +export { PagingView } from './paging_view'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.test.tsx new file mode 100644 index 00000000000000..32468c153949f6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.test.tsx @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { shallow } from 'enzyme'; +import { EuiPagination } from '@elastic/eui'; + +import { PagingView } from './paging_view'; + +describe('PagingView', () => { + const props = { + current: 1, + totalPages: 20, + onChange: jest.fn(), + 'aria-label': 'paging view', + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiPagination).length).toBe(1); + }); + + it('passes through totalPage', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiPagination).prop('pageCount')).toEqual(20); + }); + + it('passes through aria-label', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiPagination).prop('aria-label')).toEqual('paging view'); + }); + + it('decrements current page by 1 and passes it through as activePage', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiPagination).prop('activePage')).toEqual(0); + }); + + it('calls onChange when onPageClick is triggered, and adds 1', () => { + const wrapper = shallow(); + const onPageClick: any = wrapper.find(EuiPagination).prop('onPageClick'); + onPageClick(3); + expect(props.onChange).toHaveBeenCalledWith(4); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.tsx new file mode 100644 index 00000000000000..aafaac38269c1f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/paging_view.tsx @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { EuiPagination } from '@elastic/eui'; + +interface Props { + current: number; + totalPages: number; + onChange(pageNumber: number): void; + 'aria-label': string; +} + +export const PagingView: React.FC = ({ + current, + onChange, + totalPages, + 'aria-label': ariaLabel, +}) => ( + onChange(page + 1)} // EuiPagination is 0-indexed, Search UI is 1-indexed + aria-label={ariaLabel} + /> +); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.test.tsx new file mode 100644 index 00000000000000..73ddf16e01074e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.test.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { ResultView } from '.'; + +describe('ResultView', () => { + const result = { + id: { + raw: '1', + }, + }; + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find('div').length).toBe(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.tsx new file mode 100644 index 00000000000000..bf472ec3bb21ec --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/result_view.tsx @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { EuiPanel, EuiSpacer } from '@elastic/eui'; + +import { EuiLinkTo } from '../../../../../shared/react_router_helpers'; + +// TODO replace this with a real result type when we implement a more sophisticated +// ResultView +interface Result { + [key: string]: { + raw: string | string[] | number | number[] | undefined; + }; +} + +interface Props { + engineName: string; + result: Result; +} + +export const ResultView: React.FC = ({ engineName, result }) => { + // TODO Replace this entire component when we migrate StuiResult + return ( +
  • + + + {result.id.raw} + + {Object.entries(result).map(([key, value]) => ( +
    + {key}: {value.raw} +
    + ))} +
    + +
  • + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.test.tsx new file mode 100644 index 00000000000000..eea91e475de94b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.test.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; + +import { shallow } from 'enzyme'; +import { EuiSelect } from '@elastic/eui'; + +import { ResultsPerPageView } from '.'; + +describe('ResultsPerPageView', () => { + const props = { + options: [1, 2, 3], + value: 1, + onChange: jest.fn(), + }; + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).length).toBe(1); + }); + + it('maps options to correct EuiSelect option', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).prop('options')).toEqual([ + { text: 1, value: 1 }, + { text: 2, value: 2 }, + { text: 3, value: 3 }, + ]); + }); + + it('passes through the value if it exists in options', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).prop('value')).toEqual(1); + }); + + it('does not pass through the value if it does not exist in options', () => { + const wrapper = shallow( + + ); + expect(wrapper.find(EuiSelect).prop('value')).toBeUndefined(); + }); + + it('passes through an onChange to EuiSelect', () => { + const wrapper = shallow(); + const onChange: any = wrapper.find(EuiSelect).prop('onChange'); + onChange({ target: { value: 2 } }); + expect(props.onChange).toHaveBeenCalledWith(2); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.tsx new file mode 100644 index 00000000000000..5152f1191fcb2f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/results_per_page_view.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiSelect, EuiSelectOption } from '@elastic/eui'; + +const wrapResultsPerPageOptionForEuiSelect: (option: number) => EuiSelectOption = (option) => ({ + text: option, + value: option, +}); + +interface Props { + options: number[]; + value: number; + onChange(value: number): void; +} + +export const ResultsPerPageView: React.FC = ({ onChange, options, value }) => { + // If we don't have the value in options, unset it + const selectedValue = value && !options.includes(value) ? undefined : value; + + return ( +
    + onChange(parseInt(event.target.value, 10))} + aria-label={i18n.translate( + 'xpack.enterpriseSearch.appSearch.documents.search.resultsPerPage.ariaLabel', + { + defaultMessage: 'Number of results to show per page', + } + )} + /> +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.test.tsx new file mode 100644 index 00000000000000..59033621e356e5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.test.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; +import { EuiFieldSearch } from '@elastic/eui'; + +import { SearchBoxView } from './search_box_view'; + +describe('SearchBoxView', () => { + const props = { + onChange: jest.fn(), + value: 'foo', + inputProps: { + placeholder: 'bar', + 'aria-label': 'foo', + 'data-test-subj': 'bar', + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.type()).toEqual(EuiFieldSearch); + expect(wrapper.find(EuiFieldSearch).prop('value')).toEqual('foo'); + expect(wrapper.find(EuiFieldSearch).prop('placeholder')).toEqual('bar'); + }); + + it('passes through an onChange to EuiFieldSearch', () => { + const wrapper = shallow(); + wrapper.prop('onChange')({ target: { value: 'test' } }); + expect(props.onChange).toHaveBeenCalledWith('test'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.tsx new file mode 100644 index 00000000000000..002c9f84810ff7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/search_box_view.tsx @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { EuiFieldSearch } from '@elastic/eui'; + +interface Props { + inputProps: { + placeholder: string; + 'aria-label': string; + 'data-test-subj': string; + }; + value: string; + onChange(value: string): void; +} + +export const SearchBoxView: React.FC = ({ onChange, value, inputProps }) => { + return ( + onChange(event.target.value)} + fullWidth={true} + {...inputProps} + /> + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.test.tsx new file mode 100644 index 00000000000000..40d6695d4eb6f6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.test.tsx @@ -0,0 +1,58 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; +import { EuiSelect } from '@elastic/eui'; + +import { SortingView } from '.'; + +describe('SortingView', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + const props = { + options: [{ label: 'Label', value: 'Value' }], + value: 'Value', + onChange: jest.fn(), + }; + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).length).toBe(1); + }); + + it('maps options to correct EuiSelect option', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).prop('options')).toEqual([{ text: 'Label', value: 'Value' }]); + }); + + it('passes through the value if it exists in options', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSelect).prop('value')).toEqual('Value'); + }); + + it('does not pass through the value if it does not exist in options', () => { + const wrapper = shallow( + + ); + expect(wrapper.find(EuiSelect).prop('value')).toBeUndefined(); + }); + + it('passes through an onChange to EuiSelect', () => { + const wrapper = shallow(); + const onChange: any = wrapper.find(EuiSelect).prop('onChange'); + onChange({ target: { value: 'test' } }); + expect(props.onChange).toHaveBeenCalledWith('test'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.tsx new file mode 100644 index 00000000000000..db56dfcca286ec --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/documents/search_experience/views/sorting_view.tsx @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { i18n } from '@kbn/i18n'; +import { EuiSelect, EuiSelectOption } from '@elastic/eui'; + +interface Option { + label: string; + value: string; +} + +const wrapSortingOptionForEuiSelect: (option: Option) => EuiSelectOption = (option) => ({ + text: option.label, + value: option.value, +}); + +const getValueFromOption: (option: Option) => string = (option) => option.value; + +interface Props { + options: Option[]; + value: string; + onChange(value: string): void; +} + +export const SortingView: React.FC = ({ onChange, options, value }) => { + // If we don't have the value in options, unset it + const valuesFromOptions = options.map(getValueFromOption); + const selectedValue = value && !valuesFromOptions.includes(value) ? undefined : value; + + return ( +
    + onChange(event.target.value)} + aria-label={i18n.translate( + 'xpack.enterpriseSearch.appSearch.documents.search.sortBy.ariaLabel', + { + defaultMessage: 'Sort results by', + } + )} + /> +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts index 2e7595e3ee87b4..e1ce7cea0fa914 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_logic.ts @@ -8,12 +8,12 @@ import { kea, MakeLogicType } from 'kea'; import { HttpLogic } from '../../../shared/http'; -import { IndexingStatus } from '../schema/types'; +import { IIndexingStatus } from '../../../shared/types'; import { EngineDetails } from './types'; interface EngineValues { dataLoading: boolean; - engine: EngineDetails | {}; + engine: Partial; engineName: string; isMetaEngine: boolean; isSampleEngine: boolean; @@ -25,7 +25,7 @@ interface EngineValues { interface EngineActions { setEngineData(engine: EngineDetails): { engine: EngineDetails }; setEngineName(engineName: string): { engineName: string }; - setIndexingStatus(activeReindexJob: IndexingStatus): { activeReindexJob: IndexingStatus }; + setIndexingStatus(activeReindexJob: IIndexingStatus): { activeReindexJob: IIndexingStatus }; setEngineNotFound(notFound: boolean): { notFound: boolean }; clearEngine(): void; initializeEngine(): void; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx index a7ac6f203b1f72..35389bbe4b3ba7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_nav.tsx @@ -111,8 +111,8 @@ export const EngineNav: React.FC = () => { )} {canViewEngineDocuments && ( {DOCUMENTS_TITLE} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx index f586106924f2cb..9e0b043a87364a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/engine_router.tsx @@ -19,7 +19,8 @@ import { ENGINES_PATH, ENGINE_PATH, ENGINE_ANALYTICS_PATH, - // ENGINE_DOCUMENTS_PATH, + ENGINE_DOCUMENTS_PATH, + ENGINE_DOCUMENT_DETAIL_PATH, // ENGINE_SCHEMA_PATH, // ENGINE_CRAWLER_PATH, // META_ENGINE_SOURCE_ENGINES_PATH, @@ -49,6 +50,7 @@ import { Loading } from '../../../shared/loading'; import { EngineOverview } from '../engine_overview'; import { EngineLogic } from './'; +import { DocumentDetail, Documents } from '../documents'; export const EngineRouter: React.FC = () => { const { @@ -99,6 +101,12 @@ export const EngineRouter: React.FC = () => {
    Just testing right now
    )} + + + + + + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/types.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/types.ts index 635d1136291aa0..99ad19fea06191 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine/types.ts @@ -5,7 +5,7 @@ */ import { ApiToken } from '../credentials/types'; -import { Schema, SchemaConflicts, IndexingStatus } from '../schema/types'; +import { Schema, SchemaConflicts, IIndexingStatus } from '../../../shared/types'; export interface Engine { name: string; @@ -26,7 +26,7 @@ export interface EngineDetails extends Engine { schema: Schema; schemaConflicts?: SchemaConflicts; unconfirmedFields?: string[]; - activeReindexJob?: IndexingStatus; + activeReindexJob?: IIndexingStatus; invalidBoosts: boolean; sample?: boolean; isMeta: boolean; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.test.tsx index c8872fe43a1846..ea7eeea750cc48 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.test.tsx @@ -17,23 +17,27 @@ import { EnginesTable } from './engines_table'; describe('EnginesTable', () => { const onPaginate = jest.fn(); // onPaginate updates the engines API call upstream - const wrapper = mountWithIntl( - - ); + const data = [ + { + name: 'test-engine', + created_at: 'Fri, 1 Jan 1970 12:00:00 +0000', + language: 'English', + isMeta: false, + document_count: 99999, + field_count: 10, + }, + ]; + const pagination = { + totalEngines: 50, + pageIndex: 0, + onPaginate, + }; + const props = { + data, + pagination, + }; + + const wrapper = mountWithIntl(); const table = wrapper.find(EuiBasicTable); it('renders', () => { @@ -42,7 +46,8 @@ describe('EnginesTable', () => { const tableContent = table.text(); expect(tableContent).toContain('test-engine'); - expect(tableContent).toContain('January 1, 1970'); + expect(tableContent).toContain('Jan 1, 1970'); + expect(tableContent).toContain('English'); expect(tableContent).toContain('99,999'); expect(tableContent).toContain('10'); @@ -80,4 +85,57 @@ describe('EnginesTable', () => { expect(emptyTable.prop('pagination').pageIndex).toEqual(0); }); + + describe('language field', () => { + it('renders language when available', () => { + const wrapperWithLanguage = mountWithIntl( + + ); + const tableContent = wrapperWithLanguage.find(EuiBasicTable).text(); + expect(tableContent).toContain('German'); + }); + + it('renders the language as Universal if no language is set', () => { + const wrapperWithLanguage = mountWithIntl( + + ); + const tableContent = wrapperWithLanguage.find(EuiBasicTable).text(); + expect(tableContent).toContain('Universal'); + }); + + it('renders no language text if the engine is a Meta Engine', () => { + const wrapperWithLanguage = mountWithIntl( + + ); + const tableContent = wrapperWithLanguage.find(EuiBasicTable).text(); + expect(tableContent).not.toContain('Universal'); + }); + }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.tsx index 7d69cd2b4d4da0..e9805ab8f27110 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engines/engines_table.tsx @@ -15,12 +15,15 @@ import { EuiLinkTo } from '../../../shared/react_router_helpers'; import { getEngineRoute } from '../../routes'; import { ENGINES_PAGE_SIZE } from '../../../../../common/constants'; +import { UNIVERSAL_LANGUAGE } from '../../constants'; interface EnginesTableData { name: string; created_at: string; document_count: number; field_count: number; + language: string | null; + isMeta: boolean; } interface EnginesTablePagination { totalEngines: number; @@ -84,10 +87,22 @@ export const EnginesTable: React.FC = ({ ), dataType: 'string', render: (dateString: string) => ( - // e.g., January 1, 1970 - + // e.g., Jan 1, 1970 + ), }, + { + field: 'language', + name: i18n.translate( + 'xpack.enterpriseSearch.appSearch.enginesOverview.table.column.language', + { + defaultMessage: 'Language', + } + ), + dataType: 'string', + render: (language: string, engine: EnginesTableData) => + engine.isMeta ? '' : language || UNIVERSAL_LANGUAGE, + }, { field: 'document_count', name: i18n.translate( diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/index.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/index.ts new file mode 100644 index 00000000000000..43755eaadaf812 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { ResultFieldValue } from './result_field_value'; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.scss b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.scss new file mode 100644 index 00000000000000..13a771d24adc98 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.scss @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +.enterpriseSearchDataType { + &--number, + &--float { + color: $euiColorAccentText; + font-family: $euiCodeFontFamily; + } + + &--location { + color: $euiColorSuccessText; + font-family: $euiCodeFontFamily; + } + + &--date { + font-family: $euiCodeFontFamily; + } +} + +.enterpriseSearchResultHighlight { + color: $euiColorPrimary; + font-weight: $euiFontWeightSemiBold; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.test.tsx new file mode 100644 index 00000000000000..227700bdd0cd20 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.test.tsx @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow, ShallowWrapper } from 'enzyme'; + +import { ResultFieldValue } from '.'; + +describe('ResultFieldValue', () => { + describe('when no raw or snippet values are provided', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a dash', () => { + expect(wrapper.text()).toEqual('—'); + }); + }); + + describe('when there is only a raw value', () => { + describe('and the value is a string', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('foo'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--string'); + }); + }); + + describe('and the value is a string array', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('["foo", "bar"]'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--string'); + }); + }); + + describe('and the value is a number', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('1'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--number'); + }); + }); + + describe('and the value is an array of numbers', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('[1, 2]'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--number'); + }); + }); + + describe('and the value is a location', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('44.6, -110.5'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--location'); + }); + }); + + describe('and the value is an array of locations', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow( + + ); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('[44.6, -110.5, 44.7, -111.0]'); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--location'); + }); + }); + + describe('and the value is a date', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow(); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('1872-03-01T06:00:00Z'); + }); + + it('will have the appropriate type class on outer div', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--date'); + }); + }); + + describe('and the value is an array of dates', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow( + + ); + }); + + it('will render a display value', () => { + expect(wrapper.text()).toEqual('[1872-03-01T06:00:00Z, 1472-04-01T06:00:00Z]'); + }); + + it('will have the appropriate type class on outer div', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--date'); + }); + }); + }); + + describe('when there is a snippet value', () => { + let wrapper: ShallowWrapper; + beforeAll(() => { + wrapper = shallow( + + ); + }); + + it('will render content as html with class names appended to em tags', () => { + expect(wrapper.find('div').html()).toContain( + 'a long description' + ); + }); + + it('will have the appropriate type class', () => { + expect(wrapper.prop('className')).toContain('enterpriseSearchDataType--string'); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.tsx new file mode 100644 index 00000000000000..9ee0f1e0ba043b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/result_field_value/result_field_value.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; + +import { Raw, Snippet } from '../../types'; + +import './result_field_value.scss'; + +const isNotNumeric = (raw: string | number): boolean => { + if (typeof raw === 'number') return false; + return isNaN(parseFloat(raw)); +}; + +const getRawArrayDisplay = (rawArray: Array): string => { + return `[${rawArray.map((raw) => (isNotNumeric(raw) ? `"${raw}"` : raw)).join(', ')}]`; +}; + +const parseHighlights = (highlight: string): string => { + return highlight.replace( + /(.+?)<\/em>/gi, + '$1' + ); +}; + +const isFieldValueEmpty = (type?: string, raw?: Raw, snippet?: Snippet) => { + const isNumber = type === 'number'; + if (isNumber) { + return raw === null; + } + + return !snippet && !raw; +}; + +interface Props { + raw?: Raw; + snippet?: Snippet; + type?: string; + className?: string; +} + +export const ResultFieldValue: React.FC = ({ snippet, raw, type, className }) => { + const isEmpty = isFieldValueEmpty(type, raw, snippet); + if (isEmpty) return <>—; + const classes = classNames({ [`enterpriseSearchDataType--${type}`]: !!type }, className); + return ( +
    + {!!snippet ? null : Array.isArray(raw) ? getRawArrayDisplay(raw) : raw} +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts b/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts deleted file mode 100644 index 84f402dd3b95f2..00000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/schema/types.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -export type SchemaTypes = 'text' | 'number' | 'geolocation' | 'date'; - -export interface Schema { - [key: string]: SchemaTypes; -} - -// this is a mapping of schema field types ("string", "number", "geolocation", "date") to the names -// of source engines which utilize that type -export type SchemaConflictFieldTypes = { - [key in SchemaTypes]: string[]; -}; - -export interface SchemaConflict { - fieldTypes: SchemaConflictFieldTypes; - resolution?: string; -} - -// For now these values are ISchemaConflictFieldTypes, but in the near future will be ISchemaConflict -// once we implement schema conflict resolution -export interface SchemaConflicts { - [key: string]: SchemaConflictFieldTypes; -} - -export interface IndexingStatus { - percentageComplete: number; - numDocumentsWithErrors: number; - activeReindexJobId: number; -} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx index 5936b8f2d4283b..8aa8731d6da48b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; -import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; +import { SetupGuideLayout } from '../../../shared/setup_guide'; import { SetupGuide } from './'; describe('SetupGuide', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx index b3faa73dfaed6a..ec340f70fa7b1d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx @@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { APP_SEARCH_PLUGIN } from '../../../../../common/constants'; -import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; +import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide'; import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendAppSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import { DOCS_PREFIX } from '../../routes'; @@ -23,13 +23,7 @@ export const SetupGuide: React.FC = () => ( standardAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-standard`} elasticsearchNativeAuthLink={`${DOCS_PREFIX}/security-and-users.html#app-search-self-managed-security-and-user-management-elasticsearch-native-realm`} > - + { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/setup_guide/setup_guide.tsx index 4197813feba0f7..7f1924d2870d26 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search/components/setup_guide/setup_guide.tsx @@ -10,7 +10,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { ENTERPRISE_SEARCH_PLUGIN } from '../../../../../common/constants'; -import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; +import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide'; import { SetEnterpriseSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendEnterpriseSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import GettingStarted from './assets/getting_started.png'; @@ -22,13 +22,7 @@ export const SetupGuide: React.FC = () => ( standardAuthLink="https://www.elastic.co/guide/en/app-search/current/security-and-users.html#app-search-self-managed-security-and-user-management-standard" elasticsearchNativeAuthLink="https://www.elastic.co/guide/en/app-search/current/security-and-users.html#app-search-self-managed-security-and-user-management-elasticsearch-native-realm" > - + diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 3436df851c8d81..1271015e40e52e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -41,6 +41,7 @@ export const renderApp = ( const unmountKibanaLogic = mountKibanaLogic({ config, + cloud: plugins.cloud || {}, history: params.history, navigateToUrl: core.application.navigateToUrl, setBreadcrumbs: core.chrome.setBreadcrumbs, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/constants/documentation_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/constants/documentation_links.ts new file mode 100644 index 00000000000000..7e774616ff5989 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/constants/documentation_links.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { CURRENT_MAJOR_VERSION } from '../../../../common/version'; + +export const ENT_SEARCH_DOCS_PREFIX = `https://www.elastic.co/guide/en/enterprise-search/${CURRENT_MAJOR_VERSION}`; + +export const CLOUD_DOCS_PREFIX = `https://www.elastic.co/guide/en/cloud/current`; // Cloud does not have version-prefixed documentation diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/constants/field_types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/constants/field_types.ts new file mode 100644 index 00000000000000..9b8d7b1742f485 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/constants/field_types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const TEXT = 'text'; +export const NUMBER = 'number'; +export const DATE = 'date'; +export const GEOLOCATION = 'geolocation'; + +export const fieldTypeSelectOptions = [ + { value: TEXT, text: TEXT }, + { value: NUMBER, text: NUMBER }, + { value: DATE, text: DATE }, + { value: GEOLOCATION, text: GEOLOCATION }, +]; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/constants/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/constants/index.ts index 4d4ff5f52ef20c..8fa3ccdcb863e6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/constants/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/constants/index.ts @@ -5,3 +5,4 @@ */ export { DEFAULT_META } from './default_meta'; +export * from './documentation_links'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/constants/operations.ts b/x-pack/plugins/enterprise_search/public/applications/shared/constants/operations.ts new file mode 100644 index 00000000000000..96043bb4046ed3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/constants/operations.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export const ADD = 'add'; +export const UPDATE = 'update'; +export const REMOVE = 'remove'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/constants.ts b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/constants.ts new file mode 100644 index 00000000000000..b2b76d5b987b99 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/constants.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +export const INDEXING_STATUS_PROGRESS_TITLE = i18n.translate( + 'xpack.enterpriseSearch.indexingStatus.progress.title', + { + defaultMessage: 'Indexing progress', + } +); + +export const INDEXING_STATUS_HAS_ERRORS_TITLE = i18n.translate( + 'xpack.enterpriseSearch.indexingStatus.hasErrors.title', + { + defaultMessage: 'Several documents have field conversion errors.', + } +); + +export const INDEXING_STATUS_HAS_ERRORS_BUTTON = i18n.translate( + 'xpack.enterpriseSearch.indexingStatus.hasErrors.button', + { + defaultMessage: 'View errors', + } +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/index.ts new file mode 100644 index 00000000000000..4a97f11e8f0ee3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { IndexingStatus } from './indexing_status'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.test.tsx new file mode 100644 index 00000000000000..42cb6c229ad638 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.test.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import '../../__mocks__/kea.mock'; +import '../../__mocks__/shallow_useeffect.mock'; + +import { setMockActions, setMockValues } from '../../__mocks__'; + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { EuiPanel } from '@elastic/eui'; + +import { IndexingStatusContent } from './indexing_status_content'; +import { IndexingStatusErrors } from './indexing_status_errors'; +import { IndexingStatus } from './indexing_status'; + +describe('IndexingStatus', () => { + const getItemDetailPath = jest.fn(); + const onComplete = jest.fn(); + const setGlobalIndexingStatus = jest.fn(); + const fetchIndexingStatus = jest.fn(); + + const props = { + percentageComplete: 50, + numDocumentsWithErrors: 1, + activeReindexJobId: 12, + viewLinkPath: '/path', + statusPath: '/other_path', + itemId: '1', + getItemDetailPath, + onComplete, + setGlobalIndexingStatus, + }; + + beforeEach(() => { + setMockActions({ fetchIndexingStatus }); + }); + + it('renders', () => { + setMockValues({ + percentageComplete: 50, + numDocumentsWithErrors: 0, + }); + const wrapper = shallow(); + + expect(wrapper.find(EuiPanel)).toHaveLength(1); + expect(wrapper.find(IndexingStatusContent)).toHaveLength(1); + expect(fetchIndexingStatus).toHaveBeenCalled(); + }); + + it('renders errors', () => { + setMockValues({ + percentageComplete: 100, + numDocumentsWithErrors: 1, + }); + const wrapper = shallow(); + + expect(wrapper.find(IndexingStatusErrors)).toHaveLength(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.tsx new file mode 100644 index 00000000000000..b2109b7ef3f0bd --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status.tsx @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { useValues, useActions } from 'kea'; + +import { EuiPanel, EuiSpacer } from '@elastic/eui'; + +import { IndexingStatusContent } from './indexing_status_content'; +import { IndexingStatusErrors } from './indexing_status_errors'; +import { IndexingStatusLogic } from './indexing_status_logic'; + +import { IIndexingStatus } from '../types'; + +export interface IIndexingStatusProps { + viewLinkPath: string; + itemId: string; + statusPath: string; + getItemDetailPath?(itemId: string): string; + onComplete(numDocumentsWithErrors: number): void; + setGlobalIndexingStatus?(activeReindexJob: IIndexingStatus): void; +} + +export const IndexingStatus: React.FC = ({ + viewLinkPath, + statusPath, + onComplete, +}) => { + const { percentageComplete, numDocumentsWithErrors } = useValues(IndexingStatusLogic); + const { fetchIndexingStatus } = useActions(IndexingStatusLogic); + + useEffect(() => { + fetchIndexingStatus({ statusPath, onComplete }); + }, []); + + return ( + <> + {percentageComplete < 100 && ( + + + + )} + {percentageComplete === 100 && numDocumentsWithErrors > 0 && ( + <> + + + + )} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.test.tsx new file mode 100644 index 00000000000000..9fe0e890e6943e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.test.tsx @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { EuiProgress, EuiTitle } from '@elastic/eui'; + +import { IndexingStatusContent } from './indexing_status_content'; + +describe('IndexingStatusContent', () => { + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiTitle)).toHaveLength(1); + expect(wrapper.find(EuiProgress)).toHaveLength(1); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.tsx new file mode 100644 index 00000000000000..a0c67388621a82 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_content.tsx @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { EuiProgress, EuiSpacer, EuiTitle } from '@elastic/eui'; + +import { INDEXING_STATUS_PROGRESS_TITLE } from './constants'; + +interface IIndexingStatusContentProps { + percentageComplete: number; +} + +export const IndexingStatusContent: React.FC = ({ + percentageComplete, +}) => ( +
    + +

    {INDEXING_STATUS_PROGRESS_TITLE}

    +
    + + +
    +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.test.tsx new file mode 100644 index 00000000000000..563702a143ab38 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.test.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { EuiCallOut } from '@elastic/eui'; + +import { EuiButtonTo } from '../react_router_helpers'; + +import { IndexingStatusErrors } from './indexing_status_errors'; + +describe('IndexingStatusErrors', () => { + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiCallOut)).toHaveLength(1); + expect(wrapper.find(EuiButtonTo)).toHaveLength(1); + expect(wrapper.find(EuiButtonTo).prop('to')).toEqual('/path'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.tsx new file mode 100644 index 00000000000000..2be27299fd77f3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_errors.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { EuiCallOut } from '@elastic/eui'; + +import { EuiButtonTo } from '../react_router_helpers'; + +import { INDEXING_STATUS_HAS_ERRORS_TITLE, INDEXING_STATUS_HAS_ERRORS_BUTTON } from './constants'; + +interface IIndexingStatusErrorsProps { + viewLinkPath: string; +} + +export const IndexingStatusErrors: React.FC = ({ viewLinkPath }) => ( + +

    {INDEXING_STATUS_HAS_ERRORS_TITLE}

    + + + {INDEXING_STATUS_HAS_ERRORS_BUTTON} + +
    +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.test.ts new file mode 100644 index 00000000000000..9fa5fe0f84babf --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.test.ts @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { resetContext } from 'kea'; + +jest.mock('../http', () => ({ + HttpLogic: { + values: { http: { get: jest.fn() } }, + }, +})); +import { HttpLogic } from '../http'; + +jest.mock('../flash_messages', () => ({ + flashAPIErrors: jest.fn(), +})); +import { flashAPIErrors } from '../flash_messages'; + +import { IndexingStatusLogic } from './indexing_status_logic'; + +describe('IndexingStatusLogic', () => { + let unmount: any; + + const mockStatusResponse = { + percentageComplete: 50, + numDocumentsWithErrors: 3, + activeReindexJobId: 1, + }; + + beforeEach(() => { + jest.clearAllMocks(); + resetContext({}); + unmount = IndexingStatusLogic.mount(); + }); + + it('has expected default values', () => { + expect(IndexingStatusLogic.values).toEqual({ + percentageComplete: 100, + numDocumentsWithErrors: 0, + }); + }); + + describe('setIndexingStatus', () => { + it('sets reducers', () => { + IndexingStatusLogic.actions.setIndexingStatus(mockStatusResponse); + + expect(IndexingStatusLogic.values.percentageComplete).toEqual( + mockStatusResponse.percentageComplete + ); + expect(IndexingStatusLogic.values.numDocumentsWithErrors).toEqual( + mockStatusResponse.numDocumentsWithErrors + ); + }); + }); + + describe('fetchIndexingStatus', () => { + jest.useFakeTimers(); + const statusPath = '/api/workplace_search/path/123'; + const onComplete = jest.fn(); + const TIMEOUT = 3000; + + it('calls API and sets values', async () => { + const setIndexingStatusSpy = jest.spyOn(IndexingStatusLogic.actions, 'setIndexingStatus'); + const promise = Promise.resolve(mockStatusResponse); + (HttpLogic.values.http.get as jest.Mock).mockReturnValue(promise); + + IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete }); + jest.advanceTimersByTime(TIMEOUT); + + expect(HttpLogic.values.http.get).toHaveBeenCalledWith(statusPath); + await promise; + + expect(setIndexingStatusSpy).toHaveBeenCalledWith(mockStatusResponse); + }); + + it('handles error', async () => { + const promise = Promise.reject('An error occured'); + (HttpLogic.values.http.get as jest.Mock).mockReturnValue(promise); + + IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete }); + jest.advanceTimersByTime(TIMEOUT); + + try { + await promise; + } catch { + // Do nothing + } + expect(flashAPIErrors).toHaveBeenCalledWith('An error occured'); + }); + + it('handles indexing complete state', async () => { + const promise = Promise.resolve({ ...mockStatusResponse, percentageComplete: 100 }); + (HttpLogic.values.http.get as jest.Mock).mockReturnValue(promise); + IndexingStatusLogic.actions.fetchIndexingStatus({ statusPath, onComplete }); + jest.advanceTimersByTime(TIMEOUT); + + await promise; + + expect(clearInterval).toHaveBeenCalled(); + expect(onComplete).toHaveBeenCalledWith(mockStatusResponse.numDocumentsWithErrors); + }); + + it('handles unmounting', async () => { + unmount(); + expect(clearInterval).toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.ts new file mode 100644 index 00000000000000..cb484f19c157f7 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/indexing_status/indexing_status_logic.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { HttpLogic } from '../http'; +import { IIndexingStatus } from '../types'; +import { flashAPIErrors } from '../flash_messages'; + +interface IndexingStatusProps { + statusPath: string; + onComplete(numDocumentsWithErrors: number): void; +} + +interface IndexingStatusActions { + fetchIndexingStatus(props: IndexingStatusProps): IndexingStatusProps; + setIndexingStatus({ + percentageComplete, + numDocumentsWithErrors, + }: IIndexingStatus): IIndexingStatus; +} + +interface IndexingStatusValues { + percentageComplete: number; + numDocumentsWithErrors: number; +} + +let pollingInterval: number; + +export const IndexingStatusLogic = kea>({ + actions: { + fetchIndexingStatus: ({ statusPath, onComplete }) => ({ statusPath, onComplete }), + setIndexingStatus: ({ numDocumentsWithErrors, percentageComplete }) => ({ + numDocumentsWithErrors, + percentageComplete, + }), + }, + reducers: { + percentageComplete: [ + 100, + { + setIndexingStatus: (_, { percentageComplete }) => percentageComplete, + }, + ], + numDocumentsWithErrors: [ + 0, + { + setIndexingStatus: (_, { numDocumentsWithErrors }) => numDocumentsWithErrors, + }, + ], + }, + listeners: ({ actions }) => ({ + fetchIndexingStatus: ({ statusPath, onComplete }: IndexingStatusProps) => { + const { http } = HttpLogic.values; + + pollingInterval = window.setInterval(async () => { + try { + const response: IIndexingStatus = await http.get(statusPath); + if (response.percentageComplete >= 100) { + clearInterval(pollingInterval); + onComplete(response.numDocumentsWithErrors); + } + actions.setIndexingStatus(response); + } catch (e) { + flashAPIErrors(e); + } + }, 3000); + }, + }), + events: () => ({ + beforeUnmount() { + clearInterval(pollingInterval); + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts index a763518d30b992..3115e233a6058b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.test.ts @@ -34,6 +34,12 @@ describe('KibanaLogic', () => { expect(KibanaLogic.values.config).toEqual({}); }); + + it('gracefully handles non-cloud installs', () => { + mountKibanaLogic({ ...mockKibanaValues, cloud: undefined } as any); + + expect(KibanaLogic.values.cloud).toEqual({}); + }); }); describe('navigateToUrl()', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts index 28f500a2c8a39f..7d3db4d36692e1 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana/kibana_logic.ts @@ -9,6 +9,7 @@ import { kea, MakeLogicType } from 'kea'; import { FC } from 'react'; import { History } from 'history'; import { ApplicationStart, ChromeBreadcrumb } from 'src/core/public'; +import { CloudSetup } from '../../../../../cloud/public'; import { HttpLogic } from '../http'; import { createHref, CreateHrefOptions } from '../react_router_helpers'; @@ -16,6 +17,7 @@ import { createHref, CreateHrefOptions } from '../react_router_helpers'; interface KibanaLogicProps { config: { host?: string }; history: History; + cloud: Partial; navigateToUrl: ApplicationStart['navigateToUrl']; setBreadcrumbs(crumbs: ChromeBreadcrumb[]): void; setDocTitle(title: string): void; @@ -30,6 +32,7 @@ export const KibanaLogic = kea>({ reducers: ({ props }) => ({ config: [props.config || {}, {}], history: [props.history, {}], + cloud: [props.cloud || {}, {}], navigateToUrl: [ (url: string, options?: CreateHrefOptions) => { const deps = { history: props.history, http: HttpLogic.values.http }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.test.tsx index 37784fbf4ffb59..712c3056b808e0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.test.tsx @@ -8,11 +8,11 @@ import '../../__mocks__/kea.mock'; import React from 'react'; import { shallow, mount } from 'enzyme'; -import { EuiLink, EuiButton, EuiPanel } from '@elastic/eui'; +import { EuiLink, EuiButton, EuiButtonEmpty, EuiPanel } from '@elastic/eui'; import { mockKibanaValues, mockHistory } from '../../__mocks__'; -import { EuiLinkTo, EuiButtonTo, EuiPanelTo } from './eui_components'; +import { EuiLinkTo, EuiButtonTo, EuiButtonEmptyTo, EuiPanelTo } from './eui_components'; describe('EUI & React Router Component Helpers', () => { beforeEach(() => { @@ -31,6 +31,12 @@ describe('EUI & React Router Component Helpers', () => { expect(wrapper.find(EuiButton)).toHaveLength(1); }); + it('renders an EuiButtonEmpty', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiButtonEmpty)).toHaveLength(1); + }); + it('renders an EuiPanel', () => { const wrapper = shallow(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.tsx index 56beed8780707f..fea59acdb0cc27 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/eui_components.tsx @@ -6,7 +6,15 @@ import React from 'react'; import { useValues } from 'kea'; -import { EuiLink, EuiButton, EuiButtonProps, EuiLinkAnchorProps, EuiPanel } from '@elastic/eui'; +import { + EuiLink, + EuiButton, + EuiButtonEmpty, + EuiButtonEmptyProps, + EuiButtonProps, + EuiLinkAnchorProps, + EuiPanel, +} from '@elastic/eui'; import { EuiPanelProps } from '@elastic/eui/src/components/panel/panel'; import { KibanaLogic } from '../kibana'; @@ -83,6 +91,18 @@ export const EuiButtonTo: React.FC = ({ ); +type ReactRouterEuiButtonEmptyProps = ReactRouterProps & EuiButtonEmptyProps; +export const EuiButtonEmptyTo: React.FC = ({ + to, + onClick, + shouldNotCreateHref, + ...rest +}) => ( + + + +); + type ReactRouterEuiPanelProps = ReactRouterProps & EuiPanelProps; export const EuiPanelTo: React.FC = ({ to, diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts index 05a9450e4a348f..2cf2ca3c2e816e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/react_router_helpers/index.ts @@ -6,4 +6,4 @@ export { letBrowserHandleEvent } from './link_events'; export { createHref, CreateHrefOptions } from './create_href'; -export { EuiLinkTo, EuiButtonTo, EuiPanelTo } from './eui_components'; +export { EuiLinkTo, EuiButtonTo, EuiButtonEmptyTo, EuiPanelTo } from './eui_components'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/constants.ts b/x-pack/plugins/enterprise_search/public/applications/shared/schema/constants.ts new file mode 100644 index 00000000000000..7d7d36ad09a273 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/constants.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; + +export const FIELD_NAME_CORRECT_NOTE = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.correct', + { + defaultMessage: 'Field names can only contain lowercase letters, numbers, and underscores', + } +); + +export const FIELD_NAME_CORRECTED_PREFIX = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.corrected', + { + defaultMessage: 'The field will be named', + } +); + +export const FIELD_NAME_MODAL_TITLE = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.title', + { + defaultMessage: 'Add a New Field', + } +); + +export const FIELD_NAME_MODAL_DESCRIPTION = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.description', + { + defaultMessage: 'Once added, a field cannot be removed from your schema.', + } +); + +export const FIELD_NAME_MODAL_CANCEL = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.cancel', + { + defaultMessage: 'Cancel', + } +); + +export const FIELD_NAME_MODAL_ADD_FIELD = i18n.translate( + 'xpack.enterpriseSearch.schema.addFieldModal.fieldNameNote.addField', + { + defaultMessage: 'Add field', + } +); + +export const ERROR_TABLE_ID_HEADER = i18n.translate( + 'xpack.enterpriseSearch.schema.errorsTable.heading.id', + { + defaultMessage: 'id', + } +); + +export const ERROR_TABLE_ERROR_HEADER = i18n.translate( + 'xpack.enterpriseSearch.schema.errorsTable.heading.error', + { + defaultMessage: 'Error', + } +); + +export const ERROR_TABLE_REVIEW_CONTROL = i18n.translate( + 'xpack.enterpriseSearch.schema.errorsTable.control.review', + { + defaultMessage: 'Review', + } +); + +export const ERROR_TABLE_VIEW_LINK = i18n.translate( + 'xpack.enterpriseSearch.schema.errorsTable.link.view', + { + defaultMessage: 'View', + } +); + +export const RECENTY_ADDED = i18n.translate( + 'xpack.enterpriseSearch.schema.existingField.status.recentlyAdded', + { + defaultMessage: 'Recently Added', + } +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/schema/index.ts new file mode 100644 index 00000000000000..3c5d718422aa83 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { SchemaAddFieldModal } from './schema_add_field_modal'; +export { SchemaExistingField } from './schema_existing_field'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.test.tsx new file mode 100644 index 00000000000000..e10d56ddc09b0a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.test.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow, mount } from 'enzyme'; + +import { NUMBER } from '../constants/field_types'; + +import { FIELD_NAME_CORRECTED_PREFIX } from './constants'; + +import { SchemaAddFieldModal } from './'; + +import { EuiFieldText, EuiModal, EuiSelect } from '@elastic/eui'; + +describe('SchemaAddFieldModal', () => { + const addNewField = jest.fn(); + const closeAddFieldModal = jest.fn(); + + const props = { + addNewField, + closeAddFieldModal, + }; + + const errors = { + addFieldFormErrors: ['error1', 'error2'], + }; + + const setState = jest.fn(); + const setStateMock: any = (initState: any) => [initState, setState]; + + beforeEach(() => { + jest.spyOn(React, 'useState').mockImplementationOnce(setStateMock); + setState(false); + }); + + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiModal)).toHaveLength(1); + }); + + // No matter what I try I can't get this to actually achieve coverage. + it('sets loading state in useEffect', () => { + setState(true); + const wrapper = mount(); + const input = wrapper.find(EuiFieldText); + + expect(input.prop('isLoading')).toEqual(false); + expect(setState).toHaveBeenCalledTimes(3); + expect(setState).toHaveBeenCalledWith(false); + }); + + it('handles input change - with non-formatted name', () => { + jest.spyOn(React, 'useState').mockImplementationOnce(setStateMock); + const wrapper = shallow(); + const input = wrapper.find(EuiFieldText); + input.simulate('change', { currentTarget: { value: 'foobar' } }); + + expect(wrapper.find('[data-test-subj="SchemaAddFieldNameRow"]').prop('helpText')).toEqual( + 'Field names can only contain lowercase letters, numbers, and underscores' + ); + }); + + it('handles input change - with formatted name', () => { + jest.spyOn(React, 'useState').mockImplementationOnce(setStateMock); + const wrapper = shallow(); + const input = wrapper.find(EuiFieldText); + input.simulate('change', { currentTarget: { value: 'foo-bar' } }); + + expect(wrapper.find('[data-test-subj="SchemaAddFieldNameRow"]').prop('helpText')).toEqual( + + {FIELD_NAME_CORRECTED_PREFIX} foo_bar + + ); + }); + + it('handles option change', () => { + const wrapper = shallow(); + wrapper.find(EuiSelect).simulate('change', { target: { value: NUMBER } }); + + expect(wrapper.find('[data-test-subj="SchemaSelect"]').prop('value')).toEqual(NUMBER); + }); + + it('handles form submission', () => { + jest.spyOn(React, 'useState').mockImplementationOnce(setStateMock); + const wrapper = shallow(); + const preventDefault = jest.fn(); + wrapper.find('form').simulate('submit', { preventDefault }); + + expect(addNewField).toHaveBeenCalled(); + expect(setState).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.tsx new file mode 100644 index 00000000000000..5cdd8be4016ebc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_add_field_modal.tsx @@ -0,0 +1,155 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { ChangeEvent, FormEvent, useEffect, useState } from 'react'; + +import { + EuiButton, + EuiButtonEmpty, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiOverlayMask, + EuiSelect, + EuiSpacer, +} from '@elastic/eui'; + +import { TEXT, fieldTypeSelectOptions } from '../constants/field_types'; + +import { + FIELD_NAME_CORRECT_NOTE, + FIELD_NAME_CORRECTED_PREFIX, + FIELD_NAME_MODAL_TITLE, + FIELD_NAME_MODAL_DESCRIPTION, + FIELD_NAME_MODAL_CANCEL, + FIELD_NAME_MODAL_ADD_FIELD, +} from './constants'; + +interface ISchemaAddFieldModalProps { + disableForm?: boolean; + addFieldFormErrors?: string[] | null; + addNewField(fieldName: string, newFieldType: string): void; + closeAddFieldModal(): void; +} + +export const SchemaAddFieldModal: React.FC = ({ + addNewField, + addFieldFormErrors, + closeAddFieldModal, + disableForm, +}) => { + const [loading, setLoading] = useState(false); + const [newFieldType, updateNewFieldType] = useState(TEXT); + const [formattedFieldName, setFormattedFieldName] = useState(''); + const [rawFieldName, setRawFieldName] = useState(''); + + useEffect(() => { + if (addFieldFormErrors) setLoading(false); + }, [addFieldFormErrors]); + + const handleChange = ({ currentTarget: { value } }: ChangeEvent) => { + setRawFieldName(value); + setFormattedFieldName(formatFieldName(value)); + }; + + const submitForm = (e: FormEvent) => { + e.preventDefault(); + addNewField(formattedFieldName, newFieldType); + setLoading(true); + }; + + const fieldNameNote = + rawFieldName !== formattedFieldName ? ( + <> + {FIELD_NAME_CORRECTED_PREFIX} {formattedFieldName} + + ) : ( + FIELD_NAME_CORRECT_NOTE + ); + + return ( + + + + + {FIELD_NAME_MODAL_TITLE} + + +

    {FIELD_NAME_MODAL_DESCRIPTION}

    + + + + + + + + + + + updateNewFieldType(e.target.value)} + data-test-subj="SchemaSelect" + /> + + + + +
    + + {FIELD_NAME_MODAL_CANCEL} + + {FIELD_NAME_MODAL_ADD_FIELD} + + +
    + +
    + ); +}; + +const formatFieldName = (rawName: string) => + rawName + .trim() + .replace(/[^a-zA-Z0-9]+/g, '_') + .replace(/^[^a-zA-Z0-9]+/, '') + .replace(/[^a-zA-Z0-9]+$/, '') + .toLowerCase(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.test.tsx new file mode 100644 index 00000000000000..c63fbe17ea2ad3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.test.tsx @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { EuiAccordion, EuiTableRow } from '@elastic/eui'; + +import { EuiLinkTo } from '../react_router_helpers'; +import { SchemaErrorsAccordion } from './schema_errors_accordion'; + +describe('SchemaErrorsAccordion', () => { + const props = { + fieldCoercionErrors: { + id: [ + { + external_id: 'foo', + error: 'this is an error', + }, + { + external_id: 'bar', + error: 'this is another error', + }, + ], + }, + schema: { + id: 'string', + name: 'boolean', + }, + }; + + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiAccordion)).toHaveLength(1); + expect(wrapper.find(EuiTableRow)).toHaveLength(2); + expect(wrapper.find(EuiLinkTo)).toHaveLength(0); + }); + + it('renders document buttons', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiLinkTo)).toHaveLength(2); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.tsx new file mode 100644 index 00000000000000..98b5dbdd7b278e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_errors_accordion.tsx @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { + EuiAccordion, + EuiFlexGroup, + EuiFlexItem, + EuiTable, + EuiTableBody, + EuiTableHeader, + EuiTableHeaderCell, + EuiTableRow, + EuiTableRowCell, +} from '@elastic/eui'; + +import { EuiLinkTo } from '../react_router_helpers'; + +import { TruncatedContent } from '../truncate'; + +import { + ERROR_TABLE_ID_HEADER, + ERROR_TABLE_ERROR_HEADER, + ERROR_TABLE_REVIEW_CONTROL, + ERROR_TABLE_VIEW_LINK, +} from './constants'; + +interface IFieldCoercionError { + external_id: string; + error: string; +} + +interface IFieldCoercionErrors { + [key: string]: IFieldCoercionError[]; +} + +interface ISchemaErrorsAccordionProps { + fieldCoercionErrors: IFieldCoercionErrors; + schema: { [key: string]: string }; + itemId?: string; + getRoute?(itemId: string, externalId: string): string; +} + +export const SchemaErrorsAccordion: React.FC = ({ + fieldCoercionErrors, + schema, + itemId, + getRoute, +}) => ( + <> + {Object.keys(fieldCoercionErrors).map((fieldName, fieldNameIndex) => { + const errorInfos = fieldCoercionErrors[fieldName]; + + const accordionHeader = ( + + + + + + + {schema[fieldName]} + + + + {ERROR_TABLE_REVIEW_CONTROL} + + + ); + + return ( + + + + {ERROR_TABLE_ID_HEADER} + {ERROR_TABLE_ERROR_HEADER} + + + + {errorInfos.map((error, errorIndex) => { + const showViewButton = getRoute && itemId; + const documentPath = getRoute && itemId ? getRoute(itemId, error.external_id) : ''; + + const viewButton = showViewButton && ( + + + + {ERROR_TABLE_VIEW_LINK} + + + + ); + + return ( + + +
    + +
    +
    + + {error.error} + + {showViewButton ? viewButton : } +
    + ); + })} +
    +
    +
    + ); + })} + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.test.tsx new file mode 100644 index 00000000000000..d3040da476a916 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.test.tsx @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { EuiSelect } from '@elastic/eui'; + +import { SchemaExistingField } from './'; + +describe('SchemaExistingField', () => { + const updateExistingFieldType = jest.fn(); + const props = { + fieldName: 'foo', + fieldType: 'field', + updateExistingFieldType, + }; + + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiSelect)).toHaveLength(1); + }); + + it('renders no EuiSelect without props', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiSelect)).toHaveLength(0); + }); + + it('calls updateExistingFieldType when the select value is changed', () => { + const wrapper = shallow(); + wrapper.find(EuiSelect).simulate('change', { target: { value: 'bar' } }); + + expect(updateExistingFieldType).toHaveBeenCalledWith(props.fieldName, 'bar'); + }); + + it('doesn`t render fieldName when hidden', () => { + const wrapper = shallow(); + + expect(wrapper.find('.c-stui-engine-schema-field__name').contains(props.fieldName)).toBeFalsy(); + }); + + it('renders unconfirmed message', () => { + const wrapper = shallow(); + + expect(wrapper.find('.c-stui-engine-schema-field__status').exists()).toBeTruthy(); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.tsx new file mode 100644 index 00000000000000..99dd651f91f4b4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/schema/schema_existing_field.tsx @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; + +import { EuiSelect } from '@elastic/eui'; + +import { fieldTypeSelectOptions } from '../constants/field_types'; + +import { RECENTY_ADDED } from './constants'; + +interface ISchemaExistingFieldProps { + disabled?: boolean; + fieldName: string; + fieldType?: string; + unconfirmed?: boolean; + hideName?: boolean; + updateExistingFieldType?(fieldName: string, fieldType: string): void; +} + +export const SchemaExistingField: React.FC = ({ + disabled, + fieldName, + fieldType, + unconfirmed, + hideName, + updateExistingFieldType, +}) => { + const fieldCssClass = classNames('c-stui-engine-schema-field', { + 'c-stui-engine-schema-field--recently-added': unconfirmed, + }); + + return ( +
    +
    {!hideName ? fieldName : ''}
    + {unconfirmed &&
    {RECENTY_ADDED}
    } + {fieldType && updateExistingFieldType && ( +
    + updateExistingFieldType(fieldName, e.target.value)} + data-test-subj="SchemaSelect" + /> +
    + )} +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.test.tsx new file mode 100644 index 00000000000000..56ed5f182fbb37 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.test.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { EuiSteps, EuiLink } from '@elastic/eui'; + +import { mountWithIntl } from '../../../__mocks__'; + +import { CloudSetupInstructions } from './instructions'; + +describe('CloudSetupInstructions', () => { + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSteps)).toHaveLength(1); + }); + + it('renders with a link to the Elastic Cloud deployment', () => { + const wrapper = mountWithIntl( + + ); + const cloudDeploymentLink = wrapper.find(EuiLink).first(); + expect(cloudDeploymentLink.prop('href')).toEqual( + 'https://cloud.elastic.co/deployments/some-id/edit' + ); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.tsx new file mode 100644 index 00000000000000..383fd4b11108a4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/cloud/instructions.tsx @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { EuiPageContent, EuiSteps, EuiText, EuiLink, EuiCallOut } from '@elastic/eui'; + +import { CLOUD_DOCS_PREFIX, ENT_SEARCH_DOCS_PREFIX } from '../../constants'; + +interface Props { + productName: string; + cloudDeploymentLink?: string; +} + +export const CloudSetupInstructions: React.FC = ({ productName, cloudDeploymentLink }) => ( + + +

    + + edit your deployment + + ) : ( + 'Visit the Elastic Cloud console' + ), + }} + /> +

    +
    + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.cloud.step2.title', { + defaultMessage: 'Enable Enterprise Search for your deployment', + }), + children: ( + +

    + +

    +
    + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.cloud.step3.title', { + defaultMessage: 'Configure your Enterprise Search instance', + }), + children: ( + +

    + + configurable options + + ), + }} + /> +

    +
    + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.cloud.step4.title', { + defaultMessage: 'Save your deployment configuration', + }), + children: ( + +

    + +

    +
    + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.cloud.step5.title', { + defaultMessage: '{productName} is now available to use', + values: { productName }, + }), + children: ( + +

    + + configure an index lifecycle policy + + ), + }} + /> +

    +
    + ), + }, + ]} + /> + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/constants.ts b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/constants.ts new file mode 100644 index 00000000000000..dc84f20fade031 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/constants.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +export const SETUP_GUIDE_TITLE = i18n.translate('xpack.enterpriseSearch.setupGuide.title', { + defaultMessage: 'Setup Guide', +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/index.ts index c367424d375f9d..e958bf477c6f66 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/index.ts @@ -4,4 +4,5 @@ * you may not use this file except in compliance with the Elastic License. */ -export { SetupGuide } from './setup_guide'; +export { SetupGuideLayout } from './setup_guide'; +export { SETUP_GUIDE_TITLE } from './constants'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.test.tsx new file mode 100644 index 00000000000000..7c661354289aa2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.test.tsx @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; +import { EuiSteps, EuiLink } from '@elastic/eui'; + +import { mountWithIntl } from '../../__mocks__'; + +import { SetupInstructions } from './instructions'; + +describe('SetupInstructions', () => { + it('renders', () => { + const wrapper = shallow(); + expect(wrapper.find(EuiSteps)).toHaveLength(1); + }); + + it('renders with auth links', () => { + const wrapper = mountWithIntl( + + ); + + expect(wrapper.find(EuiLink).first().prop('href')).toEqual('http://bar.com'); + expect(wrapper.find(EuiLink).last().prop('href')).toEqual('http://foo.com'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.tsx new file mode 100644 index 00000000000000..91f6a770edd7d6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/instructions.tsx @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { + EuiPageContent, + EuiSpacer, + EuiText, + EuiSteps, + EuiCode, + EuiCodeBlock, + EuiAccordion, + EuiLink, +} from '@elastic/eui'; + +interface Props { + productName: string; + standardAuthLink?: string; + elasticsearchNativeAuthLink?: string; +} + +export const SetupInstructions: React.FC = ({ + productName, + standardAuthLink, + elasticsearchNativeAuthLink, +}) => ( + + +

    + config/kibana.yml, + configSetting: enterpriseSearch.host, + }} + /> +

    + + enterpriseSearch.host: 'http://localhost:3002' + + + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.step2.title', { + defaultMessage: 'Reload your Kibana instance', + }), + children: ( + +

    + +

    +

    + + Elasticsearch Native Auth + + ) : ( + 'Elasticsearch Native Auth' + ), + }} + /> +

    +
    + ), + }, + { + title: i18n.translate('xpack.enterpriseSearch.setupGuide.step3.title', { + defaultMessage: 'Troubleshooting issues', + }), + children: ( + <> + + +

    + +

    +
    +
    + + + +

    + +

    +
    +
    + + + +

    + + Standard Auth + + ) : ( + 'Standard Auth' + ), + }} + /> +

    +
    +
    + + ), + }, + ]} + /> +
    +); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx index 802a10e3b3db76..748f4b06f7cac6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.test.tsx @@ -4,41 +4,46 @@ * you may not use this file except in compliance with the Elastic License. */ +import { setMockValues } from '../../__mocks__/kea.mock'; +import { rerender } from '../../__mocks__'; + import React from 'react'; -import { shallow } from 'enzyme'; -import { EuiSteps, EuiIcon, EuiLink } from '@elastic/eui'; +import { shallow, ShallowWrapper } from 'enzyme'; +import { EuiIcon } from '@elastic/eui'; -import { mountWithIntl } from '../../__mocks__'; +import { SetupInstructions } from './instructions'; +import { CloudSetupInstructions } from './cloud/instructions'; -import { SetupGuide } from './'; +import { SetupGuideLayout } from './'; -describe('SetupGuide', () => { - it('renders', () => { - const wrapper = shallow( - +describe('SetupGuideLayout', () => { + let wrapper: ShallowWrapper; + + beforeAll(() => { + setMockValues({ isCloudEnabled: false }); + wrapper = shallow( +

    Wow!

    -
    + ); + }); + it('renders', () => { expect(wrapper.find('h1').text()).toEqual('Enterprise Search'); expect(wrapper.find(EuiIcon).prop('type')).toEqual('logoEnterpriseSearch'); expect(wrapper.find('[data-test-subj="test"]').text()).toEqual('Wow!'); - expect(wrapper.find(EuiSteps)).toHaveLength(1); }); - it('renders with optional auth links', () => { - const wrapper = mountWithIntl( - - Baz - - ); + it('renders with default self-managed instructions', () => { + expect(wrapper.find(SetupInstructions)).toHaveLength(1); + expect(wrapper.find(CloudSetupInstructions)).toHaveLength(0); + }); + + it('renders with cloud instructions', () => { + setMockValues({ cloud: { isCloudEnabled: true } }); + rerender(wrapper); - expect(wrapper.find(EuiLink).first().prop('href')).toEqual('http://bar.com'); - expect(wrapper.find(EuiLink).last().prop('href')).toEqual('http://foo.com'); + expect(wrapper.find(SetupInstructions)).toHaveLength(0); + expect(wrapper.find(CloudSetupInstructions)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.tsx index c96e95a41f2e4a..fcae2fb87683a8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/setup_guide/setup_guide.tsx @@ -5,26 +5,25 @@ */ import React from 'react'; +import { useValues } from 'kea'; + import { EuiPage, EuiPageSideBar, EuiPageBody, - EuiPageContent, EuiSpacer, EuiFlexGroup, EuiFlexItem, EuiTitle, EuiText, EuiIcon, - EuiSteps, - EuiCode, - EuiCodeBlock, - EuiAccordion, - EuiLink, } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { i18n } from '@kbn/i18n'; +import { KibanaLogic } from '../kibana'; + +import { SetupInstructions } from './instructions'; +import { CloudSetupInstructions } from './cloud/instructions'; +import { SETUP_GUIDE_TITLE } from './constants'; import './setup_guide.scss'; /** @@ -32,7 +31,7 @@ import './setup_guide.scss'; * customizable, but the basic layout and instruction steps are DRYed out */ -interface SetupGuideProps { +interface Props { children: React.ReactNode; productName: string; productEuiIcon: 'logoAppSearch' | 'logoWorkplaceSearch' | 'logoEnterpriseSearch'; @@ -40,187 +39,53 @@ interface SetupGuideProps { elasticsearchNativeAuthLink?: string; } -export const SetupGuide: React.FC = ({ +export const SetupGuideLayout: React.FC = ({ children, productName, productEuiIcon, standardAuthLink, elasticsearchNativeAuthLink, -}) => ( - - - - - - - - +}) => { + const { cloud } = useValues(KibanaLogic); + const isCloudEnabled = Boolean(cloud.isCloudEnabled); + const cloudDeploymentLink = cloud.cloudDeploymentUrl || ''; - - - - - - -

    {productName}

    -
    -
    -
    + return ( + + + + {SETUP_GUIDE_TITLE} + + - {children} - + + + + + + +

    {productName}

    +
    +
    +
    - - - -

    - config/kibana.yml, - configSetting: enterpriseSearch.host, - }} - /> -

    - - enterpriseSearch.host: 'http://localhost:3002' - - - ), - }, - { - title: i18n.translate('xpack.enterpriseSearch.setupGuide.step2.title', { - defaultMessage: 'Reload your Kibana instance', - }), - children: ( - -

    - -

    -

    - - Elasticsearch Native Auth - - ) : ( - 'Elasticsearch Native Auth' - ), - }} - /> -

    -
    - ), - }, - { - title: i18n.translate('xpack.enterpriseSearch.setupGuide.step3.title', { - defaultMessage: 'Troubleshooting issues', - }), - children: ( - <> - - -

    - -

    -
    -
    - - - -

    - -

    -
    -
    - - - -

    - - Standard Auth - - ) : ( - 'Standard Auth' - ), - }} - /> -

    -
    -
    - - ), - }, - ]} - /> -
    -
    -
    -); + {children} +
    + + + {isCloudEnabled ? ( + + ) : ( + + )} + +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts new file mode 100644 index 00000000000000..c1737142e482e4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ADD, UPDATE } from './constants/operations'; + +export type SchemaTypes = 'text' | 'number' | 'geolocation' | 'date'; + +export interface Schema { + [key: string]: SchemaTypes; +} + +// this is a mapping of schema field types ("string", "number", "geolocation", "date") to the names +// of source engines which utilize that type +export type SchemaConflictFieldTypes = { + [key in SchemaTypes]: string[]; +}; + +export interface SchemaConflict { + fieldTypes: SchemaConflictFieldTypes; + resolution?: string; +} + +// For now these values are ISchemaConflictFieldTypes, but in the near future will be ISchemaConflict +// once we implement schema conflict resolution +export interface SchemaConflicts { + [key: string]: SchemaConflictFieldTypes; +} + +export interface IIndexingStatus { + percentageComplete: number; + numDocumentsWithErrors: number; + activeReindexJobId: number; +} + +export interface IndexJob extends IIndexingStatus { + isActive?: boolean; + hasErrors?: boolean; +} + +export type TOperation = typeof ADD | typeof UPDATE; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/assets/connection_illustration.svg b/x-pack/plugins/enterprise_search/public/applications/workplace_search/assets/connection_illustration.svg new file mode 100644 index 00000000000000..12b70d908834d6 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/assets/connection_illustration.svg @@ -0,0 +1 @@ + diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/nav.tsx index 6fa6698e6b6ba6..de6c75d60189e2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/nav.tsx @@ -11,11 +11,9 @@ import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; import { getWorkplaceSearchUrl } from '../../../shared/enterprise_search_url'; import { SideNav, SideNavLink } from '../../../shared/layout'; -import { GroupSubNav } from '../../views/groups/components/group_sub_nav'; import { NAV } from '../../constants'; import { - ORG_SOURCES_PATH, SOURCES_PATH, SECURITY_PATH, ROLE_MAPPINGS_PATH, @@ -23,17 +21,22 @@ import { ORG_SETTINGS_PATH, } from '../../routes'; -export const WorkplaceSearchNav: React.FC = () => { +interface Props { + sourcesSubNav?: React.ReactNode; + groupsSubNav?: React.ReactNode; +} + +export const WorkplaceSearchNav: React.FC = ({ sourcesSubNav, groupsSubNav }) => { // TODO: icons return ( {NAV.OVERVIEW} - + {NAV.SOURCES} - }> + {NAV.GROUPS} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/assets/source_icons/index.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/assets/source_icons/index.ts index 5f93694da09b8f..2ac3f518e4e11b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/assets/source_icons/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/assets/source_icons/index.ts @@ -30,22 +30,27 @@ import zendesk from './zendesk.svg'; export const images = { box, confluence, + confluenceCloud: confluence, + confluenceServer: confluence, crawler, custom, drive, dropbox, github, + githubEnterpriseServer: github, gmail, googleDrive, google, jira, jiraServer, + jiraCloud: jira, loadingSmall, office365, oneDrive, outlook, people, salesforce, + salesforceSandbox: salesforce, serviceNow, sharePoint, slack, diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/component_loader/component_loader.scss b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/component_loader/component_loader.scss index cf35bef92124d2..3458a711f773f9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/component_loader/component_loader.scss +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/component_loader/component_loader.scss @@ -11,7 +11,6 @@ align-items: center; min-height: 200px; border-radius: 4px; - background-color: #FAFBFD; .componentLoaderText { margin-left: 10px; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.scss b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.scss new file mode 100644 index 00000000000000..b04d5b8bc218fc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.scss @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +.wrapped-icon { + width: 30px; + height: 30px; + overflow: hidden; + margin-right: 4px; + position: relative; + display: flex; + justify-content: center; + align-items: center; + + img { + max-width: 100%; + max-height: 100%; + } +} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.test.tsx index c17b89c93a28b5..4007f7a69f77a9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.test.tsx @@ -7,19 +7,21 @@ import React from 'react'; import { shallow } from 'enzyme'; +import { EuiIcon } from '@elastic/eui'; + import { SourceIcon } from './'; describe('SourceIcon', () => { it('renders unwrapped icon', () => { const wrapper = shallow(); - expect(wrapper.find('img')).toHaveLength(1); + expect(wrapper.find(EuiIcon)).toHaveLength(1); expect(wrapper.find('.user-group-source')).toHaveLength(0); }); it('renders wrapped icon', () => { const wrapper = shallow(); - expect(wrapper.find('.user-group-source')).toHaveLength(1); + expect(wrapper.find('.wrapped-icon')).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.tsx index dec9e25fe24409..208c6c059d670e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/source_icon/source_icon.tsx @@ -8,6 +8,10 @@ import React from 'react'; import { camelCase } from 'lodash'; +import { EuiIcon, IconSize } from '@elastic/eui'; + +import './source_icon.scss'; + import { images } from '../assets/source_icons'; import { imagesFull } from '../assets/sources_full_bleed'; @@ -17,6 +21,7 @@ interface SourceIconProps { className?: string; wrapped?: boolean; fullBleed?: boolean; + size?: IconSize; } export const SourceIcon: React.FC = ({ @@ -25,16 +30,18 @@ export const SourceIcon: React.FC = ({ className, wrapped, fullBleed = false, + size = 'xxl', }) => { const icon = ( - {name} ); return wrapped ? ( -
    +
    {icon}
    ) : ( diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/view_content_header/view_content_header.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/view_content_header/view_content_header.tsx index c6cf7d4991689f..5c0941166436e8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/view_content_header/view_content_header.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/shared/view_content_header/view_content_header.tsx @@ -44,6 +44,7 @@ export const ViewContentHeader: React.FC = ({ {titleElement} + {description && (

    {description}

    diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/constants.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/constants.ts index 1846115d739000..327ee7b30582b2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/constants.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/constants.ts @@ -25,15 +25,27 @@ export const NAV = { 'xpack.enterpriseSearch.workplaceSearch.nav.groups.sourcePrioritization', { defaultMessage: 'Source Prioritization' } ), + CONTENT: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.content', { + defaultMessage: 'Content', + }), ROLE_MAPPINGS: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.roleMappings', { defaultMessage: 'Role Mappings', }), SECURITY: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.security', { defaultMessage: 'Security', }), + SCHEMA: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.schema', { + defaultMessage: 'Schema', + }), + DISPLAY_SETTINGS: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.displaySettings', { + defaultMessage: 'Display Settings', + }), SETTINGS: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.settings', { defaultMessage: 'Settings', }), + ADD_SOURCE: i18n.translate('xpack.enterpriseSearch.workplaceSearch.nav.addSource', { + defaultMessage: 'Add Source', + }), PERSONAL_DASHBOARD: i18n.translate( 'xpack.enterpriseSearch.workplaceSearch.nav.personalDashboard', { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx index 5f1e2dd18d3b64..20b15bcfc45ca5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.test.tsx @@ -57,7 +57,7 @@ describe('WorkplaceSearchConfigured', () => { it('renders layout and header actions', () => { const wrapper = shallow(); - expect(wrapper.find(Layout).prop('readOnlyMode')).toBeFalsy(); + expect(wrapper.find(Layout).first().prop('readOnlyMode')).toBeFalsy(); expect(wrapper.find(Overview)).toHaveLength(1); expect(mockKibanaValues.renderHeaderActions).toHaveBeenCalledWith(WorkplaceSearchHeaderActions); }); @@ -90,6 +90,6 @@ describe('WorkplaceSearchConfigured', () => { const wrapper = shallow(); - expect(wrapper.find(Layout).prop('readOnlyMode')).toEqual(true); + expect(wrapper.find(Layout).first().prop('readOnlyMode')).toEqual(true); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx index 776cae24dfdfbe..562a2ffb328886 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/index.tsx @@ -16,13 +16,17 @@ import { AppLogic } from './app_logic'; import { Layout } from '../shared/layout'; import { WorkplaceSearchNav, WorkplaceSearchHeaderActions } from './components/layout'; -import { GROUPS_PATH, SETUP_GUIDE_PATH } from './routes'; +import { GROUPS_PATH, SETUP_GUIDE_PATH, SOURCES_PATH, PERSONAL_SOURCES_PATH } from './routes'; import { SetupGuide } from './views/setup_guide'; import { ErrorState } from './views/error_state'; import { NotFound } from '../shared/not_found'; import { Overview } from './views/overview'; import { GroupsRouter } from './views/groups'; +import { SourcesRouter } from './views/content_sources'; + +import { GroupSubNav } from './views/groups/components/group_sub_nav'; +import { SourceSubNav } from './views/content_sources/components/source_sub_nav'; export const WorkplaceSearch: React.FC = (props) => { const { config } = useValues(KibanaLogic); @@ -37,6 +41,10 @@ export const WorkplaceSearchConfigured: React.FC = (props) => { const { pathname } = useLocation(); + // We don't want so show the subnavs on the container root pages. + const showSourcesSubnav = pathname !== SOURCES_PATH && pathname !== PERSONAL_SOURCES_PATH; + const showGroupsSubnav = pathname !== GROUPS_PATH; + /** * Personal dashboard urls begin with /p/ * EX: http://localhost:5601/app/enterprise_search/workplace_search/p/sources @@ -45,6 +53,7 @@ export const WorkplaceSearchConfigured: React.FC = (props) => { // TODO: Once auth is figured out, we need to have a check for the equivilent of `isAdmin`. const isOrganization = !pathname.match(personalSourceUrlRegex); + setContext(isOrganization); useEffect(() => { if (!hasInitialized) { @@ -53,10 +62,6 @@ export const WorkplaceSearchConfigured: React.FC = (props) => { } }, [hasInitialized]); - useEffect(() => { - setContext(isOrganization); - }, [isOrganization]); - return ( @@ -65,19 +70,32 @@ export const WorkplaceSearchConfigured: React.FC = (props) => { {errorConnecting ? : } + + } />} + restrictWidth + readOnlyMode={readOnlyMode} + > + + + + + } />} + restrictWidth + readOnlyMode={readOnlyMode} + > + + + } restrictWidth readOnlyMode={readOnlyMode}> {errorConnecting ? ( ) : ( - - - - - - - - + + + )} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.test.tsx index d03c0abb441b98..3fddcf3b77fe43 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.test.tsx @@ -12,7 +12,7 @@ import { EuiLink } from '@elastic/eui'; import { getContentSourcePath, SOURCES_PATH, - ORG_SOURCES_PATH, + PERSONAL_SOURCES_PATH, SOURCE_DETAILS_PATH, } from './routes'; @@ -26,13 +26,13 @@ describe('getContentSourcePath', () => { const wrapper = shallow(); const path = wrapper.find(EuiLink).prop('href'); - expect(path).toEqual(`${ORG_SOURCES_PATH}/123`); + expect(path).toEqual(`${SOURCES_PATH}/123`); }); it('should format user route', () => { const wrapper = shallow(); const path = wrapper.find(EuiLink).prop('href'); - expect(path).toEqual(`${SOURCES_PATH}/123`); + expect(path).toEqual(`${PERSONAL_SOURCES_PATH}/123`); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts index be95c6ffe6f38b..868d76f7d09c51 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/routes.ts @@ -7,6 +7,7 @@ import { generatePath } from 'react-router-dom'; import { CURRENT_MAJOR_VERSION } from '../../../common/version'; +import { ENT_SEARCH_DOCS_PREFIX } from '../shared/constants'; export const SETUP_GUIDE_PATH = '/setup_guide'; @@ -16,7 +17,6 @@ export const LEAVE_FEEDBACK_EMAIL = 'support@elastic.co'; export const LEAVE_FEEDBACK_URL = `mailto:${LEAVE_FEEDBACK_EMAIL}?Subject=Elastic%20Workplace%20Search%20Feedback`; export const DOCS_PREFIX = `https://www.elastic.co/guide/en/workplace-search/${CURRENT_MAJOR_VERSION}`; -export const ENT_SEARCH_DOCS_PREFIX = `https://www.elastic.co/guide/en/enterprise-search/${CURRENT_MAJOR_VERSION}`; export const DOCUMENT_PERMISSIONS_DOCS_URL = `${DOCS_PREFIX}/workplace-search-sources-document-permissions.html`; export const DOCUMENT_PERMISSIONS_SYNC_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-synchronizing`; export const PRIVATE_SOURCES_DOCS_URL = `${DOCUMENT_PERMISSIONS_DOCS_URL}#sources-permissions-org-private`; @@ -44,72 +44,72 @@ export const CUSTOM_API_DOCS_URL = `${DOCS_PREFIX}/workplace-search-custom-sourc export const CUSTOM_API_DOCUMENT_PERMISSIONS_DOCS_URL = `${CUSTOM_SOURCE_DOCS_URL}#custom-api-source-document-level-access-control`; export const ENT_SEARCH_LICENSE_MANAGEMENT = `${ENT_SEARCH_DOCS_PREFIX}/license-management.html`; -export const ORG_PATH = '/org'; +export const PERSONAL_PATH = '/p'; -export const ROLE_MAPPINGS_PATH = `${ORG_PATH}/role-mappings`; +export const ROLE_MAPPINGS_PATH = '/role_mappings'; export const ROLE_MAPPING_PATH = `${ROLE_MAPPINGS_PATH}/:roleId`; export const ROLE_MAPPING_NEW_PATH = `${ROLE_MAPPINGS_PATH}/new`; -export const USERS_PATH = `${ORG_PATH}/users`; -export const SECURITY_PATH = `${ORG_PATH}/security`; +export const USERS_PATH = '/users'; +export const SECURITY_PATH = '/security'; export const GROUPS_PATH = '/groups'; export const GROUP_PATH = `${GROUPS_PATH}/:groupId`; export const GROUP_SOURCE_PRIORITIZATION_PATH = `${GROUPS_PATH}/:groupId/source_prioritization`; export const SOURCES_PATH = '/sources'; -export const ORG_SOURCES_PATH = `${ORG_PATH}${SOURCES_PATH}`; +export const PERSONAL_SOURCES_PATH = `${PERSONAL_PATH}${SOURCES_PATH}`; export const SOURCE_ADDED_PATH = `${SOURCES_PATH}/added`; export const ADD_SOURCE_PATH = `${SOURCES_PATH}/add`; export const ADD_BOX_PATH = `${SOURCES_PATH}/add/box`; -export const ADD_CONFLUENCE_PATH = `${SOURCES_PATH}/add/confluence-cloud`; -export const ADD_CONFLUENCE_SERVER_PATH = `${SOURCES_PATH}/add/confluence-server`; +export const ADD_CONFLUENCE_PATH = `${SOURCES_PATH}/add/confluence_cloud`; +export const ADD_CONFLUENCE_SERVER_PATH = `${SOURCES_PATH}/add/confluence_server`; export const ADD_DROPBOX_PATH = `${SOURCES_PATH}/add/dropbox`; -export const ADD_GITHUB_ENTERPRISE_PATH = `${SOURCES_PATH}/add/github-enterprise-server`; +export const ADD_GITHUB_ENTERPRISE_PATH = `${SOURCES_PATH}/add/github_enterprise_server`; export const ADD_GITHUB_PATH = `${SOURCES_PATH}/add/github`; export const ADD_GMAIL_PATH = `${SOURCES_PATH}/add/gmail`; -export const ADD_GOOGLE_DRIVE_PATH = `${SOURCES_PATH}/add/google-drive`; -export const ADD_JIRA_PATH = `${SOURCES_PATH}/add/jira-cloud`; -export const ADD_JIRA_SERVER_PATH = `${SOURCES_PATH}/add/jira-server`; +export const ADD_GOOGLE_DRIVE_PATH = `${SOURCES_PATH}/add/google_drive`; +export const ADD_JIRA_PATH = `${SOURCES_PATH}/add/jira_cloud`; +export const ADD_JIRA_SERVER_PATH = `${SOURCES_PATH}/add/jira_server`; export const ADD_ONEDRIVE_PATH = `${SOURCES_PATH}/add/onedrive`; export const ADD_SALESFORCE_PATH = `${SOURCES_PATH}/add/salesforce`; -export const ADD_SALESFORCE_SANDBOX_PATH = `${SOURCES_PATH}/add/salesforce-sandbox`; +export const ADD_SALESFORCE_SANDBOX_PATH = `${SOURCES_PATH}/add/salesforce_sandbox`; export const ADD_SERVICENOW_PATH = `${SOURCES_PATH}/add/servicenow`; export const ADD_SHAREPOINT_PATH = `${SOURCES_PATH}/add/sharepoint`; export const ADD_SLACK_PATH = `${SOURCES_PATH}/add/slack`; export const ADD_ZENDESK_PATH = `${SOURCES_PATH}/add/zendesk`; export const ADD_CUSTOM_PATH = `${SOURCES_PATH}/add/custom`; -export const PERSONAL_SETTINGS_PATH = '/settings'; +export const PERSONAL_SETTINGS_PATH = `${PERSONAL_PATH}/settings`; export const SOURCE_DETAILS_PATH = `${SOURCES_PATH}/:sourceId`; export const SOURCE_CONTENT_PATH = `${SOURCES_PATH}/:sourceId/content`; export const SOURCE_SCHEMAS_PATH = `${SOURCES_PATH}/:sourceId/schemas`; -export const SOURCE_DISPLAY_SETTINGS_PATH = `${SOURCES_PATH}/:sourceId/display-settings`; +export const SOURCE_DISPLAY_SETTINGS_PATH = `${SOURCES_PATH}/:sourceId/display_settings`; export const SOURCE_SETTINGS_PATH = `${SOURCES_PATH}/:sourceId/settings`; -export const REINDEX_JOB_PATH = `${SOURCES_PATH}/:sourceId/schema-errors/:activeReindexJobId`; +export const REINDEX_JOB_PATH = `${SOURCES_PATH}/:sourceId/schema_errors/:activeReindexJobId`; export const DISPLAY_SETTINGS_SEARCH_RESULT_PATH = `${SOURCE_DISPLAY_SETTINGS_PATH}/`; -export const DISPLAY_SETTINGS_RESULT_DETAIL_PATH = `${SOURCE_DISPLAY_SETTINGS_PATH}/result-detail`; +export const DISPLAY_SETTINGS_RESULT_DETAIL_PATH = `${SOURCE_DISPLAY_SETTINGS_PATH}/result_detail`; -export const ORG_SETTINGS_PATH = `${ORG_PATH}/settings`; +export const ORG_SETTINGS_PATH = '/settings'; export const ORG_SETTINGS_CUSTOMIZE_PATH = `${ORG_SETTINGS_PATH}/customize`; export const ORG_SETTINGS_CONNECTORS_PATH = `${ORG_SETTINGS_PATH}/connectors`; export const ORG_SETTINGS_OAUTH_APPLICATION_PATH = `${ORG_SETTINGS_PATH}/oauth`; export const EDIT_BOX_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/box/edit`; -export const EDIT_CONFLUENCE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence-cloud/edit`; -export const EDIT_CONFLUENCE_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence-server/edit`; +export const EDIT_CONFLUENCE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence_cloud/edit`; +export const EDIT_CONFLUENCE_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/confluence_server/edit`; export const EDIT_DROPBOX_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/dropbox/edit`; -export const EDIT_GITHUB_ENTERPRISE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/github-enterprise-server/edit`; +export const EDIT_GITHUB_ENTERPRISE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/github_enterprise_server/edit`; export const EDIT_GITHUB_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/github/edit`; export const EDIT_GMAIL_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/gmail/edit`; -export const EDIT_GOOGLE_DRIVE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/google-drive/edit`; -export const EDIT_JIRA_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira-cloud/edit`; -export const EDIT_JIRA_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira-server/edit`; +export const EDIT_GOOGLE_DRIVE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/google_drive/edit`; +export const EDIT_JIRA_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira_cloud/edit`; +export const EDIT_JIRA_SERVER_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/jira_server/edit`; export const EDIT_ONEDRIVE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/onedrive/edit`; export const EDIT_SALESFORCE_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/salesforce/edit`; -export const EDIT_SALESFORCE_SANDBOX_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/salesforce-sandbox/edit`; +export const EDIT_SALESFORCE_SANDBOX_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/salesforce_sandbox/edit`; export const EDIT_SERVICENOW_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/servicenow/edit`; export const EDIT_SHAREPOINT_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/sharepoint/edit`; export const EDIT_SLACK_PATH = `${ORG_SETTINGS_CONNECTORS_PATH}/slack/edit`; @@ -120,9 +120,15 @@ export const getContentSourcePath = ( path: string, sourceId: string, isOrganization: boolean -): string => generatePath(isOrganization ? ORG_PATH + path : path, { sourceId }); -export const getGroupPath = (groupId: string) => generatePath(GROUP_PATH, { groupId }); -export const getGroupSourcePrioritizationPath = (groupId: string) => +): string => generatePath(isOrganization ? path : `${PERSONAL_PATH}${path}`, { sourceId }); +export const getGroupPath = (groupId: string): string => generatePath(GROUP_PATH, { groupId }); +export const getGroupSourcePrioritizationPath = (groupId: string): string => `${GROUPS_PATH}/${groupId}/source_prioritization`; -export const getSourcesPath = (path: string, isOrganization: boolean) => - isOrganization ? `${ORG_PATH}${path}` : path; +export const getSourcesPath = (path: string, isOrganization: boolean): string => + isOrganization ? path : `${PERSONAL_PATH}${path}`; +export const getReindexJobRoute = ( + sourceId: string, + activeReindexJobId: string, + isOrganization: boolean +) => + getSourcesPath(generatePath(REINDEX_JOB_PATH, { sourceId, activeReindexJobId }), isOrganization); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/types.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/types.ts index 73e7f7ed701d8e..9bda686ebbf00b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/types.ts @@ -181,3 +181,26 @@ export interface CustomSource { name: string; id: string; } + +export interface Result { + [key: string]: string; +} + +export interface OptionValue { + value: string; + text: string; +} + +export interface DetailField { + fieldName: string; + label: string; +} + +export interface SearchResultConfig { + titleField: string | null; + subtitleField: string | null; + descriptionField: string | null; + urlField: string | null; + color: string; + detailFields: DetailField[]; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source.tsx index 7b6d02c36c0ccc..f1b5f2e11abff0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source.tsx @@ -12,11 +12,10 @@ import { useHistory } from 'react-router-dom'; import { AppLogic } from '../../../../app_logic'; import { Loading } from '../../../../../../applications/shared/loading'; -import { ViewContentHeader } from '../../../../components/shared/view_content_header'; import { CUSTOM_SERVICE_TYPE } from '../../../../constants'; import { staticSourceData } from '../../source_data'; import { SourceLogic } from '../../source_logic'; -import { SourceDataItem, FeatureIds } from '../../../../types'; +import { SourceDataItem } from '../../../../types'; import { SOURCE_ADDED_PATH, getSourcesPath } from '../../../../routes'; import { AddSourceHeader } from './add_source_header'; @@ -90,7 +89,6 @@ export const AddSource: React.FC = ({ }, []); const isCustom = serviceType === CUSTOM_SERVICE_TYPE; - const isRemote = features?.platinumPrivateContext.includes(FeatureIds.Remote); const getFirstStep = () => { if (isCustom) return Steps.ConfigureCustomStep; @@ -121,61 +119,10 @@ export const AddSource: React.FC = ({ history.push(`${getSourcesPath(SOURCE_ADDED_PATH, isOrganization)}/?name=${sourceName}`); }; - const pageTitle = () => { - if (currentStep === Steps.ConnectInstanceStep || currentStep === Steps.ConfigureOauthStep) { - return 'Connect'; - } - if (currentStep === Steps.ReAuthenticateStep) { - return 'Re-authenticate'; - } - if (currentStep === Steps.ConfigureCustomStep || currentStep === Steps.SaveCustomStep) { - return 'Create a'; - } - return 'Configure'; - }; - - const CREATE_CUSTOM_SOURCE_SIDEBAR_BLURB = - 'Custom API Sources provide a set of feature-rich endpoints for indexing data from any content repository.'; - const CONFIGURE_ORGANIZATION_SOURCE_SIDEBAR_BLURB = - 'Follow the configuration flow to add a new content source to Workplace Search. First, create an OAuth application in the content source. After that, connect as many instances of the content source that you need.'; - const CONFIGURE_PRIVATE_SOURCE_SIDEBAR_BLURB = - 'Follow the configuration flow to add a new private content source to Workplace Search. Private content sources are added by each person via their own personal dashboards. Their data stays safe and visible only to them.'; - const CONNECT_ORGANIZATION_SOURCE_SIDEBAR_BLURB = `Upon successfully connecting ${name}, source content will be synced to your organization and will be made available and searchable.`; - const CONNECT_PRIVATE_REMOTE_SOURCE_SIDEBAR_BLURB = ( - <> - {name} is a remote source, which means that each time you search, we reach - out to the content source and get matching results directly from {name}'s servers. - - ); - const CONNECT_PRIVATE_STANDARD_SOURCE_SIDEBAR_BLURB = ( - <> - {name} is a standard source for which content is synchronized on a regular - basis, in a relevant and secure way. - - ); - - const CONNECT_PRIVATE_SOURCE_SIDEBAR_BLURB = isRemote - ? CONNECT_PRIVATE_REMOTE_SOURCE_SIDEBAR_BLURB - : CONNECT_PRIVATE_STANDARD_SOURCE_SIDEBAR_BLURB; - const CONFIGURE_SOURCE_SIDEBAR_BLURB = accountContextOnly - ? CONFIGURE_PRIVATE_SOURCE_SIDEBAR_BLURB - : CONFIGURE_ORGANIZATION_SOURCE_SIDEBAR_BLURB; - - const CONFIG_SIDEBAR_BLURB = isCustom - ? CREATE_CUSTOM_SOURCE_SIDEBAR_BLURB - : CONFIGURE_SOURCE_SIDEBAR_BLURB; - const CONNECT_SIDEBAR_BLURB = isOrganization - ? CONNECT_ORGANIZATION_SOURCE_SIDEBAR_BLURB - : CONNECT_PRIVATE_SOURCE_SIDEBAR_BLURB; - - const PAGE_DESCRIPTION = - currentStep === Steps.ConnectInstanceStep ? CONNECT_SIDEBAR_BLURB : CONFIG_SIDEBAR_BLURB; - const header = ; return ( <> - {currentStep === Steps.ConfigIntroStep && ( )} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx index c8fabaac2a4d16..6914a26c9aeb46 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_source_list.tsx @@ -31,7 +31,7 @@ import { AvailableSourcesList } from './available_sources_list'; import { ConfiguredSourcesList } from './configured_sources_list'; const NEW_SOURCE_DESCRIPTION = - 'When configuring and connecting a source, you are creating distinct entities with searchable content synchronized from the content platform itself. A source can be added using one of the available source connectors or via Custom API Sources, for additional flexibility.'; + 'When configuring and connecting a source, you are creating distinct entities with searchable content synchronized from the content platform itself. A source can be added using one of the available source connectors or via Custom API Sources, for additional flexibility. '; const ORG_SOURCE_DESCRIPTION = 'Shared content sources are available to your entire organization or can be assigned to specific user groups.'; const PRIVATE_SOURCE_DESCRIPTION = @@ -99,7 +99,7 @@ export const AddSourceList: React.FC = () => { {showConfiguredSourcesList || isOrganization ? ( - + = ({ {sources.map(({ name, serviceType, addPath, connected, accountContextOnly }, i) => ( -
    + = ({ )} -
    +
    ))} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/connect_instance.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/connect_instance.tsx index ad183181b4ecad..f9123ab4e1cca9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/connect_instance.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/connect_instance.tsx @@ -240,13 +240,13 @@ export const ConnectInstance: React.FC = ({ gutterSize="xl" responsive={false} > - + {header} {featureBadgeGroup()} {descriptionBlock} {formFields} - +
    diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/custom_source_icon.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/custom_source_icon.tsx new file mode 100644 index 00000000000000..16129324b56d1e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/custom_source_icon.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +const BLACK_RGB = '#000'; + +interface CustomSourceIconProps { + color?: string; +} + +export const CustomSourceIcon: React.FC = ({ color = BLACK_RGB }) => ( + + + + +); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.scss b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.scss new file mode 100644 index 00000000000000..27935104f4ef64 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.scss @@ -0,0 +1,206 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +// -------------------------------------------------- +// Custom Source display settings +// -------------------------------------------------- + +@mixin source_name { + font-size: .6875em; + text-transform: uppercase; + font-weight: 600; + letter-spacing: 0.06em; +} + +@mixin example_result_box_shadow { + box-shadow: + 0 1px 3px rgba(black, 0.1), + 0 0 20px $euiColorLightestShade; +} + +// Wrapper +.custom-source-display-settings { + font-size: 16px; +} + +// Example result content +.example-result-content { + & > * { + line-height: 1.5em; + } + + &__title { + font-size: 1em; + font-weight: 600; + color: $euiColorPrimary; + + .example-result-detail-card & { + font-size: 20px; + } + } + + &__subtitle, + &__description { + font-size: .875; + } + + &__subtitle { + color: $euiColorDarkestShade; + } + + &__description { + padding: .1rem 0 .125rem .35rem; + border-left: 3px solid $euiColorLightShade; + color: $euiColorDarkShade; + line-height: 1.8; + word-break: break-word; + + @supports (display: -webkit-box) { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &__url { + .example-result-detail-card & { + color: $euiColorDarkShade; + } + } +} + +.example-result-content-placeholder { + color: $euiColorMediumShade; +} + +// Example standout result +.example-standout-result { + border-radius: 4px; + overflow: hidden; + @include example_result_box_shadow; + + &__header, + &__content { + padding-left: 1em; + padding-right: 1em; + } + + &__content { + padding-top: 1em; + padding-bottom: 1em; + } + + &__source-name { + line-height: 34px; + @include source_name; + } +} + +// Example result group +.example-result-group { + &__header { + padding: 0 .5em; + border-radius: 4px; + display: inline-flex; + align-items: center; + + .euiIcon { + margin-right: .25rem; + } + } + + &__source-name { + line-height: 1.75em; + @include source_name; + } + + &__content { + display: flex; + align-items: stretch; + padding: .75em 0; + } + + &__border { + width: 4px; + border-radius: 2px; + flex-shrink: 0; + margin-left: .875rem; + } + + &__results { + flex: 1; + max-width: 100%; + } +} + +.example-grouped-result { + padding: 1em; +} + +.example-result-field-hover { + background: lighten($euiColorVis1_behindText, 30%); + position: relative; + + &:before, + &:after { + content: ''; + position: absolute; + height: 100%; + width: 4px; + background: lighten($euiColorVis1_behindText, 30%); + } + + &:before { + right: 100%; + border-radius: 2px 0 0 2px; + } + + &:after { + left: 100%; + border-radius: 0 2px 2px 0; + } + + .example-result-content-placeholder { + color: $euiColorFullShade; + } +} + +.example-result-detail-card { + @include example_result_box_shadow; + + &__header { + position: relative; + padding: 1.25em 1em 0; + } + + &__border { + height: 4px; + position: absolute; + top: 0; + right: 0; + left: 0; + } + + &__source-name { + margin-bottom: 1em; + font-weight: 500; + } + + &__field { + padding: 1em; + + & + & { + border-top: 1px solid $euiColorLightShade; + } + } +} + +.visible-fields-container { + background: $euiColorLightestShade; + border-color: transparent; +} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.tsx new file mode 100644 index 00000000000000..e34728beef5e58 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings.tsx @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FormEvent, useEffect } from 'react'; + +import { History } from 'history'; +import { useActions, useValues } from 'kea'; +import { useHistory } from 'react-router-dom'; + +import './display_settings.scss'; + +import { + EuiButton, + EuiEmptyPrompt, + EuiTabbedContent, + EuiPanel, + EuiTabbedContentTab, +} from '@elastic/eui'; + +import { + DISPLAY_SETTINGS_RESULT_DETAIL_PATH, + DISPLAY_SETTINGS_SEARCH_RESULT_PATH, + getContentSourcePath, +} from '../../../../routes'; + +import { AppLogic } from '../../../../app_logic'; + +import { Loading } from '../../../../../shared/loading'; +import { ViewContentHeader } from '../../../../components/shared/view_content_header'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { FieldEditorModal } from './field_editor_modal'; +import { ResultDetail } from './result_detail'; +import { SearchResults } from './search_results'; + +const UNSAVED_MESSAGE = + 'Your display settings have not been saved. Are you sure you want to leave?'; + +interface DisplaySettingsProps { + tabId: number; +} + +export const DisplaySettings: React.FC = ({ tabId }) => { + const history = useHistory() as History; + const { initializeDisplaySettings, setServerData, resetDisplaySettingsState } = useActions( + DisplaySettingsLogic + ); + + const { + dataLoading, + sourceId, + addFieldModalVisible, + unsavedChanges, + exampleDocuments, + } = useValues(DisplaySettingsLogic); + + const { isOrganization } = useValues(AppLogic); + + const hasDocuments = exampleDocuments.length > 0; + + useEffect(() => { + initializeDisplaySettings(); + return resetDisplaySettingsState; + }, []); + + useEffect(() => { + window.onbeforeunload = hasDocuments && unsavedChanges ? () => UNSAVED_MESSAGE : null; + return () => { + window.onbeforeunload = null; + }; + }, [unsavedChanges]); + + if (dataLoading) return ; + + const tabs = [ + { + id: 'search_results', + name: 'Search Results', + content: , + }, + { + id: 'result_detail', + name: 'Result Detail', + content: , + }, + ] as EuiTabbedContentTab[]; + + const onSelectedTabChanged = (tab: EuiTabbedContentTab) => { + const path = + tab.id === tabs[1].id + ? getContentSourcePath(DISPLAY_SETTINGS_RESULT_DETAIL_PATH, sourceId, isOrganization) + : getContentSourcePath(DISPLAY_SETTINGS_SEARCH_RESULT_PATH, sourceId, isOrganization); + + history.push(path); + }; + + const handleFormSubmit = (e: FormEvent) => { + e.preventDefault(); + setServerData(); + }; + + return ( + <> +
    + + Save + + ) : null + } + /> + {hasDocuments ? ( + + ) : ( + + You have no content yet} + body={ +

    You need some content to display in order to configure the display settings.

    + } + /> +
    + )} + + {addFieldModalVisible && } + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_logic.ts new file mode 100644 index 00000000000000..c52665524f5666 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_logic.ts @@ -0,0 +1,350 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { cloneDeep, isEqual, differenceBy } from 'lodash'; +import { DropResult } from 'react-beautiful-dnd'; + +import { kea, MakeLogicType } from 'kea'; + +import { HttpLogic } from '../../../../../shared/http'; + +import { + setSuccessMessage, + FlashMessagesLogic, + flashAPIErrors, +} from '../../../../../shared/flash_messages'; + +import { AppLogic } from '../../../../app_logic'; +import { SourceLogic } from '../../source_logic'; + +const SUCCESS_MESSAGE = 'Display Settings have been successfuly updated.'; + +import { DetailField, SearchResultConfig, OptionValue, Result } from '../../../../types'; + +export interface DisplaySettingsResponseProps { + sourceName: string; + searchResultConfig: SearchResultConfig; + schemaFields: object; + exampleDocuments: Result[]; +} + +export interface DisplaySettingsInitialData extends DisplaySettingsResponseProps { + sourceId: string; + serverRoute: string; +} + +interface DisplaySettingsActions { + initializeDisplaySettings(): void; + setServerData(): void; + onInitializeDisplaySettings( + displaySettingsProps: DisplaySettingsInitialData + ): DisplaySettingsInitialData; + setServerResponseData( + displaySettingsProps: DisplaySettingsResponseProps + ): DisplaySettingsResponseProps; + setTitleField(titleField: string | null): string | null; + setUrlField(urlField: string): string; + setSubtitleField(subtitleField: string | null): string | null; + setDescriptionField(descriptionField: string | null): string | null; + setColorField(hex: string): string; + setDetailFields(result: DropResult): { result: DropResult }; + openEditDetailField(editFieldIndex: number | null): number | null; + removeDetailField(index: number): number; + addDetailField(newField: DetailField): DetailField; + updateDetailField( + updatedField: DetailField, + index: number | null + ): { updatedField: DetailField; index: number }; + toggleFieldEditorModal(): void; + toggleTitleFieldHover(): void; + toggleSubtitleFieldHover(): void; + toggleDescriptionFieldHover(): void; + toggleUrlFieldHover(): void; + resetDisplaySettingsState(): void; +} + +interface DisplaySettingsValues { + sourceName: string; + sourceId: string; + schemaFields: object; + exampleDocuments: Result[]; + serverSearchResultConfig: SearchResultConfig; + searchResultConfig: SearchResultConfig; + serverRoute: string; + editFieldIndex: number | null; + dataLoading: boolean; + addFieldModalVisible: boolean; + titleFieldHover: boolean; + urlFieldHover: boolean; + subtitleFieldHover: boolean; + descriptionFieldHover: boolean; + fieldOptions: OptionValue[]; + optionalFieldOptions: OptionValue[]; + availableFieldOptions: OptionValue[]; + unsavedChanges: boolean; +} + +const defaultSearchResultConfig = { + titleField: '', + subtitleField: '', + descriptionField: '', + urlField: '', + color: '#000000', + detailFields: [], +}; + +export const DisplaySettingsLogic = kea< + MakeLogicType +>({ + actions: { + onInitializeDisplaySettings: (displaySettingsProps: DisplaySettingsInitialData) => + displaySettingsProps, + setServerResponseData: (displaySettingsProps: DisplaySettingsResponseProps) => + displaySettingsProps, + setTitleField: (titleField: string) => titleField, + setUrlField: (urlField: string) => urlField, + setSubtitleField: (subtitleField: string | null) => subtitleField, + setDescriptionField: (descriptionField: string) => descriptionField, + setColorField: (hex: string) => hex, + setDetailFields: (result: DropResult) => ({ result }), + openEditDetailField: (editFieldIndex: number | null) => editFieldIndex, + removeDetailField: (index: number) => index, + addDetailField: (newField: DetailField) => newField, + updateDetailField: (updatedField: DetailField, index: number) => ({ updatedField, index }), + toggleFieldEditorModal: () => true, + toggleTitleFieldHover: () => true, + toggleSubtitleFieldHover: () => true, + toggleDescriptionFieldHover: () => true, + toggleUrlFieldHover: () => true, + resetDisplaySettingsState: () => true, + initializeDisplaySettings: () => true, + setServerData: () => true, + }, + reducers: { + sourceName: [ + '', + { + onInitializeDisplaySettings: (_, { sourceName }) => sourceName, + }, + ], + sourceId: [ + '', + { + onInitializeDisplaySettings: (_, { sourceId }) => sourceId, + }, + ], + schemaFields: [ + {}, + { + onInitializeDisplaySettings: (_, { schemaFields }) => schemaFields, + }, + ], + exampleDocuments: [ + [], + { + onInitializeDisplaySettings: (_, { exampleDocuments }) => exampleDocuments, + }, + ], + serverSearchResultConfig: [ + defaultSearchResultConfig, + { + onInitializeDisplaySettings: (_, { searchResultConfig }) => + setDefaultColor(searchResultConfig), + setServerResponseData: (_, { searchResultConfig }) => searchResultConfig, + }, + ], + searchResultConfig: [ + defaultSearchResultConfig, + { + onInitializeDisplaySettings: (_, { searchResultConfig }) => + setDefaultColor(searchResultConfig), + setServerResponseData: (_, { searchResultConfig }) => searchResultConfig, + setTitleField: (searchResultConfig, titleField) => ({ ...searchResultConfig, titleField }), + setSubtitleField: (searchResultConfig, subtitleField) => ({ + ...searchResultConfig, + subtitleField, + }), + setUrlField: (searchResultConfig, urlField) => ({ ...searchResultConfig, urlField }), + setDescriptionField: (searchResultConfig, descriptionField) => ({ + ...searchResultConfig, + descriptionField, + }), + setColorField: (searchResultConfig, color) => ({ ...searchResultConfig, color }), + setDetailFields: (searchResultConfig, { result: { destination, source } }) => { + const detailFields = cloneDeep(searchResultConfig.detailFields); + const element = detailFields[source.index]; + detailFields.splice(source.index, 1); + detailFields.splice(destination!.index, 0, element); + return { + ...searchResultConfig, + detailFields, + }; + }, + addDetailField: (searchResultConfig, newfield) => { + const detailFields = cloneDeep(searchResultConfig.detailFields); + detailFields.push(newfield); + return { + ...searchResultConfig, + detailFields, + }; + }, + removeDetailField: (searchResultConfig, index) => { + const detailFields = cloneDeep(searchResultConfig.detailFields); + detailFields.splice(index, 1); + return { + ...searchResultConfig, + detailFields, + }; + }, + updateDetailField: (searchResultConfig, { updatedField, index }) => { + const detailFields = cloneDeep(searchResultConfig.detailFields); + detailFields[index] = updatedField; + return { + ...searchResultConfig, + detailFields, + }; + }, + }, + ], + serverRoute: [ + '', + { + onInitializeDisplaySettings: (_, { serverRoute }) => serverRoute, + }, + ], + editFieldIndex: [ + null, + { + openEditDetailField: (_, openEditDetailField) => openEditDetailField, + toggleFieldEditorModal: () => null, + }, + ], + dataLoading: [ + true, + { + onInitializeDisplaySettings: () => false, + }, + ], + addFieldModalVisible: [ + false, + { + toggleFieldEditorModal: (addFieldModalVisible) => !addFieldModalVisible, + openEditDetailField: () => true, + updateDetailField: () => false, + addDetailField: () => false, + }, + ], + titleFieldHover: [ + false, + { + toggleTitleFieldHover: (titleFieldHover) => !titleFieldHover, + }, + ], + urlFieldHover: [ + false, + { + toggleUrlFieldHover: (urlFieldHover) => !urlFieldHover, + }, + ], + subtitleFieldHover: [ + false, + { + toggleSubtitleFieldHover: (subtitleFieldHover) => !subtitleFieldHover, + }, + ], + descriptionFieldHover: [ + false, + { + toggleDescriptionFieldHover: (addFieldModalVisible) => !addFieldModalVisible, + }, + ], + }, + selectors: ({ selectors }) => ({ + fieldOptions: [ + () => [selectors.schemaFields], + (schemaFields) => Object.keys(schemaFields).map(euiSelectObjectFromValue), + ], + optionalFieldOptions: [ + () => [selectors.fieldOptions], + (fieldOptions) => { + const optionalFieldOptions = cloneDeep(fieldOptions); + optionalFieldOptions.unshift({ value: '', text: '' }); + return optionalFieldOptions; + }, + ], + // We don't want to let the user add a duplicate detailField. + availableFieldOptions: [ + () => [selectors.fieldOptions, selectors.searchResultConfig], + (fieldOptions, { detailFields }) => { + const usedFields = detailFields.map((usedField: DetailField) => + euiSelectObjectFromValue(usedField.fieldName) + ); + return differenceBy(fieldOptions, usedFields, 'value'); + }, + ], + unsavedChanges: [ + () => [selectors.searchResultConfig, selectors.serverSearchResultConfig], + (uiConfig, serverConfig) => !isEqual(uiConfig, serverConfig), + ], + }), + listeners: ({ actions, values }) => ({ + initializeDisplaySettings: async () => { + const { isOrganization } = AppLogic.values; + const { + contentSource: { id: sourceId }, + } = SourceLogic.values; + + const route = isOrganization + ? `/api/workplace_search/org/sources/${sourceId}/display_settings/config` + : `/api/workplace_search/account/sources/${sourceId}/display_settings/config`; + + try { + const response = await HttpLogic.values.http.get(route); + actions.onInitializeDisplaySettings({ + isOrganization, + sourceId, + serverRoute: route, + ...response, + }); + } catch (e) { + flashAPIErrors(e); + } + }, + setServerData: async () => { + const { searchResultConfig, serverRoute } = values; + + try { + const response = await HttpLogic.values.http.post(serverRoute, { + body: JSON.stringify({ ...searchResultConfig }), + }); + actions.setServerResponseData(response); + } catch (e) { + flashAPIErrors(e); + } + }, + setServerResponseData: () => { + setSuccessMessage(SUCCESS_MESSAGE); + }, + toggleFieldEditorModal: () => { + FlashMessagesLogic.actions.clearFlashMessages(); + }, + resetDisplaySettingsState: () => { + FlashMessagesLogic.actions.clearFlashMessages(); + }, + }), +}); + +const euiSelectObjectFromValue = (value: string) => ({ text: value, value }); + +// By default, the color is `null` on the server. The color is a required field and the +// EuiColorPicker components doesn't allow the field to be required so the form can be +// submitted with no color and this results in a server error. The default should be black +// and this allows the `searchResultConfig` and the `serverSearchResultConfig` reducers to +// stay synced on initialization. +const setDefaultColor = (searchResultConfig: SearchResultConfig) => ({ + ...searchResultConfig, + color: searchResultConfig.color || '#000000', +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_router.tsx new file mode 100644 index 00000000000000..01ac93735b8a8e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/display_settings_router.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { useValues } from 'kea'; +import { Route, Switch } from 'react-router-dom'; + +import { AppLogic } from '../../../../app_logic'; + +import { + DISPLAY_SETTINGS_RESULT_DETAIL_PATH, + DISPLAY_SETTINGS_SEARCH_RESULT_PATH, + getSourcesPath, +} from '../../../../routes'; + +import { DisplaySettings } from './display_settings'; + +export const DisplaySettingsRouter: React.FC = () => { + const { isOrganization } = useValues(AppLogic); + return ( + + } + /> + } + /> + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_result_detail_card.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_result_detail_card.tsx new file mode 100644 index 00000000000000..468f7d2f7ad051 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_result_detail_card.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; +import { useValues } from 'kea'; + +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { CustomSourceIcon } from './custom_source_icon'; +import { TitleField } from './title_field'; + +export const ExampleResultDetailCard: React.FC = () => { + const { + sourceName, + searchResultConfig: { titleField, urlField, color, detailFields }, + titleFieldHover, + urlFieldHover, + exampleDocuments, + } = useValues(DisplaySettingsLogic); + + const result = exampleDocuments[0]; + + return ( +
    +
    +
    +
    + + + + + {sourceName} + +
    +
    + +
    + {urlField ? ( +
    {result[urlField]}
    + ) : ( + URL + )} +
    +
    +
    +
    + {detailFields.length > 0 ? ( + detailFields.map(({ fieldName, label }, index) => ( +
    + +

    {label}

    +
    + +
    {result[fieldName]}
    +
    +
    + )) + ) : ( + + )} +
    +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_search_result_group.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_search_result_group.tsx new file mode 100644 index 00000000000000..14239b16543089 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_search_result_group.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { isColorDark, hexToRgb } from '@elastic/eui'; +import classNames from 'classnames'; +import { useValues } from 'kea'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { CustomSourceIcon } from './custom_source_icon'; +import { SubtitleField } from './subtitle_field'; +import { TitleField } from './title_field'; + +export const ExampleSearchResultGroup: React.FC = () => { + const { + sourceName, + searchResultConfig: { titleField, subtitleField, descriptionField, color }, + titleFieldHover, + subtitleFieldHover, + descriptionFieldHover, + exampleDocuments, + } = useValues(DisplaySettingsLogic); + + return ( +
    +
    + + + {sourceName} + +
    +
    +
    +
    + {exampleDocuments.map((result, id) => ( +
    +
    + + +
    + {descriptionField ? ( +
    {result[descriptionField]}
    + ) : ( + Description + )} +
    +
    +
    + ))} +
    +
    +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_standout_result.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_standout_result.tsx new file mode 100644 index 00000000000000..4ef3b1fe14b932 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/example_standout_result.tsx @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; +import { useValues } from 'kea'; + +import { isColorDark, hexToRgb } from '@elastic/eui'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { CustomSourceIcon } from './custom_source_icon'; +import { SubtitleField } from './subtitle_field'; +import { TitleField } from './title_field'; + +export const ExampleStandoutResult: React.FC = () => { + const { + sourceName, + searchResultConfig: { titleField, subtitleField, descriptionField, color }, + titleFieldHover, + subtitleFieldHover, + descriptionFieldHover, + exampleDocuments, + } = useValues(DisplaySettingsLogic); + + const result = exampleDocuments[0]; + + return ( +
    +
    + + + {sourceName} + +
    +
    +
    + + +
    + {descriptionField ? ( + {result[descriptionField]} + ) : ( + Description + )} +
    +
    +
    +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/field_editor_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/field_editor_modal.tsx new file mode 100644 index 00000000000000..587916a741d666 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/field_editor_modal.tsx @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FormEvent, useState } from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiButton, + EuiButtonEmpty, + EuiFieldText, + EuiForm, + EuiFormRow, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiOverlayMask, + EuiSelect, +} from '@elastic/eui'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +const emptyField = { fieldName: '', label: '' }; + +export const FieldEditorModal: React.FC = () => { + const { toggleFieldEditorModal, addDetailField, updateDetailField } = useActions( + DisplaySettingsLogic + ); + + const { + searchResultConfig: { detailFields }, + availableFieldOptions, + fieldOptions, + editFieldIndex, + } = useValues(DisplaySettingsLogic); + + const isEditing = editFieldIndex || editFieldIndex === 0; + const field = isEditing ? detailFields[editFieldIndex || 0] : emptyField; + const [fieldName, setName] = useState(field.fieldName || ''); + const [label, setLabel] = useState(field.label || ''); + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + if (isEditing) { + updateDetailField({ fieldName, label }, editFieldIndex); + } else { + addDetailField({ fieldName, label }); + } + }; + + const ACTION_LABEL = isEditing ? 'Update' : 'Add'; + + return ( + +
    + + + {ACTION_LABEL} Field + + + + + setName(e.target.value)} + /> + + + setLabel(e.target.value)} + /> + + + + + Cancel + + {ACTION_LABEL} Field + + + +
    +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/index.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/index.ts new file mode 100644 index 00000000000000..f8c6834db7805e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { DisplaySettingsRouter } from './display_settings_router'; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/result_detail.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/result_detail.tsx new file mode 100644 index 00000000000000..cb65d8ef671e60 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/result_detail.tsx @@ -0,0 +1,146 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiButtonEmpty, + EuiButtonIcon, + EuiDragDropContext, + EuiDraggable, + EuiDroppable, + EuiFlexGrid, + EuiFlexGroup, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiIcon, + EuiPanel, + EuiSpacer, + EuiTextColor, + EuiTitle, +} from '@elastic/eui'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { ExampleResultDetailCard } from './example_result_detail_card'; + +export const ResultDetail: React.FC = () => { + const { + toggleFieldEditorModal, + setDetailFields, + openEditDetailField, + removeDetailField, + } = useActions(DisplaySettingsLogic); + + const { + searchResultConfig: { detailFields }, + availableFieldOptions, + } = useValues(DisplaySettingsLogic); + + return ( + <> + + + + + + + <> + + + +

    Visible Fields

    +
    +
    + + + Add Field + + +
    + + {detailFields.length > 0 ? ( + + + <> + {detailFields.map(({ fieldName, label }, index) => ( + + {(provided) => ( + + + +
    + +
    +
    + + +

    {fieldName}

    +
    + +
    “{label || ''}”
    +
    +
    + +
    + openEditDetailField(index)} + /> + removeDetailField(index)} + /> +
    +
    +
    +
    + )} +
    + ))} + +
    +
    + ) : ( +

    Add fields and move them into the order you want them to appear.

    + )} + +
    +
    +
    + + + +

    Preview

    +
    + + +
    +
    +
    + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/search_results.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/search_results.tsx new file mode 100644 index 00000000000000..cfe0ddb1533ecc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/search_results.tsx @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiColorPicker, + EuiFlexGrid, + EuiFlexItem, + EuiForm, + EuiFormRow, + EuiPanel, + EuiSelect, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; + +import { DisplaySettingsLogic } from './display_settings_logic'; + +import { ExampleSearchResultGroup } from './example_search_result_group'; +import { ExampleStandoutResult } from './example_standout_result'; + +export const SearchResults: React.FC = () => { + const { + toggleTitleFieldHover, + toggleSubtitleFieldHover, + toggleDescriptionFieldHover, + setTitleField, + setSubtitleField, + setDescriptionField, + setUrlField, + setColorField, + } = useActions(DisplaySettingsLogic); + + const { + searchResultConfig: { titleField, descriptionField, subtitleField, urlField, color }, + fieldOptions, + optionalFieldOptions, + } = useValues(DisplaySettingsLogic); + + return ( + <> + + + + + +

    Search Result Settings

    +
    + + + null} // FIXME + onBlur={() => null} // FIXME + > + setTitleField(e.target.value)} + /> + + + setUrlField(e.target.value)} + /> + + + null} // FIXME + onBlur={() => null} // FIXME + /> + + null} // FIXME + onBlur={() => null} // FIXME + > + setSubtitleField(value === '' ? null : value)} + /> + + null} // FIXME + onBlur={() => null} // FIXME + > + + setDescriptionField(value === '' ? null : value) + } + /> + + +
    + + + +

    Preview

    +
    + +
    + +

    Featured Results

    +
    +

    + A matching document will appear as a single bold card. +

    +
    + + + +
    + +

    Standard Results

    +
    +

    + Somewhat matching documents will appear as a set. +

    +
    + + +
    +
    +
    + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/subtitle_field.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/subtitle_field.tsx new file mode 100644 index 00000000000000..e27052ddffc04d --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/subtitle_field.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; + +import { Result } from '../../../../types'; + +interface SubtitleFieldProps { + result: Result; + subtitleField: string | null; + subtitleFieldHover: boolean; +} + +export const SubtitleField: React.FC = ({ + result, + subtitleField, + subtitleFieldHover, +}) => ( +
    + {subtitleField ? ( +
    {result[subtitleField]}
    + ) : ( + Subtitle + )} +
    +); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/title_field.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/title_field.tsx new file mode 100644 index 00000000000000..a54c0977b464f9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/display_settings/title_field.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import classNames from 'classnames'; + +import { Result } from '../../../../types'; + +interface TitleFieldProps { + result: Result; + titleField: string | null; + titleFieldHover: boolean; +} + +export const TitleField: React.FC = ({ result, titleField, titleFieldHover }) => { + const title = titleField ? result[titleField] : ''; + const titleDisplay = Array.isArray(title) ? title.join(', ') : title; + return ( +
    + {titleField ? ( +
    {titleDisplay}
    + ) : ( + Title + )} +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx index 0155c07f4e0bb0..07b4c6c298fd35 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/overview.tsx @@ -248,11 +248,9 @@ export const Overview: React.FC = () => { }; return !groups.length ? null : ( - - -
    - Group Access -
    + <> + +

    Group Access

    @@ -275,35 +273,36 @@ export const Overview: React.FC = () => { ))} -
    + ); }; const detailsSummary = ( - - -
    - Configuration -
    -
    - - - {details.map((detail, index) => ( - - - {detail.title} - - {detail.description} - - ))} + <> + + +

    Configuration

    -
    + + + + {details.map((detail, index) => ( + + + {detail.title} + + {detail.description} + + ))} + + + ); const documentPermissions = ( @@ -472,10 +471,9 @@ export const Overview: React.FC = () => { return ( <> - - + @@ -525,7 +523,6 @@ export const Overview: React.FC = () => { )} - ); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/constants.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/constants.ts new file mode 100644 index 00000000000000..104331dcd97bb9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/constants.ts @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { i18n } from '@kbn/i18n'; + +export const SCHEMA_ERRORS_HEADING = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.errors.heading', + { + defaultMessage: 'Schema Change Errors', + } +); + +export const SCHEMA_ERRORS_TABLE_FIELD_NAME_HEADER = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.errors.header.fieldName', + { + defaultMessage: 'Field Name', + } +); + +export const SCHEMA_ERRORS_TABLE_DATA_TYPE_HEADER = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.errors.header.dataType', + { + defaultMessage: 'Data Type', + } +); + +export const SCHEMA_FIELD_ERRORS_ERROR_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.errors.message', + { + defaultMessage: 'Oops, we were not able to find any errors for this Schema.', + } +); + +export const SCHEMA_FIELD_ADDED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.fieldAdded.message', + { + defaultMessage: 'New field added.', + } +); + +export const SCHEMA_UPDATED_MESSAGE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.updated.message', + { + defaultMessage: 'Schema updated.', + } +); + +export const SCHEMA_ADD_FIELD_BUTTON = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.addField.button', + { + defaultMessage: 'Add field', + } +); + +export const SCHEMA_MANAGE_SCHEMA_TITLE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.manage.title', + { + defaultMessage: 'Manage source schema', + } +); + +export const SCHEMA_MANAGE_SCHEMA_DESCRIPTION = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.manage.description', + { + defaultMessage: 'Add new fields or change the types of existing ones', + } +); + +export const SCHEMA_FILTER_PLACEHOLDER = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.filter.placeholder', + { + defaultMessage: 'Filter schema fields...', + } +); + +export const SCHEMA_UPDATING = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.updating', + { + defaultMessage: 'Updating schema...', + } +); + +export const SCHEMA_SAVE_BUTTON = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.save.button', + { + defaultMessage: 'Save schema', + } +); + +export const SCHEMA_EMPTY_SCHEMA_TITLE = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.empty.title', + { + defaultMessage: 'Content source does not have a schema', + } +); + +export const SCHEMA_EMPTY_SCHEMA_DESCRIPTION = i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.empty.description', + { + defaultMessage: + 'A schema is created for you once you index some documents. Click below to create schema fields in advance.', + } +); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/index.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/index.ts new file mode 100644 index 00000000000000..720ae8ac2a7058 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { Schema } from './schema'; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx new file mode 100644 index 00000000000000..6a1991e4c39e3f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema.tsx @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiButton, + EuiButtonEmpty, + EuiEmptyPrompt, + EuiFieldSearch, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiPanel, +} from '@elastic/eui'; + +import { getReindexJobRoute } from '../../../../routes'; +import { AppLogic } from '../../../../app_logic'; + +import { Loading } from '../../../../../shared/loading'; +import { ViewContentHeader } from '../../../../components/shared/view_content_header'; + +import { SchemaAddFieldModal } from '../../../../../shared/schema/schema_add_field_modal'; +import { IndexingStatus } from '../../../../../shared/indexing_status'; + +import { SchemaFieldsTable } from './schema_fields_table'; +import { SchemaLogic } from './schema_logic'; + +import { + SCHEMA_ADD_FIELD_BUTTON, + SCHEMA_MANAGE_SCHEMA_TITLE, + SCHEMA_MANAGE_SCHEMA_DESCRIPTION, + SCHEMA_FILTER_PLACEHOLDER, + SCHEMA_UPDATING, + SCHEMA_SAVE_BUTTON, + SCHEMA_EMPTY_SCHEMA_TITLE, + SCHEMA_EMPTY_SCHEMA_DESCRIPTION, +} from './constants'; + +export const Schema: React.FC = () => { + const { + initializeSchema, + onIndexingComplete, + addNewField, + updateFields, + openAddFieldModal, + closeAddFieldModal, + setFilterValue, + } = useActions(SchemaLogic); + + const { + sourceId, + activeSchema, + filterValue, + showAddFieldModal, + addFieldFormErrors, + mostRecentIndexJob, + formUnchanged, + dataLoading, + } = useValues(SchemaLogic); + + const { isOrganization } = useValues(AppLogic); + + useEffect(() => { + initializeSchema(); + }, []); + + if (dataLoading) return ; + + const hasSchemaFields = Object.keys(activeSchema).length > 0; + const { isActive, hasErrors, percentageComplete, activeReindexJobId } = mostRecentIndexJob; + + const addFieldButton = ( + + {SCHEMA_ADD_FIELD_BUTTON} + + ); + const statusPath = isOrganization + ? `/api/workplace_search/org/sources/${sourceId}/reindex_job/${activeReindexJobId}/status` + : `/api/workplace_search/account/sources/${sourceId}/reindex_job/${activeReindexJobId}/status`; + + return ( + <> + +
    + {(isActive || hasErrors) && ( + + )} + {hasSchemaFields ? ( + <> + + + + setFilterValue(e.target.value)} + /> + + + + {addFieldButton} + + {percentageComplete < 100 ? ( + + {SCHEMA_UPDATING} + + ) : ( + + {SCHEMA_SAVE_BUTTON} + + )} + + + + + + + + ) : ( + + {SCHEMA_EMPTY_SCHEMA_TITLE}} + body={

    {SCHEMA_EMPTY_SCHEMA_DESCRIPTION}

    } + actions={addFieldButton} + /> +
    + )} +
    + {showAddFieldModal && ( + + )} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_change_errors.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_change_errors.tsx new file mode 100644 index 00000000000000..7fc923875dcdff --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_change_errors.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; +import { useParams } from 'react-router-dom'; + +import { useActions, useValues } from 'kea'; + +import { EuiSpacer } from '@elastic/eui'; + +import { SchemaErrorsAccordion } from '../../../../../shared/schema/schema_errors_accordion'; +import { ViewContentHeader } from '../../../../components/shared/view_content_header'; +import { SchemaLogic } from './schema_logic'; +import { SCHEMA_ERRORS_HEADING } from './constants'; + +export const SchemaChangeErrors: React.FC = () => { + const { activeReindexJobId, sourceId } = useParams() as { + activeReindexJobId: string; + sourceId: string; + }; + const { initializeSchemaFieldErrors } = useActions(SchemaLogic); + + const { fieldCoercionErrors, serverSchema } = useValues(SchemaLogic); + + useEffect(() => { + initializeSchemaFieldErrors(activeReindexJobId, sourceId); + }, []); + + return ( +
    + + +
    + +
    +
    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_fields_table.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_fields_table.tsx new file mode 100644 index 00000000000000..8f697b2b5c35d2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_fields_table.tsx @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; + +import { useActions, useValues } from 'kea'; + +import { i18n } from '@kbn/i18n'; + +import { + EuiFlexGroup, + EuiFlexItem, + EuiTable, + EuiTableBody, + EuiTableHeader, + EuiTableHeaderCell, + EuiTableRow, + EuiTableRowCell, +} from '@elastic/eui'; + +import { SchemaExistingField } from '../../../../../shared/schema/schema_existing_field'; +import { SchemaLogic } from './schema_logic'; +import { + SCHEMA_ERRORS_TABLE_FIELD_NAME_HEADER, + SCHEMA_ERRORS_TABLE_DATA_TYPE_HEADER, +} from './constants'; + +export const SchemaFieldsTable: React.FC = () => { + const { updateExistingFieldType } = useActions(SchemaLogic); + + const { filteredSchemaFields, filterValue } = useValues(SchemaLogic); + + return Object.keys(filteredSchemaFields).length > 0 ? ( + + + {SCHEMA_ERRORS_TABLE_FIELD_NAME_HEADER} + + {SCHEMA_ERRORS_TABLE_DATA_TYPE_HEADER} + + + + {Object.keys(filteredSchemaFields).map((fieldName) => ( + + + + + {fieldName} + + + + + + + + ))} + + + ) : ( +

    + {i18n.translate( + 'xpack.enterpriseSearch.workplaceSearch.contentSource.schema.filter.noResults.message', + { + defaultMessage: 'No results found for "{filterValue}".', + values: { filterValue }, + } + )} +

    + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_logic.ts new file mode 100644 index 00000000000000..36eb3fc67b2c24 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/schema/schema_logic.ts @@ -0,0 +1,357 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { cloneDeep, isEqual } from 'lodash'; +import { kea, MakeLogicType } from 'kea'; + +import { HttpLogic } from '../../../../../shared/http'; + +import { TEXT } from '../../../../../shared/constants/field_types'; +import { ADD, UPDATE } from '../../../../../shared/constants/operations'; +import { IndexJob, TOperation, Schema, SchemaTypes } from '../../../../../shared/types'; +import { OptionValue } from '../../../../types'; + +import { + flashAPIErrors, + setSuccessMessage, + FlashMessagesLogic, +} from '../../../../../shared/flash_messages'; + +import { AppLogic } from '../../../../app_logic'; +import { SourceLogic } from '../../source_logic'; + +import { + SCHEMA_FIELD_ERRORS_ERROR_MESSAGE, + SCHEMA_FIELD_ADDED_MESSAGE, + SCHEMA_UPDATED_MESSAGE, +} from './constants'; + +interface SchemaActions { + onInitializeSchema(schemaProps: SchemaInitialData): SchemaInitialData; + onInitializeSchemaFieldErrors( + fieldCoercionErrorsProps: SchemaChangeErrorsProps + ): SchemaChangeErrorsProps; + onSchemaSetSuccess(schemaProps: SchemaResponseProps): SchemaResponseProps; + onSchemaSetFormErrors(errors: string[]): string[]; + updateNewFieldType(newFieldType: SchemaTypes): SchemaTypes; + onFieldUpdate({ + schema, + formUnchanged, + }: { + schema: Schema; + formUnchanged: boolean; + }): { schema: Schema; formUnchanged: boolean }; + onIndexingComplete(numDocumentsWithErrors: number): number; + resetMostRecentIndexJob(emptyReindexJob: IndexJob): IndexJob; + showFieldSuccess(successMessage: string): string; + setFieldName(rawFieldName: string): string; + setFilterValue(filterValue: string): string; + addNewField( + fieldName: string, + newFieldType: SchemaTypes + ): { fieldName: string; newFieldType: SchemaTypes }; + updateFields(): void; + openAddFieldModal(): void; + closeAddFieldModal(): void; + resetSchemaState(): void; + initializeSchema(): void; + initializeSchemaFieldErrors( + activeReindexJobId: string, + sourceId: string + ): { activeReindexJobId: string; sourceId: string }; + updateExistingFieldType( + fieldName: string, + newFieldType: SchemaTypes + ): { fieldName: string; newFieldType: SchemaTypes }; + setServerField( + updatedSchema: Schema, + operation: TOperation + ): { updatedSchema: Schema; operation: TOperation }; +} + +interface SchemaValues { + sourceId: string; + activeSchema: Schema; + serverSchema: Schema; + filterValue: string; + filteredSchemaFields: Schema; + dataTypeOptions: OptionValue[]; + showAddFieldModal: boolean; + addFieldFormErrors: string[] | null; + mostRecentIndexJob: IndexJob; + fieldCoercionErrors: FieldCoercionErrors; + newFieldType: string; + rawFieldName: string; + formUnchanged: boolean; + dataLoading: boolean; +} + +interface SchemaResponseProps { + schema: Schema; + mostRecentIndexJob: IndexJob; +} + +export interface SchemaInitialData extends SchemaResponseProps { + sourceId: string; +} + +interface FieldCoercionError { + external_id: string; + error: string; +} + +export interface FieldCoercionErrors { + [key: string]: FieldCoercionError[]; +} + +interface SchemaChangeErrorsProps { + fieldCoercionErrors: FieldCoercionErrors; +} + +const dataTypeOptions = [ + { value: 'text', text: 'Text' }, + { value: 'date', text: 'Date' }, + { value: 'number', text: 'Number' }, + { value: 'geolocation', text: 'Geo Location' }, +]; + +export const SchemaLogic = kea>({ + actions: { + onInitializeSchema: (schemaProps: SchemaInitialData) => schemaProps, + onInitializeSchemaFieldErrors: (fieldCoercionErrorsProps: SchemaChangeErrorsProps) => + fieldCoercionErrorsProps, + onSchemaSetSuccess: (schemaProps: SchemaResponseProps) => schemaProps, + onSchemaSetFormErrors: (errors: string[]) => errors, + updateNewFieldType: (newFieldType: string) => newFieldType, + onFieldUpdate: ({ schema, formUnchanged }: { schema: Schema; formUnchanged: boolean }) => ({ + schema, + formUnchanged, + }), + onIndexingComplete: (numDocumentsWithErrors: number) => numDocumentsWithErrors, + resetMostRecentIndexJob: (emptyReindexJob: IndexJob) => emptyReindexJob, + showFieldSuccess: (successMessage: string) => successMessage, + setFieldName: (rawFieldName: string) => rawFieldName, + setFilterValue: (filterValue: string) => filterValue, + openAddFieldModal: () => true, + closeAddFieldModal: () => true, + resetSchemaState: () => true, + initializeSchema: () => true, + initializeSchemaFieldErrors: (activeReindexJobId: string, sourceId: string) => ({ + activeReindexJobId, + sourceId, + }), + addNewField: (fieldName: string, newFieldType: SchemaTypes) => ({ fieldName, newFieldType }), + updateExistingFieldType: (fieldName: string, newFieldType: string) => ({ + fieldName, + newFieldType, + }), + updateFields: () => true, + setServerField: (updatedSchema: Schema, operation: TOperation) => ({ + updatedSchema, + operation, + }), + }, + reducers: { + dataTypeOptions: [dataTypeOptions], + sourceId: [ + '', + { + onInitializeSchema: (_, { sourceId }) => sourceId, + }, + ], + activeSchema: [ + {}, + { + onInitializeSchema: (_, { schema }) => schema, + onSchemaSetSuccess: (_, { schema }) => schema, + onFieldUpdate: (_, { schema }) => schema, + }, + ], + serverSchema: [ + {}, + { + onInitializeSchema: (_, { schema }) => schema, + onSchemaSetSuccess: (_, { schema }) => schema, + }, + ], + mostRecentIndexJob: [ + {} as IndexJob, + { + onInitializeSchema: (_, { mostRecentIndexJob }) => mostRecentIndexJob, + resetMostRecentIndexJob: (_, emptyReindexJob) => emptyReindexJob, + onSchemaSetSuccess: (_, { mostRecentIndexJob }) => mostRecentIndexJob, + onIndexingComplete: (state, numDocumentsWithErrors) => ({ + ...state, + numDocumentsWithErrors, + percentageComplete: 100, + hasErrors: numDocumentsWithErrors > 0, + isActive: false, + }), + updateFields: (state) => ({ + ...state, + percentageComplete: 0, + }), + }, + ], + newFieldType: [ + TEXT, + { + updateNewFieldType: (_, newFieldType) => newFieldType, + onSchemaSetSuccess: () => TEXT, + }, + ], + addFieldFormErrors: [ + null, + { + onSchemaSetSuccess: () => null, + closeAddFieldModal: () => null, + onSchemaSetFormErrors: (_, addFieldFormErrors) => addFieldFormErrors, + }, + ], + filterValue: [ + '', + { + setFilterValue: (_, filterValue) => filterValue, + }, + ], + formUnchanged: [ + true, + { + onSchemaSetSuccess: () => true, + onFieldUpdate: (_, { formUnchanged }) => formUnchanged, + }, + ], + showAddFieldModal: [ + false, + { + onSchemaSetSuccess: () => false, + openAddFieldModal: () => true, + closeAddFieldModal: () => false, + }, + ], + dataLoading: [ + true, + { + onSchemaSetSuccess: () => false, + onInitializeSchema: () => false, + resetSchemaState: () => true, + }, + ], + rawFieldName: [ + '', + { + setFieldName: (_, rawFieldName) => rawFieldName, + onSchemaSetSuccess: () => '', + }, + ], + fieldCoercionErrors: [ + {}, + { + onInitializeSchemaFieldErrors: (_, { fieldCoercionErrors }) => fieldCoercionErrors, + }, + ], + }, + selectors: ({ selectors }) => ({ + filteredSchemaFields: [ + () => [selectors.activeSchema, selectors.filterValue], + (activeSchema, filterValue) => { + const filteredSchema = {} as Schema; + Object.keys(activeSchema) + .filter((x) => x.includes(filterValue)) + .forEach((k) => (filteredSchema[k] = activeSchema[k])); + return filteredSchema; + }, + ], + }), + listeners: ({ actions, values }) => ({ + initializeSchema: async () => { + const { isOrganization } = AppLogic.values; + const { http } = HttpLogic.values; + const { + contentSource: { id: sourceId }, + } = SourceLogic.values; + + const route = isOrganization + ? `/api/workplace_search/org/sources/${sourceId}/schemas` + : `/api/workplace_search/account/sources/${sourceId}/schemas`; + + try { + const response = await http.get(route); + actions.onInitializeSchema({ sourceId, ...response }); + } catch (e) { + flashAPIErrors(e); + } + }, + initializeSchemaFieldErrors: async ({ activeReindexJobId, sourceId }) => { + const { isOrganization } = AppLogic.values; + const { http } = HttpLogic.values; + const route = isOrganization + ? `/api/workplace_search/org/sources/${sourceId}/reindex_job/${activeReindexJobId}` + : `/api/workplace_search/account/sources/${sourceId}/reindex_job/${activeReindexJobId}`; + + try { + await actions.initializeSchema(); + const response = await http.get(route); + actions.onInitializeSchemaFieldErrors({ + fieldCoercionErrors: response.fieldCoercionErrors, + }); + } catch (e) { + flashAPIErrors({ ...e, message: SCHEMA_FIELD_ERRORS_ERROR_MESSAGE }); + } + }, + addNewField: ({ fieldName, newFieldType }) => { + const schema = cloneDeep(values.activeSchema); + schema[fieldName] = newFieldType; + actions.setServerField(schema, ADD); + }, + updateExistingFieldType: ({ fieldName, newFieldType }) => { + const schema = cloneDeep(values.activeSchema); + schema[fieldName] = newFieldType; + actions.onFieldUpdate({ schema, formUnchanged: isEqual(values.serverSchema, schema) }); + }, + updateFields: () => actions.setServerField(values.activeSchema, UPDATE), + setServerField: async ({ updatedSchema, operation }) => { + const { isOrganization } = AppLogic.values; + const { http } = HttpLogic.values; + const isAdding = operation === ADD; + const { sourceId } = values; + const successMessage = isAdding ? SCHEMA_FIELD_ADDED_MESSAGE : SCHEMA_UPDATED_MESSAGE; + const route = isOrganization + ? `/api/workplace_search/org/sources/${sourceId}/schemas` + : `/api/workplace_search/account/sources/${sourceId}/schemas`; + + const emptyReindexJob = { + percentageComplete: 100, + numDocumentsWithErrors: 0, + activeReindexJobId: 0, + isActive: false, + }; + + actions.resetMostRecentIndexJob(emptyReindexJob); + + try { + const response = await http.post(route, { + body: JSON.stringify({ ...updatedSchema }), + }); + actions.onSchemaSetSuccess(response); + setSuccessMessage(successMessage); + } catch (e) { + window.scrollTo(0, 0); + if (isAdding) { + actions.onSchemaSetFormErrors(e?.message); + } else { + flashAPIErrors(e); + } + } + }, + resetMostRecentIndexJob: () => { + FlashMessagesLogic.actions.clearFlashMessages(); + }, + resetSchemaState: () => { + FlashMessagesLogic.actions.clearFlashMessages(); + }, + }), +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx index 3f289a63941314..8d9636ec38e1f8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_content.tsx @@ -95,24 +95,20 @@ export const SourceContent: React.FC = () => { const emptyState = ( - - - {emptyMessage}} - iconType="documents" - body={ - isCustomSource ? ( -

    - Learn more about adding content in our{' '} - - documentation - -

    - ) : null - } - /> -
    - + {emptyMessage}} + iconType="documents" + body={ + isCustomSource ? ( +

    + Learn more about adding content in our{' '} + + documentation + +

    + ) : null + } + />
    ); @@ -185,7 +181,6 @@ export const SourceContent: React.FC = () => { return ( <> - = ({ dateCreated, isFederatedSource, }) => ( - + - - - Connector - - - - - - - - - {sourceName} - - - - - - - - - - - - - Created - - - - {dateCreated} - - - - - {isFederatedSource && ( - <> - - + + + - - - - Status - - - - - Ready to search - - - - + + +
    {sourceName}
    +
    - - )} +
    + {isFederatedSource && ( + + + + + Remote Source + + + + )} +
    + + + + Created: + {dateCreated} + + + {isFederatedSource && ( + + + + Status: + + + + + Ready to search + + + + )} +
    ); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx index 1f756115e3ae4b..8ca31d184501fa 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/source_settings.tsx @@ -20,7 +20,6 @@ import { EuiFlexGroup, EuiFlexItem, EuiFormRow, - EuiSpacer, } from '@elastic/eui'; import { SOURCES_PATH, getSourcesPath } from '../../../routes'; @@ -108,7 +107,6 @@ export const SourceSettings: React.FC = () => { return ( <> - { + const { isOrganization } = useValues(AppLogic); + const { + contentSource: { id, serviceType }, + } = useValues(SourceLogic); + + if (!id) return null; + + const isCustom = serviceType === CUSTOM_SERVICE_TYPE; + + return ( + <> + + {NAV.OVERVIEW} + + + {NAV.CONTENT} + + {isCustom && ( + <> + + {NAV.SCHEMA} + + + {NAV.DISPLAY_SETTINGS} + + + )} + + {NAV.SETTINGS} + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/index.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/index.ts new file mode 100644 index 00000000000000..f447751e965946 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { Overview } from './components/overview'; +export { SourcesRouter } from './sources_router'; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/organization_sources.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/organization_sources.tsx new file mode 100644 index 00000000000000..880df3d086cccc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/organization_sources.tsx @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; +import { Link, Redirect } from 'react-router-dom'; + +import { EuiButton } from '@elastic/eui'; +import { ADD_SOURCE_PATH, getSourcesPath } from '../../routes'; + +import { Loading } from '../../../shared/loading'; +import { ContentSection } from '../../components/shared/content_section'; +import { SourcesTable } from '../../components/shared/sources_table'; +import { ViewContentHeader } from '../../components/shared/view_content_header'; + +import { SourcesLogic } from './sources_logic'; + +import { SourcesView } from './sources_view'; + +const ORG_LINK_TITLE = 'Add an organization content source'; +const ORG_HEADER_TITLE = 'Organization sources'; +const ORG_HEADER_DESCRIPTION = + 'Organization sources are available to the entire organization and can be assigned to specific user groups.'; + +export const OrganizationSources: React.FC = () => { + const { initializeSources, setSourceSearchability } = useActions(SourcesLogic); + + useEffect(() => { + initializeSources(); + }, []); + + const { dataLoading, contentSources } = useValues(SourcesLogic); + + if (dataLoading) return ; + + if (contentSources.length === 0) return ; + + const linkTitle = ORG_LINK_TITLE; + const headerTitle = ORG_HEADER_TITLE; + const headerDescription = ORG_HEADER_DESCRIPTION; + const sectionTitle = ''; + const sectionDescription = ''; + + return ( + + + + {linkTitle} + + + } + description={headerDescription} + alignItems="flexStart" + /> + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx new file mode 100644 index 00000000000000..f1818c852f97f4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/private_sources.tsx @@ -0,0 +1,192 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; +import { Link } from 'react-router-dom'; + +import { EuiButton, EuiCallOut, EuiEmptyPrompt, EuiSpacer, EuiPanel } from '@elastic/eui'; + +import { LicensingLogic } from '../../../../applications/shared/licensing'; + +import { ADD_SOURCE_PATH } from '../../routes'; + +import noSharedSourcesIcon from '../../assets/share_circle.svg'; + +import { Loading } from '../../../shared/loading'; +import { ContentSection } from '../../components/shared/content_section'; +import { SourcesTable } from '../../components/shared/sources_table'; +import { ViewContentHeader } from '../../components/shared/view_content_header'; + +import { AppLogic } from '../../app_logic'; +import { SourcesView } from './sources_view'; +import { SourcesLogic } from './sources_logic'; + +// TODO: Remove this after links in Kibana sidenav +interface SidebarLink { + title: string; + path?: string; + disabled?: boolean; + iconType?: string; + otherActivePath?: string; + dataTestSubj?: string; + onClick?(): void; +} + +const PRIVATE_LINK_TITLE = 'Add a private content source'; +const PRIVATE_CAN_CREATE_PAGE_TITLE = 'Manage private content sources'; +const PRIVATE_VIEW_ONLY_PAGE_TITLE = 'Review Group Sources'; +const PRIVATE_VIEW_ONLY_PAGE_DESCRIPTION = + 'Review the status of all sources shared with your Group.'; +const PRIVATE_CAN_CREATE_PAGE_DESCRIPTION = + 'Review the status of all connected private sources, and manage private sources for your account.'; +const PRIVATE_HEADER_TITLE = 'My private content sources'; +const PRIVATE_HEADER_DESCRIPTION = 'Private content sources are available only to you.'; +const PRIVATE_SHARED_SOURCES_TITLE = 'Shared content sources'; + +export const PrivateSources: React.FC = () => { + const { hasPlatinumLicense } = useValues(LicensingLogic); + const { initializeSources, setSourceSearchability, resetSourcesState } = useActions(SourcesLogic); + + useEffect(() => { + initializeSources(); + return resetSourcesState; + }, []); + + const { dataLoading, contentSources, serviceTypes, privateContentSources } = useValues( + SourcesLogic + ); + + const { + account: { canCreatePersonalSources, groups }, + } = useValues(AppLogic); + + if (dataLoading) return ; + + const sidebarLinks = [] as SidebarLink[]; + const hasConfiguredConnectors = serviceTypes.some(({ configured }) => configured); + const canAddSources = canCreatePersonalSources && hasConfiguredConnectors; + if (canAddSources) { + sidebarLinks.push({ + title: PRIVATE_LINK_TITLE, + iconType: 'plusInCircle', + path: ADD_SOURCE_PATH, + }); + } + + const headerAction = ( + + + {PRIVATE_LINK_TITLE} + + + ); + + const sourcesHeader = ( + + ); + + const privateSourcesTable = ( + + + + ); + + const privateSourcesEmptyState = ( + + + + You have no private sources} + body={ +

    + Select from the content sources below to create a private source, available only to + you +

    + } + /> + +
    +
    + ); + + const sharedSourcesEmptyState = ( + + + + No content source available} + body={ +

    + Once content sources are shared with you, they will be displayed here, and available + via the search experience. +

    + } + /> + +
    +
    + ); + + const hasPrivateSources = privateContentSources?.length > 0; + const privateSources = hasPrivateSources ? privateSourcesTable : privateSourcesEmptyState; + + const groupsSentence = `${groups.slice(0, groups.length - 1).join(', ')}, and ${groups.slice( + -1 + )}`; + + const sharedSources = ( + + + + ); + + const licenseCallout = ( + <> + +

    Contact your search experience administrator for more information.

    +
    + + + ); + + const PAGE_TITLE = canCreatePersonalSources + ? PRIVATE_CAN_CREATE_PAGE_TITLE + : PRIVATE_VIEW_ONLY_PAGE_TITLE; + const PAGE_DESCRIPTION = canCreatePersonalSources + ? PRIVATE_CAN_CREATE_PAGE_DESCRIPTION + : PRIVATE_VIEW_ONLY_PAGE_DESCRIPTION; + + const pageHeader = ; + + return ( + + {/* TODO: Figure out with design how to make this look better w/o 2 ViewContentHeaders */} + {pageHeader} + {hasPrivateSources && !hasPlatinumLicense && licenseCallout} + {canAddSources && sourcesHeader} + {canCreatePersonalSources && privateSources} + {contentSources.length > 0 ? sharedSources : sharedSourcesEmptyState} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_logic.ts index 0a11da02dc7897..a0a9cb5a613675 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_logic.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { keys, pickBy } from 'lodash'; +import { keys, pickBy, isEmpty } from 'lodash'; import { kea, MakeLogicType } from 'kea'; @@ -146,6 +146,7 @@ interface PreContentSourceResponse { } export const SourceLogic = kea>({ + path: ['enterprise_search', 'workplace_search', 'source_logic'], actions: { onInitializeSource: (contentSource: ContentSourceFullData) => contentSource, onUpdateSourceName: (name: string) => name, @@ -485,8 +486,10 @@ export const SourceLogic = kea>({ if (subdomain) params.append('subdomain', subdomain); if (indexPermissions) params.append('index_permissions', indexPermissions.toString()); + const paramsString = !isEmpty(params) ? `?${params}` : ''; + try { - const response = await HttpLogic.values.http.get(`${route}?${params}`); + const response = await HttpLogic.values.http.get(`${route}${paramsString}`); actions.setSourceConnectData(response); successCallback(response.oauthUrl); } catch (e) { @@ -601,7 +604,7 @@ export const SourceLogic = kea>({ try { const response = await HttpLogic.values.http.post(route, { - body: JSON.stringify({ params }), + body: JSON.stringify({ ...params }), }); actions.setCustomSourceData(response); successCallback(); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx new file mode 100644 index 00000000000000..7244ff21e3b388 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/source_router.tsx @@ -0,0 +1,142 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { History } from 'history'; +import { useActions, useValues } from 'kea'; +import moment from 'moment'; +import { Route, Switch, useHistory, useParams } from 'react-router-dom'; + +import { EuiButton, EuiCallOut, EuiHorizontalRule, EuiSpacer } from '@elastic/eui'; + +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; + +import { NAV } from '../../constants'; + +import { + ENT_SEARCH_LICENSE_MANAGEMENT, + REINDEX_JOB_PATH, + SOURCE_DETAILS_PATH, + SOURCE_CONTENT_PATH, + SOURCE_SCHEMAS_PATH, + SOURCE_DISPLAY_SETTINGS_PATH, + SOURCE_SETTINGS_PATH, + getContentSourcePath as sourcePath, + getSourcesPath, +} from '../../routes'; + +import { AppLogic } from '../../app_logic'; + +import { Loading } from '../../../shared/loading'; + +import { CUSTOM_SERVICE_TYPE } from '../../constants'; +import { SourceLogic } from './source_logic'; + +import { DisplaySettingsRouter } from './components/display_settings'; +import { Overview } from './components/overview'; +import { Schema } from './components/schema'; +import { SchemaChangeErrors } from './components/schema/schema_change_errors'; +import { SourceContent } from './components/source_content'; +import { SourceInfoCard } from './components/source_info_card'; +import { SourceSettings } from './components/source_settings'; + +export const SourceRouter: React.FC = () => { + const history = useHistory() as History; + const { sourceId } = useParams() as { sourceId: string }; + const { initializeSource } = useActions(SourceLogic); + const { contentSource, dataLoading } = useValues(SourceLogic); + const { isOrganization } = useValues(AppLogic); + + useEffect(() => { + initializeSource(sourceId, history); + }, []); + + if (dataLoading) return ; + + const { + name, + createdAt, + serviceType, + serviceName, + isFederatedSource, + supportedByLicense, + } = contentSource; + const isCustomSource = serviceType === CUSTOM_SERVICE_TYPE; + + const pageHeader = ( + <> + + + + ); + + const callout = ( + <> + +

    + Your organization's license level changed and no longer supports document-level + permissions.{' '} +

    +

    Don't worry: your data is safe. Search has been disabled.

    +

    Upgrade to a Platinum license to re-enable this source.

    + Explore Platinum license +
    + + + ); + + return ( + <> + {!supportedByLicense && callout} + {pageHeader} + + + + + + + + + + + + {isCustomSource && ( + + + + + + )} + {isCustomSource && ( + + + + + + )} + {isCustomSource && ( + + + + + + )} + + + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources.scss b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources.scss new file mode 100644 index 00000000000000..fb0cecc1814870 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources.scss @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +.source-grid-configured { + + .source-card-configured { + padding: 8px; + + &__icon { + width: 2em; + height: 2em; + } + + &__not-connected-tooltip { + position: relative; + top: 3px; + left: 4px; + } + } +} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_logic.ts index 5a8da7cd32fa8c..4a7d44a936d9a3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_logic.ts @@ -14,7 +14,7 @@ import { HttpLogic } from '../../../shared/http'; import { flashAPIErrors, - setSuccessMessage, + setQueuedSuccessMessage, FlashMessagesLogic, } from '../../../shared/flash_messages'; @@ -24,9 +24,6 @@ import { staticSourceData } from './source_data'; import { AppLogic } from '../../app_logic'; -const ORG_SOURCES_PATH = '/api/workplace_search/org/sources'; -const ACCOUNT_SOURCES_PATH = '/api/workplace_search/account/sources'; - interface ServerStatuses { [key: string]: string; } @@ -81,6 +78,7 @@ interface ISourcesServerResponse { } export const SourcesLogic = kea>({ + path: ['enterprise_search', 'workplace_search', 'sources_logic'], actions: { setServerSourceStatuses: (statuses: ContentSourceStatus[]) => statuses, onInitializeSources: (serverResponse: ISourcesServerResponse) => serverResponse, @@ -165,7 +163,9 @@ export const SourcesLogic = kea>( listeners: ({ actions, values }) => ({ initializeSources: async () => { const { isOrganization } = AppLogic.values; - const route = isOrganization ? ORG_SOURCES_PATH : ACCOUNT_SOURCES_PATH; + const route = isOrganization + ? '/api/workplace_search/org/sources' + : '/api/workplace_search/account/sources'; try { const response = await HttpLogic.values.http.get(route); @@ -225,7 +225,7 @@ export const SourcesLogic = kea>( } ); - setSuccessMessage( + setQueuedSuccessMessage( [ successfullyConnectedMessage, additionalConfiguration ? additionalConfigurationMessage : '', @@ -239,7 +239,9 @@ export const SourcesLogic = kea>( }); const fetchSourceStatuses = async (isOrganization: boolean) => { - const route = isOrganization ? ORG_SOURCES_PATH : ACCOUNT_SOURCES_PATH; + const route = isOrganization + ? '/api/workplace_search/org/sources/status' + : '/api/workplace_search/account/sources/status'; let response; try { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx new file mode 100644 index 00000000000000..9f96a13e272d2a --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_router.tsx @@ -0,0 +1,131 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { Location } from 'history'; +import { useActions, useValues } from 'kea'; +import { Redirect, Route, Switch, useLocation } from 'react-router-dom'; + +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; +import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; + +import { LicensingLogic } from '../../../../applications/shared/licensing'; + +import { NAV } from '../../constants'; +import { + ADD_SOURCE_PATH, + SOURCE_ADDED_PATH, + SOURCE_DETAILS_PATH, + PERSONAL_SOURCES_PATH, + SOURCES_PATH, + getSourcesPath, +} from '../../routes'; + +import { FlashMessages } from '../../../shared/flash_messages'; + +import { AppLogic } from '../../app_logic'; +import { staticSourceData } from './source_data'; +import { SourcesLogic } from './sources_logic'; + +import { AddSource, AddSourceList } from './components/add_source'; +import { SourceAdded } from './components/source_added'; +import { OrganizationSources } from './organization_sources'; +import { PrivateSources } from './private_sources'; +import { SourceRouter } from './source_router'; + +import './sources.scss'; + +export const SourcesRouter: React.FC = () => { + const { pathname } = useLocation() as Location; + const { hasPlatinumLicense } = useValues(LicensingLogic); + const { resetSourcesState } = useActions(SourcesLogic); + const { + account: { canCreatePersonalSources }, + isOrganization, + } = useValues(AppLogic); + + /** + * React router is not triggering the useEffect callback function in Sources when child links are clicked so this + * is needed to ensure that the sources state is reset whenever the app changes routes. + */ + useEffect(() => { + resetSourcesState(); + }, [pathname]); + + return ( + <> + + + + + + + + + + + + + {staticSourceData.map(({ addPath, accountContextOnly, name }, i) => ( + + + {!hasPlatinumLicense && accountContextOnly ? ( + + ) : ( + + )} + + ))} + {staticSourceData.map(({ addPath, name }, i) => ( + + + + + ))} + {staticSourceData.map(({ addPath, name }, i) => ( + + + + + ))} + {staticSourceData.map(({ addPath, name, configuration: { needsConfiguration } }, i) => { + if (needsConfiguration) + return ( + + + + + ); + })} + {canCreatePersonalSources ? ( + + + + + + ) : ( + + )} + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_view.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_view.tsx new file mode 100644 index 00000000000000..7485f986076d71 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/sources_view.tsx @@ -0,0 +1,125 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useEffect } from 'react'; + +import { useActions, useValues } from 'kea'; + +import { + EuiButton, + EuiLink, + EuiFlexGroup, + EuiFlexItem, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + EuiOverlayMask, + EuiText, +} from '@elastic/eui'; + +import { FlashMessagesLogic } from '../../../shared/flash_messages'; + +import { Loading } from '../../../shared/loading'; +import { SourceIcon } from '../../components/shared/source_icon'; + +import { EXTERNAL_IDENTITIES_DOCS_URL, DOCUMENT_PERMISSIONS_DOCS_URL } from '../../routes'; + +import { SourcesLogic } from './sources_logic'; + +const POLLING_INTERVAL = 10000; + +interface SourcesViewProps { + children: React.ReactNode; +} + +export const SourcesView: React.FC = ({ children }) => { + const { initializeSources, pollForSourceStatusChanges, resetPermissionsModal } = useActions( + SourcesLogic + ); + + const { dataLoading, permissionsModal } = useValues(SourcesLogic); + + useEffect(() => { + initializeSources(); + const pollingInterval = window.setInterval(pollForSourceStatusChanges, POLLING_INTERVAL); + + return () => { + FlashMessagesLogic.actions.clearFlashMessages(); + clearInterval(pollingInterval); + }; + }, []); + + if (dataLoading) return ; + + const PermissionsModal = ({ + addedSourceName, + serviceType, + }: { + addedSourceName: string; + serviceType: string; + }) => ( + + + + + + + + + {addedSourceName} requires additional configuration + + + + + +

    + {addedSourceName} has been successfully connected and initial content synchronization + is already underway. Since you have elected to synchronize document-level permission + information, you must now provide user and group mappings using the  + + External Identities API + + . +

    + +

    + Documents will not be searchable from Workplace Search until user and group mappings + have been configured.  + + Learn more about document-level permission configuration + + . +

    +
    +
    + + + I understand + + +
    +
    + ); + + return ( + <> + {!!permissionsModal && permissionsModal.additionalConfiguration && ( + + )} + {children} + + ); +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/groups/components/group_manager_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/groups/components/group_manager_modal.tsx index c0f8bf57989ca9..cbfb22915c4eb6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/groups/components/group_manager_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/groups/components/group_manager_modal.tsx @@ -29,7 +29,7 @@ import { import { EuiButtonTo } from '../../../../shared/react_router_helpers'; import { Group } from '../../../types'; -import { ORG_SOURCES_PATH } from '../../../routes'; +import { SOURCES_PATH } from '../../../routes'; import noSharedSourcesIcon from '../../../assets/share_circle.svg'; @@ -96,7 +96,7 @@ export const GroupManagerModal: React.FC = ({ const handleSelectAll = () => selectAll(allSelected ? [] : allItems); const sourcesButton = ( - + {ADD_SOURCE_BUTTON_TEXT} ); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx index 268e4f8da445a5..64dc5149decd59 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.test.tsx @@ -11,7 +11,7 @@ import { setMockValues } from './__mocks__'; import React from 'react'; import { shallow } from 'enzyme'; -import { ORG_SOURCES_PATH, USERS_PATH } from '../../routes'; +import { SOURCES_PATH, USERS_PATH } from '../../routes'; import { OnboardingSteps, OrgNameOnboarding } from './onboarding_steps'; import { OnboardingCard } from './onboarding_card'; @@ -32,7 +32,7 @@ describe('OnboardingSteps', () => { const wrapper = shallow(); expect(wrapper.find(OnboardingCard)).toHaveLength(1); - expect(wrapper.find(OnboardingCard).prop('actionPath')).toBe(ORG_SOURCES_PATH); + expect(wrapper.find(OnboardingCard).prop('actionPath')).toBe(SOURCES_PATH); expect(wrapper.find(OnboardingCard).prop('description')).toBe( 'Add shared sources for your organization to start searching.' ); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx index ed5136a6f7a4e2..4957324aa6bd79 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/onboarding_steps.tsx @@ -24,7 +24,7 @@ import { import sharedSourcesIcon from '../../components/shared/assets/source_icons/share_circle.svg'; import { TelemetryLogic } from '../../../shared/telemetry'; import { getWorkplaceSearchUrl } from '../../../shared/enterprise_search_url'; -import { ORG_SOURCES_PATH, USERS_PATH, ORG_SETTINGS_PATH } from '../../routes'; +import { SOURCES_PATH, USERS_PATH, ORG_SETTINGS_PATH } from '../../routes'; import { ContentSection } from '../../components/shared/content_section'; @@ -75,7 +75,7 @@ export const OnboardingSteps: React.FC = () => { const accountsPath = !isFederatedAuth && (canCreateInvitations || isCurated) ? USERS_PATH : undefined; - const sourcesPath = canCreateContentSources || isCurated ? ORG_SOURCES_PATH : undefined; + const sourcesPath = canCreateContentSources || isCurated ? SOURCES_PATH : undefined; const SOURCES_CARD_DESCRIPTION = i18n.translate( 'xpack.enterpriseSearch.workplaceSearch.sourcesOnboardingCard.description', diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.tsx index 6614ac58b0744a..06c620ad384e62 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/overview/organization_stats.tsx @@ -12,7 +12,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { ContentSection } from '../../components/shared/content_section'; -import { ORG_SOURCES_PATH, USERS_PATH } from '../../routes'; +import { SOURCES_PATH, USERS_PATH } from '../../routes'; import { AppLogic } from '../../app_logic'; import { OverviewLogic } from './overview_logic'; @@ -43,7 +43,7 @@ export const OrganizationStats: React.FC = () => { { defaultMessage: 'Shared sources' } )} count={sourcesCount} - actionPath={ORG_SOURCES_PATH} + actionPath={SOURCES_PATH} /> {!isFederatedAuth && ( <> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.test.tsx index 73cf4b419f9449..49f0156ce481d6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.test.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { shallow } from 'enzyme'; import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; -import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; +import { SetupGuideLayout } from '../../../shared/setup_guide'; import { SetupGuide } from './'; describe('SetupGuide', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.tsx index 3d6d65fce2528a..3b91c4e84d02f7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/setup_guide/setup_guide.tsx @@ -10,13 +10,14 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; -import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; +import { SetupGuideLayout, SETUP_GUIDE_TITLE } from '../../../shared/setup_guide'; import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; + import GettingStarted from './assets/getting_started.png'; -const GETTING_STARTED_LINK_URL = - 'https://www.elastic.co/guide/en/workplace-search/current/workplace-search-getting-started.html'; +import { DOCS_PREFIX } from '../../routes'; +const GETTING_STARTED_LINK_URL = `${DOCS_PREFIX}/workplace-search-getting-started.html`; export const SetupGuide: React.FC = () => { return ( @@ -26,13 +27,7 @@ export const SetupGuide: React.FC = () => { standardAuthLink="https://www.elastic.co/guide/en/workplace-search/current/workplace-search-security.html#standard" elasticsearchNativeAuthLink="https://www.elastic.co/guide/en/workplace-search/current/workplace-search-security.html#elasticsearch-native-realm" > - +
    diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index f4ee8283122fda..94e9ea88ea755e 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -16,6 +16,7 @@ import { FeatureCatalogueCategory, HomePublicPluginSetup, } from '../../../../src/plugins/home/public'; +import { CloudSetup } from '../../cloud/public'; import { LicensingPluginStart } from '../../licensing/public'; import { @@ -34,9 +35,11 @@ export interface ClientData extends InitialAppData { } interface PluginsSetup { + cloud?: CloudSetup; home?: HomePublicPluginSetup; } export interface PluginsStart { + cloud?: CloudSetup; licensing: LicensingPluginStart; } @@ -50,6 +53,8 @@ export class EnterpriseSearchPlugin implements Plugin { } public setup(core: CoreSetup, plugins: PluginsSetup) { + const { cloud } = plugins; + core.application.register({ id: ENTERPRISE_SEARCH_PLUGIN.ID, title: ENTERPRISE_SEARCH_PLUGIN.NAV_TITLE, @@ -57,7 +62,7 @@ export class EnterpriseSearchPlugin implements Plugin { appRoute: ENTERPRISE_SEARCH_PLUGIN.URL, category: DEFAULT_APP_CATEGORIES.enterpriseSearch, mount: async (params: AppMountParameters) => { - const kibanaDeps = await this.getKibanaDeps(core, params); + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); const { chrome, http } = kibanaDeps.core; chrome.docTitle.change(ENTERPRISE_SEARCH_PLUGIN.NAME); @@ -78,7 +83,7 @@ export class EnterpriseSearchPlugin implements Plugin { appRoute: APP_SEARCH_PLUGIN.URL, category: DEFAULT_APP_CATEGORIES.enterpriseSearch, mount: async (params: AppMountParameters) => { - const kibanaDeps = await this.getKibanaDeps(core, params); + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); const { chrome, http } = kibanaDeps.core; chrome.docTitle.change(APP_SEARCH_PLUGIN.NAME); @@ -99,7 +104,7 @@ export class EnterpriseSearchPlugin implements Plugin { appRoute: WORKPLACE_SEARCH_PLUGIN.URL, category: DEFAULT_APP_CATEGORIES.enterpriseSearch, mount: async (params: AppMountParameters) => { - const kibanaDeps = await this.getKibanaDeps(core, params); + const kibanaDeps = await this.getKibanaDeps(core, params, cloud); const { chrome, http } = kibanaDeps.core; chrome.docTitle.change(WORKPLACE_SEARCH_PLUGIN.NAME); @@ -150,11 +155,13 @@ export class EnterpriseSearchPlugin implements Plugin { public stop() {} - private async getKibanaDeps(core: CoreSetup, params: AppMountParameters) { + private async getKibanaDeps(core: CoreSetup, params: AppMountParameters, cloud?: CloudSetup) { // Helper for using start dependencies on mount (instead of setup dependencies) // and for grouping Kibana-related args together (vs. plugin-specific args) const [coreStart, pluginsStart] = await core.getStartServices(); - return { params, core: coreStart, plugins: pluginsStart as PluginsStart }; + const plugins = { ...pluginsStart, cloud } as PluginsStart; + + return { params, core: coreStart, plugins }; } private getPluginData() { diff --git a/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.test.ts b/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.test.ts index 6cf0be9fd1f313..b4b7a489c6ea35 100644 --- a/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.test.ts +++ b/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.test.ts @@ -61,7 +61,7 @@ describe('Telemetry helpers', () => { expect(incrementCounterMock).toHaveBeenCalledWith( 'app_search_telemetry', 'app_search_telemetry', - 'ui_clicked.button' + ['ui_clicked.button'] ); expect(response).toEqual({ success: true }); }); diff --git a/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts b/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts index cd8ad72bf8358c..deba94fc0bd5e8 100644 --- a/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts +++ b/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts @@ -55,7 +55,7 @@ export async function incrementUICounter({ await internalRepository.incrementCounter( id, id, - `${uiAction}.${metric}` // e.g., ui_viewed.setup_guide + [`${uiAction}.${metric}`] // e.g., ui_viewed.setup_guide ); return { success: true }; diff --git a/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.test.ts b/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.test.ts index 9cf491b79fd24e..d97a587e57ff25 100644 --- a/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.test.ts @@ -18,6 +18,10 @@ import { registerAccountPreSourceRoute, registerAccountPrepareSourcesRoute, registerAccountSourceSearchableRoute, + registerAccountSourceDisplaySettingsConfig, + registerAccountSourceSchemasRoute, + registerAccountSourceReindexJobRoute, + registerAccountSourceReindexJobStatusRoute, registerOrgSourcesRoute, registerOrgSourcesStatusRoute, registerOrgSourceRoute, @@ -29,6 +33,10 @@ import { registerOrgPreSourceRoute, registerOrgPrepareSourcesRoute, registerOrgSourceSearchableRoute, + registerOrgSourceDisplaySettingsConfig, + registerOrgSourceSchemasRoute, + registerOrgSourceReindexJobRoute, + registerOrgSourceReindexJobStatusRoute, registerOrgSourceOauthConfigurationsRoute, registerOrgSourceOauthConfigurationRoute, } from './sources'; @@ -328,10 +336,8 @@ describe('sources routes', () => { const mockRequest = { params: { id: '123' }, body: { - query: { - content_source: { - name: 'foo', - }, + content_source: { + name: 'foo', }, }, }; @@ -406,7 +412,7 @@ describe('sources routes', () => { mockRouter.callRoute(mockRequest); expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ - path: '/ws/pre_content_sources/zendesk', + path: '/ws/sources/zendesk/prepare', }); }); }); @@ -448,6 +454,214 @@ describe('sources routes', () => { }); }); + describe('GET /api/workplace_search/account/sources/{id}/display_settings/config', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/account/sources/{id}/display_settings/config', + payload: 'params', + }); + + registerAccountSourceDisplaySettingsConfig({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + id: '123', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/display_settings/config', + }); + }); + }); + + describe('POST /api/workplace_search/account/sources/{id}/display_settings/config', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/workplace_search/account/sources/{id}/display_settings/config', + payload: 'body', + }); + + registerAccountSourceDisplaySettingsConfig({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + const mockRequest = { + params: { id: '123' }, + body: { + titleField: 'foo', + subtitleField: 'bar', + descriptionField: 'this is a thing', + urlField: 'http://youknowfor.search', + color: '#aaa', + detailFields: { + fieldName: 'myField', + label: 'My Field', + }, + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/display_settings/config', + body: mockRequest.body, + }); + }); + }); + + describe('GET /api/workplace_search/account/sources/{id}/schemas', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/account/sources/{id}/schemas', + payload: 'params', + }); + + registerAccountSourceSchemasRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + id: '123', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/schemas', + }); + }); + }); + + describe('POST /api/workplace_search/account/sources/{id}/schemas', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/workplace_search/account/sources/{id}/schemas', + payload: 'body', + }); + + registerAccountSourceSchemasRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + const mockRequest = { + params: { id: '123' }, + body: {}, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/schemas', + body: mockRequest.body, + }); + }); + }); + + describe('GET /api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}', + payload: 'params', + }); + + registerAccountSourceReindexJobRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + source_id: '123', + job_id: '345', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/reindex_job/345', + }); + }); + }); + + describe('GET /api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}/status', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}/status', + payload: 'params', + }); + + registerAccountSourceReindexJobStatusRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + source_id: '123', + job_id: '345', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/sources/123/reindex_job/345/status', + }); + }); + }); + describe('GET /api/workplace_search/org/sources', () => { let mockRouter: MockRouter; @@ -732,10 +946,8 @@ describe('sources routes', () => { const mockRequest = { params: { id: '123' }, body: { - query: { - content_source: { - name: 'foo', - }, + content_source: { + name: 'foo', }, }, }; @@ -810,7 +1022,7 @@ describe('sources routes', () => { mockRouter.callRoute(mockRequest); expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ - path: '/ws/org/pre_content_sources/zendesk', + path: '/ws/org/sources/zendesk/prepare', }); }); }); @@ -852,6 +1064,214 @@ describe('sources routes', () => { }); }); + describe('GET /api/workplace_search/org/sources/{id}/display_settings/config', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/org/sources/{id}/display_settings/config', + payload: 'params', + }); + + registerOrgSourceDisplaySettingsConfig({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + id: '123', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/display_settings/config', + }); + }); + }); + + describe('POST /api/workplace_search/org/sources/{id}/display_settings/config', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/workplace_search/org/sources/{id}/display_settings/config', + payload: 'body', + }); + + registerOrgSourceDisplaySettingsConfig({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + const mockRequest = { + params: { id: '123' }, + body: { + titleField: 'foo', + subtitleField: 'bar', + descriptionField: 'this is a thing', + urlField: 'http://youknowfor.search', + color: '#aaa', + detailFields: { + fieldName: 'myField', + label: 'My Field', + }, + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/display_settings/config', + body: mockRequest.body, + }); + }); + }); + + describe('GET /api/workplace_search/org/sources/{id}/schemas', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/org/sources/{id}/schemas', + payload: 'params', + }); + + registerOrgSourceSchemasRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + id: '123', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/schemas', + }); + }); + }); + + describe('POST /api/workplace_search/org/sources/{id}/schemas', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + mockRouter = new MockRouter({ + method: 'post', + path: '/api/workplace_search/org/sources/{id}/schemas', + payload: 'body', + }); + + registerOrgSourceSchemasRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + }); + + it('creates a request handler', () => { + const mockRequest = { + params: { id: '123' }, + body: {}, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/schemas', + body: mockRequest.body, + }); + }); + }); + + describe('GET /api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}', + payload: 'params', + }); + + registerOrgSourceReindexJobRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + source_id: '123', + job_id: '345', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/reindex_job/345', + }); + }); + }); + + describe('GET /api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}/status', () => { + let mockRouter: MockRouter; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('creates a request handler', () => { + mockRouter = new MockRouter({ + method: 'get', + path: '/api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}/status', + payload: 'params', + }); + + registerOrgSourceReindexJobStatusRoute({ + ...mockDependencies, + router: mockRouter.router, + }); + + const mockRequest = { + params: { + source_id: '123', + job_id: '345', + }, + }; + + mockRouter.callRoute(mockRequest); + + expect(mockRequestHandler.createRequest).toHaveBeenCalledWith({ + path: '/ws/org/sources/123/reindex_job/345/status', + }); + }); + }); + describe('GET /api/workplace_search/org/settings/connectors', () => { let mockRouter: MockRouter; diff --git a/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts b/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts index bdd048438dae53..04db6bbc2912ef 100644 --- a/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts +++ b/x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts @@ -8,6 +8,16 @@ import { schema } from '@kbn/config-schema'; import { RouteDependencies } from '../../plugin'; +const schemaValuesSchema = schema.recordOf( + schema.string(), + schema.oneOf([ + schema.literal('text'), + schema.literal('number'), + schema.literal('geolocation'), + schema.literal('date'), + ]) +); + const pageSchema = schema.object({ current: schema.number(), size: schema.number(), @@ -25,6 +35,21 @@ const oAuthConfigSchema = schema.object({ consumer_key: schema.string(), }); +const displayFieldSchema = schema.object({ + fieldName: schema.string(), + label: schema.string(), +}); + +const displaySettingsSchema = schema.object({ + titleField: schema.maybe(schema.string()), + subtitleField: schema.maybe(schema.string()), + descriptionField: schema.maybe(schema.string()), + urlField: schema.maybe(schema.string()), + color: schema.string(), + urlFieldIsLinkable: schema.boolean(), + detailFields: schema.oneOf([schema.arrayOf(displayFieldSchema), displayFieldSchema]), +}); + export function registerAccountSourcesRoute({ router, enterpriseSearchRequestHandler, @@ -200,10 +225,8 @@ export function registerAccountSourceSettingsRoute({ path: '/api/workplace_search/account/sources/{id}/settings', validate: { body: schema.object({ - query: schema.object({ - content_source: schema.object({ - name: schema.string(), - }), + content_source: schema.object({ + name: schema.string(), }), }), params: schema.object({ @@ -256,7 +279,7 @@ export function registerAccountPrepareSourcesRoute({ }, async (context, request, response) => { return enterpriseSearchRequestHandler.createRequest({ - path: `/ws/pre_content_sources/${request.params.service_type}`, + path: `/ws/sources/${request.params.service_type}/prepare`, })(context, request, response); } ); @@ -287,6 +310,128 @@ export function registerAccountSourceSearchableRoute({ ); } +export function registerAccountSourceDisplaySettingsConfig({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/account/sources/{id}/display_settings/config', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.id}/display_settings/config`, + })(context, request, response); + } + ); + + router.post( + { + path: '/api/workplace_search/account/sources/{id}/display_settings/config', + validate: { + body: displaySettingsSchema, + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.id}/display_settings/config`, + body: request.body, + })(context, request, response); + } + ); +} + +export function registerAccountSourceSchemasRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/account/sources/{id}/schemas', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.id}/schemas`, + })(context, request, response); + } + ); + + router.post( + { + path: '/api/workplace_search/account/sources/{id}/schemas', + validate: { + body: schemaValuesSchema, + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.id}/schemas`, + body: request.body, + })(context, request, response); + } + ); +} + +export function registerAccountSourceReindexJobRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}', + validate: { + params: schema.object({ + source_id: schema.string(), + job_id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.source_id}/reindex_job/${request.params.job_id}`, + })(context, request, response); + } + ); +} + +export function registerAccountSourceReindexJobStatusRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/account/sources/{source_id}/reindex_job/{job_id}/status', + validate: { + params: schema.object({ + source_id: schema.string(), + job_id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/sources/${request.params.source_id}/reindex_job/${request.params.job_id}/status`, + })(context, request, response); + } + ); +} + export function registerOrgSourcesRoute({ router, enterpriseSearchRequestHandler, @@ -372,7 +517,7 @@ export function registerOrgCreateSourceRoute({ login: schema.maybe(schema.string()), password: schema.maybe(schema.string()), organizations: schema.maybe(schema.arrayOf(schema.string())), - indexPermissions: schema.boolean(), + indexPermissions: schema.maybe(schema.boolean()), }), }, }, @@ -462,10 +607,8 @@ export function registerOrgSourceSettingsRoute({ path: '/api/workplace_search/org/sources/{id}/settings', validate: { body: schema.object({ - query: schema.object({ - content_source: schema.object({ - name: schema.string(), - }), + content_source: schema.object({ + name: schema.string(), }), }), params: schema.object({ @@ -518,7 +661,7 @@ export function registerOrgPrepareSourcesRoute({ }, async (context, request, response) => { return enterpriseSearchRequestHandler.createRequest({ - path: `/ws/org/pre_content_sources/${request.params.service_type}`, + path: `/ws/org/sources/${request.params.service_type}/prepare`, })(context, request, response); } ); @@ -549,6 +692,128 @@ export function registerOrgSourceSearchableRoute({ ); } +export function registerOrgSourceDisplaySettingsConfig({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/org/sources/{id}/display_settings/config', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.id}/display_settings/config`, + })(context, request, response); + } + ); + + router.post( + { + path: '/api/workplace_search/org/sources/{id}/display_settings/config', + validate: { + body: displaySettingsSchema, + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.id}/display_settings/config`, + body: request.body, + })(context, request, response); + } + ); +} + +export function registerOrgSourceSchemasRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/org/sources/{id}/schemas', + validate: { + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.id}/schemas`, + })(context, request, response); + } + ); + + router.post( + { + path: '/api/workplace_search/org/sources/{id}/schemas', + validate: { + body: schemaValuesSchema, + params: schema.object({ + id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.id}/schemas`, + body: request.body, + })(context, request, response); + } + ); +} + +export function registerOrgSourceReindexJobRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}', + validate: { + params: schema.object({ + source_id: schema.string(), + job_id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.source_id}/reindex_job/${request.params.job_id}`, + })(context, request, response); + } + ); +} + +export function registerOrgSourceReindexJobStatusRoute({ + router, + enterpriseSearchRequestHandler, +}: RouteDependencies) { + router.get( + { + path: '/api/workplace_search/org/sources/{source_id}/reindex_job/{job_id}/status', + validate: { + params: schema.object({ + source_id: schema.string(), + job_id: schema.string(), + }), + }, + }, + async (context, request, response) => { + return enterpriseSearchRequestHandler.createRequest({ + path: `/ws/org/sources/${request.params.source_id}/reindex_job/${request.params.job_id}/status`, + })(context, request, response); + } + ); +} + export function registerOrgSourceOauthConfigurationsRoute({ router, enterpriseSearchRequestHandler, @@ -651,6 +916,10 @@ export const registerSourcesRoutes = (dependencies: RouteDependencies) => { registerAccountPreSourceRoute(dependencies); registerAccountPrepareSourcesRoute(dependencies); registerAccountSourceSearchableRoute(dependencies); + registerAccountSourceDisplaySettingsConfig(dependencies); + registerAccountSourceSchemasRoute(dependencies); + registerAccountSourceReindexJobRoute(dependencies); + registerAccountSourceReindexJobStatusRoute(dependencies); registerOrgSourcesRoute(dependencies); registerOrgSourcesStatusRoute(dependencies); registerOrgSourceRoute(dependencies); @@ -662,6 +931,10 @@ export const registerSourcesRoutes = (dependencies: RouteDependencies) => { registerOrgPreSourceRoute(dependencies); registerOrgPrepareSourcesRoute(dependencies); registerOrgSourceSearchableRoute(dependencies); + registerOrgSourceDisplaySettingsConfig(dependencies); + registerOrgSourceSchemasRoute(dependencies); + registerOrgSourceReindexJobRoute(dependencies); + registerOrgSourceReindexJobStatusRoute(dependencies); registerOrgSourceOauthConfigurationsRoute(dependencies); registerOrgSourceOauthConfigurationRoute(dependencies); }; diff --git a/x-pack/plugins/event_log/jest.config.js b/x-pack/plugins/event_log/jest.config.js new file mode 100644 index 00000000000000..bb847d3b3c7ce4 --- /dev/null +++ b/x-pack/plugins/event_log/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/event_log'], +}; diff --git a/x-pack/plugins/features/jest.config.js b/x-pack/plugins/features/jest.config.js new file mode 100644 index 00000000000000..e500d35bbbd609 --- /dev/null +++ b/x-pack/plugins/features/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/features'], +}; diff --git a/x-pack/plugins/file_upload/jest.config.js b/x-pack/plugins/file_upload/jest.config.js new file mode 100644 index 00000000000000..6a042a4cc5c1e1 --- /dev/null +++ b/x-pack/plugins/file_upload/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/file_upload'], +}; diff --git a/x-pack/plugins/fleet/common/constants/epm.ts b/x-pack/plugins/fleet/common/constants/epm.ts index 287b7ccdb88e04..297b15790b528e 100644 --- a/x-pack/plugins/fleet/common/constants/epm.ts +++ b/x-pack/plugins/fleet/common/constants/epm.ts @@ -3,8 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - export const PACKAGES_SAVED_OBJECT_TYPE = 'epm-packages'; +export const ASSETS_SAVED_OBJECT_TYPE = 'epm-packages-assets'; export const INDEX_PATTERN_SAVED_OBJECT_TYPE = 'index-pattern'; export const INDEX_PATTERN_PLACEHOLDER_SUFFIX = '-index_pattern_placeholder'; export const MAX_TIME_COMPLETE_INSTALL = 60000; diff --git a/x-pack/plugins/fleet/common/services/is_valid_namespace.test.ts b/x-pack/plugins/fleet/common/services/is_valid_namespace.test.ts index 8d60c4aa61dcaa..bfabe79f32110a 100644 --- a/x-pack/plugins/fleet/common/services/is_valid_namespace.test.ts +++ b/x-pack/plugins/fleet/common/services/is_valid_namespace.test.ts @@ -8,7 +8,6 @@ import { isValidNamespace } from './is_valid_namespace'; describe('Fleet - isValidNamespace', () => { it('returns true for valid namespaces', () => { expect(isValidNamespace('default').valid).toBe(true); - expect(isValidNamespace('namespace-with-dash').valid).toBe(true); expect(isValidNamespace('123').valid).toBe(true); expect(isValidNamespace('testlength😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀😀').valid).toBe( true @@ -19,6 +18,7 @@ describe('Fleet - isValidNamespace', () => { expect(isValidNamespace('').valid).toBe(false); expect(isValidNamespace(' ').valid).toBe(false); expect(isValidNamespace('Default').valid).toBe(false); + expect(isValidNamespace('namespace-with-dash').valid).toBe(false); expect(isValidNamespace('namespace with spaces').valid).toBe(false); expect(isValidNamespace('foo/bar').valid).toBe(false); expect(isValidNamespace('foo\\bar').valid).toBe(false); diff --git a/x-pack/plugins/fleet/common/services/is_valid_namespace.ts b/x-pack/plugins/fleet/common/services/is_valid_namespace.ts index 8bd8349580edc4..b70dc8ab67bb28 100644 --- a/x-pack/plugins/fleet/common/services/is_valid_namespace.ts +++ b/x-pack/plugins/fleet/common/services/is_valid_namespace.ts @@ -23,7 +23,7 @@ export function isValidNamespace(namespace: string): { valid: boolean; error?: s defaultMessage: 'Namespace must be lowercase', }), }; - } else if (/[\*\\/\?"<>|\s,#:]+/.test(namespace)) { + } else if (/[\*\\/\?"<>|\s,#:-]+/.test(namespace)) { return { valid: false, error: i18n.translate('xpack.fleet.namespaceValidation.invalidCharactersErrorMessage', { diff --git a/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.test.ts b/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.test.ts index f721afb6391411..a370f92e97fe11 100644 --- a/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.test.ts +++ b/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.test.ts @@ -100,7 +100,7 @@ describe('Fleet - storedPackagePoliciesToAgentInputs', () => { ).toEqual([]); }); - it('returns agent inputs', () => { + it('returns agent inputs with streams', () => { expect( storedPackagePoliciesToAgentInputs([ { @@ -143,6 +143,46 @@ describe('Fleet - storedPackagePoliciesToAgentInputs', () => { ]); }); + it('returns agent inputs without streams', () => { + expect( + storedPackagePoliciesToAgentInputs([ + { + ...mockPackagePolicy, + package: { + name: 'mock-package', + title: 'Mock package', + version: '0.0.0', + }, + inputs: [ + { + ...mockInput, + compiled_input: { + inputVar: 'input-value', + }, + streams: [], + }, + ], + }, + ]) + ).toEqual([ + { + id: 'some-uuid', + name: 'mock-package-policy', + revision: 1, + type: 'test-logs', + data_stream: { namespace: 'default' }, + use_output: 'default', + meta: { + package: { + name: 'mock-package', + version: '0.0.0', + }, + }, + inputVar: 'input-value', + }, + ]); + }); + it('returns agent inputs without disabled streams', () => { expect( storedPackagePoliciesToAgentInputs([ diff --git a/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.ts b/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.ts index e74256ce732a61..d780fb791aa8ea 100644 --- a/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.ts +++ b/x-pack/plugins/fleet/common/services/package_policies_to_agent_inputs.ts @@ -33,20 +33,25 @@ export const storedPackagePoliciesToAgentInputs = ( acc[key] = value; return acc; }, {} as { [k: string]: any }), - streams: input.streams - .filter((stream) => stream.enabled) - .map((stream) => { - const fullStream: FullAgentPolicyInputStream = { - id: stream.id, - data_stream: stream.data_stream, - ...stream.compiled_stream, - ...Object.entries(stream.config || {}).reduce((acc, [key, { value }]) => { - acc[key] = value; - return acc; - }, {} as { [k: string]: any }), - }; - return fullStream; - }), + ...(input.compiled_input || {}), + ...(input.streams.length + ? { + streams: input.streams + .filter((stream) => stream.enabled) + .map((stream) => { + const fullStream: FullAgentPolicyInputStream = { + id: stream.id, + data_stream: stream.data_stream, + ...stream.compiled_stream, + ...Object.entries(stream.config || {}).reduce((acc, [key, { value }]) => { + acc[key] = value; + return acc; + }, {} as { [k: string]: any }), + }; + return fullStream; + }), + } + : {}), }; if (packagePolicy.package) { diff --git a/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts b/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts index ae4de55ffa9a88..36972270de011a 100644 --- a/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts +++ b/x-pack/plugins/fleet/common/services/package_to_package_policy.test.ts @@ -3,7 +3,6 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { installationStatuses } from '../constants'; import { PackageInfo } from '../types'; import { packageToPackagePolicy, packageToPackagePolicyInputs } from './package_to_package_policy'; @@ -14,9 +13,9 @@ describe('Fleet - packageToPackagePolicy', () => { version: '0.0.0', latestVersion: '0.0.0', description: 'description', - type: 'mock', + type: 'integration', categories: [], - requirement: { kibana: { versions: '' }, elasticsearch: { versions: '' } }, + conditions: { kibana: { version: '' } }, format_version: '', download: '', path: '', @@ -29,7 +28,11 @@ describe('Fleet - packageToPackagePolicy', () => { map: [], }, }, - status: installationStatuses.NotInstalled, + status: 'not_installed', + release: 'experimental', + owner: { + github: 'elastic/fleet', + }, }; describe('packageToPackagePolicyInputs', () => { diff --git a/x-pack/plugins/fleet/common/services/routes.ts b/x-pack/plugins/fleet/common/services/routes.ts index f35b6b3f7de6ad..4af3f3beb32bec 100644 --- a/x-pack/plugins/fleet/common/services/routes.ts +++ b/x-pack/plugins/fleet/common/services/routes.ts @@ -140,6 +140,8 @@ export const agentRouteService = { getBulkUpgradePath: () => AGENT_API_ROUTES.BULK_UPGRADE_PATTERN, getListPath: () => AGENT_API_ROUTES.LIST_PATTERN, getStatusPath: () => AGENT_API_ROUTES.STATUS_PATTERN, + getCreateActionPath: (agentId: string) => + AGENT_API_ROUTES.ACTIONS_PATTERN.replace('{agentId}', agentId), }; export const outputRoutesService = { diff --git a/x-pack/plugins/fleet/common/types/models/agent_policy.ts b/x-pack/plugins/fleet/common/types/models/agent_policy.ts index f43f65fb317f3b..75bb2998f2d920 100644 --- a/x-pack/plugins/fleet/common/types/models/agent_policy.ts +++ b/x-pack/plugins/fleet/common/types/models/agent_policy.ts @@ -49,7 +49,7 @@ export interface FullAgentPolicyInput { package?: Pick; [key: string]: unknown; }; - streams: FullAgentPolicyInputStream[]; + streams?: FullAgentPolicyInputStream[]; [key: string]: any; } diff --git a/x-pack/plugins/fleet/common/types/models/epm.ts b/x-pack/plugins/fleet/common/types/models/epm.ts index 7a6f6232b2d4f4..66a2a58a25ac56 100644 --- a/x-pack/plugins/fleet/common/types/models/epm.ts +++ b/x-pack/plugins/fleet/common/types/models/epm.ts @@ -8,6 +8,7 @@ // TODO: Update when https://github.com/elastic/kibana/issues/53021 is closed import { SavedObject, SavedObjectAttributes, SavedObjectReference } from 'src/core/public'; import { + ASSETS_SAVED_OBJECT_TYPE, agentAssetTypes, dataTypes, defaultPackages, @@ -15,6 +16,7 @@ import { requiredPackages, } from '../../constants'; import { ValueOf } from '../../types'; +import { PackageSpecManifest, PackageSpecScreenshot } from './package_spec'; export type InstallationStatus = typeof installationStatuses; @@ -30,7 +32,7 @@ export type InstallSource = 'registry' | 'upload'; export type EpmPackageInstallStatus = 'installed' | 'installing'; -export type DetailViewPanelName = 'overview' | 'policies' | 'settings'; +export type DetailViewPanelName = 'overview' | 'policies' | 'settings' | 'custom'; export type ServiceName = 'kibana' | 'elasticsearch'; export type AgentAssetType = typeof agentAssetTypes; export type AssetType = KibanaAssetType | ElasticsearchAssetType | ValueOf; @@ -67,62 +69,63 @@ export enum ElasticsearchAssetType { export type DataType = typeof dataTypes; -export type RegistryRelease = 'ga' | 'beta' | 'experimental'; +export type InstallablePackage = RegistryPackage | ArchivePackage; -// Fields common to packages that come from direct upload and the registry -export interface InstallablePackage { - name: string; - title?: string; - version: string; - release?: RegistryRelease; - readme?: string; - description: string; - type: string; - categories: string[]; - screenshots?: RegistryImage[]; - icons?: RegistryImage[]; - assets?: string[]; - internal?: boolean; - format_version: string; - data_streams?: RegistryDataStream[]; - policy_templates?: RegistryPolicyTemplate[]; -} +export type ArchivePackage = PackageSpecManifest & + // should an uploaded package be able to specify `internal`? + Pick; -// Uploaded package archives don't have extra fields -// Linter complaint disabled because this extra type is meant for better code readability -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ArchivePackage extends InstallablePackage {} +export type RegistryPackage = PackageSpecManifest & + Partial & + RegistryAdditionalProperties & + RegistryOverridePropertyValue; // Registry packages do have extra fields. // cf. type Package struct at https://github.com/elastic/package-registry/blob/master/util/package.go -export interface RegistryPackage extends InstallablePackage { - requirement: RequirementsByServiceName; +type RegistryOverridesToOptional = Pick; + +// our current types have `download`, & `path` as required but they're are optional (have `omitempty`) according to +// https://github.com/elastic/package-registry/blob/master/util/package.go#L57 +// & https://github.com/elastic/package-registry/blob/master/util/package.go#L80-L81 +// However, they are always present in every registry response I checked. Chose to keep types unchanged for now +// and confirm with Registry if they are really optional. Can update types and ~4 places in code later if neccessary +interface RegistryAdditionalProperties { + assets?: string[]; download: string; path: string; + readme?: string; + internal?: boolean; // Registry addition[0] and EPM uses it[1] [0]: https://github.com/elastic/package-registry/blob/dd7b021893aa8d66a5a5fde963d8ff2792a9b8fa/util/package.go#L63 [1] + data_streams?: RegistryDataStream[]; // Registry addition [0] [0]: https://github.com/elastic/package-registry/blob/dd7b021893aa8d66a5a5fde963d8ff2792a9b8fa/util/package.go#L65 +} +interface RegistryOverridePropertyValue { + icons?: RegistryImage[]; + screenshots?: RegistryImage[]; } -interface RegistryImage { +export type RegistryRelease = PackageSpecManifest['release']; +export interface RegistryImage { src: string; path: string; title?: string; size?: string; type?: string; } + export interface RegistryPolicyTemplate { name: string; title: string; description: string; - inputs: RegistryInput[]; + inputs?: RegistryInput[]; multiple?: boolean; } - export interface RegistryInput { type: string; title: string; - description?: string; + description: string; + template_path?: string; + condition?: string; vars?: RegistryVarsEntry[]; } - export interface RegistryStream { input: string; title: string; @@ -151,15 +154,15 @@ export type RegistrySearchResult = Pick< | 'release' | 'description' | 'type' - | 'icons' - | 'internal' | 'download' | 'path' + | 'icons' + | 'internal' | 'data_streams' | 'policy_templates' >; -export type ScreenshotItem = RegistryImage; +export type ScreenshotItem = RegistryImage | PackageSpecScreenshot; // from /categories // https://github.com/elastic/package-registry/blob/master/docs/api/categories.json @@ -171,7 +174,7 @@ export interface CategorySummaryItem { count: number; } -export type RequirementsByServiceName = Record; +export type RequirementsByServiceName = PackageSpecManifest['conditions']; export interface AssetParts { pkgkey: string; dataset?: string; @@ -240,35 +243,29 @@ export interface RegistryVarsEntry { // some properties are optional in Registry responses but required in EPM // internal until we need them -interface PackageAdditions { +export interface EpmPackageAdditions { title: string; latestVersion: string; assets: AssetsGroupedByServiceByType; removable?: boolean; } +type Merge = Omit> & + SecondType; + // Managers public HTTP response types export type PackageList = PackageListItem[]; export type PackageListItem = Installable; export type PackagesGroupedByStatus = Record, PackageList>; export type PackageInfo = - | Installable< - // remove the properties we'll be altering/replacing from the base type - Omit & - // now add our replacement definitions - PackageAdditions - > - | Installable< - // remove the properties we'll be altering/replacing from the base type - Omit & - // now add our replacement definitions - PackageAdditions - >; + | Installable> + | Installable>; export interface Installation extends SavedObjectAttributes { installed_kibana: KibanaAssetReference[]; installed_es: EsAssetReference[]; + package_assets: PackageAssetReference[]; es_index_patterns: Record; name: string; version: string; @@ -298,6 +295,10 @@ export type EsAssetReference = Pick & { type: ElasticsearchAssetType; }; +export type PackageAssetReference = Pick & { + type: typeof ASSETS_SAVED_OBJECT_TYPE; +}; + export type RequiredPackage = typeof requiredPackages; export type DefaultPackages = typeof defaultPackages; diff --git a/x-pack/plugins/fleet/common/types/models/index.ts b/x-pack/plugins/fleet/common/types/models/index.ts index ad4c6ad02639e2..80b7cd0026c8e1 100644 --- a/x-pack/plugins/fleet/common/types/models/index.ts +++ b/x-pack/plugins/fleet/common/types/models/index.ts @@ -10,5 +10,6 @@ export * from './package_policy'; export * from './data_stream'; export * from './output'; export * from './epm'; +export * from './package_spec'; export * from './enrollment_api_key'; export * from './settings'; diff --git a/x-pack/plugins/fleet/common/types/models/package_policy.ts b/x-pack/plugins/fleet/common/types/models/package_policy.ts index ae16899a4b6f99..6da98a51ef1ffb 100644 --- a/x-pack/plugins/fleet/common/types/models/package_policy.ts +++ b/x-pack/plugins/fleet/common/types/models/package_policy.ts @@ -42,6 +42,7 @@ export interface NewPackagePolicyInput { export interface PackagePolicyInput extends Omit { streams: PackagePolicyInputStream[]; + compiled_input?: any; } export interface NewPackagePolicy { diff --git a/x-pack/plugins/fleet/common/types/models/package_spec.ts b/x-pack/plugins/fleet/common/types/models/package_spec.ts new file mode 100644 index 00000000000000..9c83865a913842 --- /dev/null +++ b/x-pack/plugins/fleet/common/types/models/package_spec.ts @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { RegistryPolicyTemplate } from './epm'; + +// Based on https://github.com/elastic/package-spec/blob/master/versions/1/manifest.spec.yml#L8 +export interface PackageSpecManifest { + format_version: string; + name: string; + title: string; + description: string; + version: string; + license?: 'basic'; + type?: 'integration'; + release: 'experimental' | 'beta' | 'ga'; + categories?: Array; + conditions?: PackageSpecConditions; + icons?: PackageSpecIcon[]; + screenshots?: PackageSpecScreenshot[]; + policy_templates?: RegistryPolicyTemplate[]; + owner: { github: string }; +} + +export type PackageSpecCategory = + | 'aws' + | 'azure' + | 'cloud' + | 'config_management' + | 'containers' + | 'crm' + | 'custom' + | 'datastore' + | 'elastic_stack' + | 'google_cloud' + | 'kubernetes' + | 'languages' + | 'message_queue' + | 'monitoring' + | 'network' + | 'notification' + | 'os_system' + | 'productivity' + | 'security' + | 'support' + | 'ticketing' + | 'version_control' + | 'web'; + +export type PackageSpecConditions = Record< + 'kibana', + { + version: string; + } +>; + +export interface PackageSpecIcon { + src: string; + title?: string; + size?: string; + type?: string; +} + +export interface PackageSpecScreenshot { + src: string; + title: string; + size?: string; + type?: string; +} diff --git a/x-pack/plugins/fleet/common/types/rest_spec/epm.ts b/x-pack/plugins/fleet/common/types/rest_spec/epm.ts index 0709eddaa52ec9..7299fbb5e5d656 100644 --- a/x-pack/plugins/fleet/common/types/rest_spec/epm.ts +++ b/x-pack/plugins/fleet/common/types/rest_spec/epm.ts @@ -8,7 +8,7 @@ import { AssetReference, CategorySummaryList, Installable, - RegistryPackage, + RegistrySearchResult, PackageInfo, } from '../models/epm'; @@ -30,14 +30,7 @@ export interface GetPackagesRequest { } export interface GetPackagesResponse { - response: Array< - Installable< - Pick< - RegistryPackage, - 'name' | 'title' | 'version' | 'description' | 'type' | 'icons' | 'download' | 'path' - > - > - >; + response: Array>; } export interface GetLimitedPackagesResponse { diff --git a/x-pack/plugins/fleet/jest.config.js b/x-pack/plugins/fleet/jest.config.js new file mode 100644 index 00000000000000..521cb7467b1967 --- /dev/null +++ b/x-pack/plugins/fleet/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/fleet'], +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/app.tsx b/x-pack/plugins/fleet/public/applications/fleet/app.tsx new file mode 100644 index 00000000000000..ed91c1cb1479ca --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/app.tsx @@ -0,0 +1,254 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { memo, useEffect, useState } from 'react'; +import { AppMountParameters } from 'kibana/public'; +import { EuiCode, EuiEmptyPrompt, EuiErrorBoundary, EuiPanel } from '@elastic/eui'; +import { createHashHistory, History } from 'history'; +import { Router, Redirect, Route, Switch } from 'react-router-dom'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import styled from 'styled-components'; +import useObservable from 'react-use/lib/useObservable'; +import { + ConfigContext, + FleetStatusProvider, + KibanaVersionContext, + sendGetPermissionsCheck, + sendSetup, + useBreadcrumbs, + useConfig, +} from './hooks'; +import { Error, Loading } from './components'; +import { IntraAppStateProvider } from './hooks/use_intra_app_state'; +import { PackageInstallProvider } from './sections/epm/hooks'; +import { PAGE_ROUTING_PATHS } from './constants'; +import { DefaultLayout, WithoutHeaderLayout } from './layouts'; +import { EPMApp } from './sections/epm'; +import { AgentPolicyApp } from './sections/agent_policy'; +import { DataStreamApp } from './sections/data_stream'; +import { FleetApp } from './sections/agents'; +import { IngestManagerOverview } from './sections/overview'; +import { ProtectedRoute } from './index'; +import { FleetConfigType, FleetStartServices } from '../../plugin'; +import { UIExtensionsStorage } from './types'; +import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; +import { EuiThemeProvider } from '../../../../xpack_legacy/common'; +import { UIExtensionsContext } from './hooks/use_ui_extension'; + +const ErrorLayout = ({ children }: { children: JSX.Element }) => ( + + + {children} + + +); + +const Panel = styled(EuiPanel)` + max-width: 500px; + margin-right: auto; + margin-left: auto; +`; + +export const WithPermissionsAndSetup: React.FC = memo(({ children }) => { + useBreadcrumbs('base'); + + const [isPermissionsLoading, setIsPermissionsLoading] = useState(false); + const [permissionsError, setPermissionsError] = useState(); + const [isInitialized, setIsInitialized] = useState(false); + const [initializationError, setInitializationError] = useState(null); + + useEffect(() => { + (async () => { + setIsPermissionsLoading(false); + setPermissionsError(undefined); + setIsInitialized(false); + setInitializationError(null); + try { + setIsPermissionsLoading(true); + const permissionsResponse = await sendGetPermissionsCheck(); + setIsPermissionsLoading(false); + if (permissionsResponse.data?.success) { + try { + const setupResponse = await sendSetup(); + if (setupResponse.error) { + setInitializationError(setupResponse.error); + } + } catch (err) { + setInitializationError(err); + } + setIsInitialized(true); + } else { + setPermissionsError(permissionsResponse.data?.error || 'REQUEST_ERROR'); + } + } catch (err) { + setPermissionsError('REQUEST_ERROR'); + } + })(); + }, []); + + if (isPermissionsLoading || permissionsError) { + return ( + + {isPermissionsLoading ? ( + + ) : permissionsError === 'REQUEST_ERROR' ? ( + + } + error={i18n.translate('xpack.fleet.permissionsRequestErrorMessageDescription', { + defaultMessage: 'There was a problem checking Fleet permissions', + })} + /> + ) : ( + + + {permissionsError === 'MISSING_SUPERUSER_ROLE' ? ( + + ) : ( + + )} + + } + body={ +

    + {permissionsError === 'MISSING_SUPERUSER_ROLE' ? ( + superuser }} + /> + ) : ( + + )} +

    + } + /> +
    + )} +
    + ); + } + + if (!isInitialized || initializationError) { + return ( + + {initializationError ? ( + + } + error={initializationError} + /> + ) : ( + + )} + + ); + } + + return <>{children}; +}); + +/** + * Fleet Application context all the way down to the Router, but with no permissions or setup checks + * and no routes defined + */ +export const FleetAppContext: React.FC<{ + basepath: string; + startServices: FleetStartServices; + config: FleetConfigType; + history: AppMountParameters['history']; + kibanaVersion: string; + extensions: UIExtensionsStorage; + /** For testing purposes only */ + routerHistory?: History; +}> = memo( + ({ children, startServices, config, history, kibanaVersion, extensions, routerHistory }) => { + const isDarkMode = useObservable(startServices.uiSettings.get$('theme:darkMode')); + const [routerHistoryInstance] = useState(routerHistory || createHashHistory()); + + return ( + + + + + + + + + + + + {children} + + + + + + + + + + + + ); + } +); + +export const AppRoutes = memo(() => { + const { agents } = useConfig(); + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/index.ts b/x-pack/plugins/fleet/public/applications/fleet/components/index.ts index 93bc0645c7eee9..ea6abc4bba5f56 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/index.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/components/index.ts @@ -11,3 +11,4 @@ export { PackageIcon } from './package_icon'; export { ContextMenuActions } from './context_menu_actions'; export { SearchBar } from './search_bar'; export * from './settings_flyout'; +export * from './link_and_revision'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/link_and_revision.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/link_and_revision.tsx new file mode 100644 index 00000000000000..a9e44b200cf698 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/components/link_and_revision.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiLink, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import React, { CSSProperties, memo } from 'react'; +import { EuiLinkProps } from '@elastic/eui/src/components/link/link'; + +const MIN_WIDTH: CSSProperties = { minWidth: 0 }; +const NO_WRAP_WHITE_SPACE: CSSProperties = { whiteSpace: 'nowrap' }; + +export type LinkAndRevisionProps = EuiLinkProps & { + revision?: string | number; +}; + +/** + * Components shows a link for a given value along with a revision number to its right. The display + * value is truncated if it is longer than the width of where it is displayed, while the revision + * always remain visible + */ +export const LinkAndRevision = memo( + ({ revision, className, ...euiLinkProps }) => { + return ( + + + + + {revision && ( + + + + + + )} + + ); + } +); diff --git a/x-pack/plugins/fleet/public/applications/fleet/constants/page_paths.ts b/x-pack/plugins/fleet/public/applications/fleet/constants/page_paths.ts index ecd4227a54b655..2fce7f8f5e825e 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/constants/page_paths.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/constants/page_paths.ts @@ -78,8 +78,8 @@ export const pagePathGetters: { `/policies/${policyId}/edit-integration/${packagePolicyId}`, fleet: () => '/fleet', fleet_agent_list: ({ kuery }) => `/fleet/agents${kuery ? `?kuery=${kuery}` : ''}`, - fleet_agent_details: ({ agentId, tabId }) => - `/fleet/agents/${agentId}${tabId ? `/${tabId}` : ''}`, + fleet_agent_details: ({ agentId, tabId, logQuery }) => + `/fleet/agents/${agentId}${tabId ? `/${tabId}` : ''}${logQuery ? `?_q=${logQuery}` : ''}`, fleet_enrollment_tokens: () => '/fleet/enrollment-tokens', data_streams: () => '/data-streams', }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/index.ts b/x-pack/plugins/fleet/public/applications/fleet/hooks/index.ts index 6026a5579f65b6..5b0243f127333f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/index.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/index.ts @@ -13,7 +13,8 @@ export { useBreadcrumbs } from './use_breadcrumbs'; export { useLink } from './use_link'; export { useKibanaLink } from './use_kibana_link'; export { usePackageIconType, UsePackageIconType } from './use_package_icon_type'; -export { usePagination, Pagination } from './use_pagination'; +export { usePagination, Pagination, PAGE_SIZE_OPTIONS } from './use_pagination'; +export { useUrlPagination } from './use_url_pagination'; export { useSorting } from './use_sorting'; export { useDebounce } from './use_debounce'; export * from './use_request'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_intra_app_state.tsx b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_intra_app_state.tsx index 7bccd3a4b1f584..76357bd197c6d3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_intra_app_state.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_intra_app_state.tsx @@ -63,5 +63,12 @@ export function useIntraAppState(): wasHandled.add(intraAppState); return intraAppState.routeState as S; } - }, [intraAppState, location.pathname]); + + // Default is to return the state in the Fleet HashRouter, in order to enable use of route state + // that is used via Kibana's ScopedHistory from within the Fleet HashRouter (ex. things like + // `core.application.navigateTo()` + // Once this https://github.com/elastic/kibana/issues/70358 is implemented (move to BrowserHistory + // using kibana's ScopedHistory), then this work-around can be removed. + return location.state as S; + }, [intraAppState, location.pathname, location.state]); } diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_package_icon_type.ts b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_package_icon_type.ts index 690ffdf46f7046..1c0ff8e7ef3e96 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_package_icon_type.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_package_icon_type.ts @@ -27,7 +27,7 @@ export const usePackageIconType = ({ icons: paramIcons, tryApi = false, }: UsePackageIconType) => { - const { toImage } = useLinks(); + const { toPackageImage } = useLinks(); const [iconList, setIconList] = useState(); const [iconType, setIconType] = useState(''); // FIXME: use `empty` icon during initialization - see: https://github.com/elastic/kibana/issues/60622 const pkgKey = `${packageName}-${version}`; @@ -42,9 +42,10 @@ export const usePackageIconType = ({ const svgIcons = (paramIcons || iconList)?.filter( (iconDef) => iconDef.type === 'image/svg+xml' ); - const localIconSrc = Array.isArray(svgIcons) && (svgIcons[0].path || svgIcons[0].src); + const localIconSrc = + Array.isArray(svgIcons) && toPackageImage(svgIcons[0], packageName, version); if (localIconSrc) { - CACHED_ICONS.set(pkgKey, toImage(localIconSrc)); + CACHED_ICONS.set(pkgKey, localIconSrc); setIconType(CACHED_ICONS.get(pkgKey) || ''); return; } @@ -67,7 +68,6 @@ export const usePackageIconType = ({ CACHED_ICONS.set(pkgKey, 'package'); setIconType('package'); - }, [paramIcons, pkgKey, toImage, iconList, packageName, iconType, tryApi]); - + }, [paramIcons, pkgKey, toPackageImage, iconList, packageName, iconType, tryApi, version]); return iconType; }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_pagination.tsx b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_pagination.tsx index 699bba3c62f97a..1fdd223ef80471 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_pagination.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_pagination.tsx @@ -4,22 +4,27 @@ * you may not use this file except in compliance with the Elastic License. */ -import { useState } from 'react'; +import { useMemo, useState } from 'react'; + +export const PAGE_SIZE_OPTIONS: readonly number[] = [5, 20, 50]; export interface Pagination { currentPage: number; pageSize: number; } -export function usePagination() { - const [pagination, setPagination] = useState({ +export function usePagination( + pageInfo: Pagination = { currentPage: 1, pageSize: 20, - }); + } +) { + const [pagination, setPagination] = useState(pageInfo); + const pageSizeOptions = useMemo(() => [...PAGE_SIZE_OPTIONS], []); return { pagination, setPagination, - pageSizeOptions: [5, 20, 50], + pageSizeOptions, }; } diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_request/agents.ts b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_request/agents.ts index 564e7b225cf455..7bbf621c578941 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_request/agents.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_request/agents.ts @@ -26,6 +26,8 @@ import { PostBulkAgentUpgradeRequest, PostAgentUpgradeResponse, PostBulkAgentUpgradeResponse, + PostNewAgentActionRequest, + PostNewAgentActionResponse, } from '../../types'; type RequestOptions = Pick, 'pollIntervalMs'>; @@ -144,6 +146,19 @@ export function sendPostAgentUpgrade( }); } +export function sendPostAgentAction( + agentId: string, + body: PostNewAgentActionRequest['body'], + options?: RequestOptions +) { + return sendRequest({ + path: agentRouteService.getCreateActionPath(agentId), + method: 'post', + body, + ...options, + }); +} + export function sendPostBulkAgentUpgrade( body: PostBulkAgentUpgradeRequest['body'], options?: RequestOptions diff --git a/x-pack/plugins/fleet/public/applications/fleet/hooks/use_url_pagination.ts b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_url_pagination.ts new file mode 100644 index 00000000000000..40539ed749285a --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/hooks/use_url_pagination.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useCallback, useEffect, useMemo } from 'react'; +import { useHistory, useLocation } from 'react-router-dom'; +import { useUrlParams } from './use_url_params'; +import { PAGE_SIZE_OPTIONS, Pagination, usePagination } from './use_pagination'; + +type SetUrlPagination = (pagination: Pagination) => void; +interface UrlPagination { + pagination: Pagination; + setPagination: SetUrlPagination; + pageSizeOptions: number[]; +} + +type UrlPaginationParams = Partial; + +/** + * Uses URL params for pagination and also persists those to the URL as they are updated + */ +export const useUrlPagination = (): UrlPagination => { + const location = useLocation(); + const history = useHistory(); + const { urlParams, toUrlParams } = useUrlParams(); + const urlPaginationParams = useMemo(() => { + return paginationFromUrlParams(urlParams); + }, [urlParams]); + const { pagination, pageSizeOptions, setPagination } = usePagination(urlPaginationParams); + + const setUrlPagination = useCallback( + ({ pageSize, currentPage }) => { + history.push({ + ...location, + search: toUrlParams({ + ...urlParams, + currentPage, + pageSize, + }), + }); + }, + [history, location, toUrlParams, urlParams] + ); + + useEffect(() => { + setPagination((prevState) => { + return { + ...prevState, + ...paginationFromUrlParams(urlParams), + }; + }); + }, [setPagination, urlParams]); + + return { + pagination, + setPagination: setUrlPagination, + pageSizeOptions, + }; +}; + +const paginationFromUrlParams = (urlParams: UrlPaginationParams): Pagination => { + const pagination: Pagination = { + pageSize: 20, + currentPage: 1, + }; + + // Search params can appear multiple times in the URL, in which case the value for them, + // once parsed, would be an array. In these case, we take the last value defined + pagination.currentPage = Number( + (Array.isArray(urlParams.currentPage) ? urlParams.currentPage.pop() : urlParams.currentPage) ?? + pagination.currentPage + ); + pagination.pageSize = + Number( + (Array.isArray(urlParams.pageSize) ? urlParams.pageSize.pop() : urlParams.pageSize) ?? + pagination.pageSize + ) ?? pagination.pageSize; + + // If Current Page is not a valid positive integer, set it to 1 + if (!Number.isFinite(pagination.currentPage) || pagination.currentPage < 1) { + pagination.currentPage = 1; + } + + // if pageSize is not one of the expected page sizes, reset it to 20 (default) + if (!PAGE_SIZE_OPTIONS.includes(pagination.pageSize)) { + pagination.pageSize = 20; + } + + return pagination; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/index.tsx index 61a5f1eabc2afe..35abda1490dce0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/index.tsx @@ -3,36 +3,14 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { memo, useEffect, useState } from 'react'; +import React from 'react'; import ReactDOM from 'react-dom'; -import useObservable from 'react-use/lib/useObservable'; -import { HashRouter as Router, Redirect, Switch, Route, RouteProps } from 'react-router-dom'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n/react'; -import styled from 'styled-components'; -import { EuiErrorBoundary, EuiPanel, EuiEmptyPrompt, EuiCode } from '@elastic/eui'; +import { Redirect, Route, RouteProps } from 'react-router-dom'; import { CoreStart, AppMountParameters } from 'src/core/public'; -import { KibanaContextProvider } from '../../../../../../src/plugins/kibana_react/public'; -import { EuiThemeProvider } from '../../../../xpack_legacy/common'; import { FleetConfigType, FleetStartServices } from '../../plugin'; -import { PAGE_ROUTING_PATHS } from './constants'; -import { DefaultLayout, WithoutHeaderLayout } from './layouts'; -import { Loading, Error } from './components'; -import { IngestManagerOverview, EPMApp, AgentPolicyApp, FleetApp, DataStreamApp } from './sections'; -import { - ConfigContext, - useConfig, - useStartServices, - sendSetup, - sendGetPermissionsCheck, - licenseService, - KibanaVersionContext, -} from './hooks'; -import { PackageInstallProvider } from './sections/epm/hooks'; -import { FleetStatusProvider, useBreadcrumbs } from './hooks'; -import { IntraAppStateProvider } from './hooks/use_intra_app_state'; +import { licenseService } from './hooks'; import { UIExtensionsStorage } from './types'; -import { UIExtensionsContext } from './hooks/use_ui_extension'; +import { AppRoutes, FleetAppContext, WithPermissionsAndSetup } from './app'; export interface ProtectedRouteProps extends RouteProps { isAllowed?: boolean; @@ -47,213 +25,35 @@ export const ProtectedRoute: React.FunctionComponent = ({ return isAllowed ? : ; }; -const Panel = styled(EuiPanel)` - max-width: 500px; - margin-right: auto; - margin-left: auto; -`; - -const ErrorLayout = ({ children }: { children: JSX.Element }) => ( - - - {children} - - -); - -const IngestManagerRoutes = memo<{ history: AppMountParameters['history']; basepath: string }>( - ({ history, ...rest }) => { - useBreadcrumbs('base'); - const { agents } = useConfig(); - - const { notifications } = useStartServices(); - - const [isPermissionsLoading, setIsPermissionsLoading] = useState(false); - const [permissionsError, setPermissionsError] = useState(); - const [isInitialized, setIsInitialized] = useState(false); - const [initializationError, setInitializationError] = useState(null); - - useEffect(() => { - (async () => { - setIsPermissionsLoading(false); - setPermissionsError(undefined); - setIsInitialized(false); - setInitializationError(null); - try { - setIsPermissionsLoading(true); - const permissionsResponse = await sendGetPermissionsCheck(); - setIsPermissionsLoading(false); - if (permissionsResponse.data?.success) { - try { - const setupResponse = await sendSetup(); - if (setupResponse.error) { - setInitializationError(setupResponse.error); - } - } catch (err) { - setInitializationError(err); - } - setIsInitialized(true); - } else { - setPermissionsError(permissionsResponse.data?.error || 'REQUEST_ERROR'); - } - } catch (err) { - setPermissionsError('REQUEST_ERROR'); - } - })(); - }, []); - - if (isPermissionsLoading || permissionsError) { - return ( - - {isPermissionsLoading ? ( - - ) : permissionsError === 'REQUEST_ERROR' ? ( - - } - error={i18n.translate('xpack.fleet.permissionsRequestErrorMessageDescription', { - defaultMessage: 'There was a problem checking Fleet permissions', - })} - /> - ) : ( - - - {permissionsError === 'MISSING_SUPERUSER_ROLE' ? ( - - ) : ( - - )} - - } - body={ -

    - {permissionsError === 'MISSING_SUPERUSER_ROLE' ? ( - superuser }} - /> - ) : ( - - )} -

    - } - /> -
    - )} -
    - ); - } - - if (!isInitialized || initializationError) { - return ( - - {initializationError ? ( - - } - error={initializationError} - /> - ) : ( - - )} - - ); - } - - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); - } -); - -const IngestManagerApp = ({ - basepath, - startServices, - config, - history, - kibanaVersion, - extensions, -}: { +interface FleetAppProps { basepath: string; startServices: FleetStartServices; config: FleetConfigType; history: AppMountParameters['history']; kibanaVersion: string; extensions: UIExtensionsStorage; -}) => { - const isDarkMode = useObservable(startServices.uiSettings.get$('theme:darkMode')); +} +const FleetApp = ({ + basepath, + startServices, + config, + history, + kibanaVersion, + extensions, +}: FleetAppProps) => { return ( - - - - - - - - - - - - - + + + + + ); }; @@ -265,7 +65,7 @@ export function renderApp( extensions: UIExtensionsStorage ) { ReactDOM.render( - RenderResult; + +/** + * Test Renderer that includes mocked services and interfaces used during Fleet applicaiton rendering. + * Any of the properties in this interface can be manipulated prior to `render()` if wanting to customize + * the rendering context. + */ +export interface TestRenderer { + /** History instance currently used by the Fleet UI Hash Router */ + history: History; + /** history instance provided to the Fleet plugin during application `mount()` */ + mountHistory: ScopedHistory; + startServices: MockedFleetStartServices; + config: FleetConfigType; + /** The Interface returned by the Fleet plugin `start()` phase */ + startInterface: MockedFleetStart; + kibanaVersion: string; + AppWrapper: React.FC; + render: UiRender; +} + +export const createTestRendererMock = (): TestRenderer => { + const basePath = '/mock'; + const extensions: UIExtensionsStorage = {}; + const startServices = createStartServices(basePath); + const testRendererMocks: TestRenderer = { + history: createHashHistory(), + mountHistory: new ScopedHistory(createMemoryHistory({ initialEntries: [basePath] }), basePath), + startServices, + config: createConfigurationMock(), + startInterface: createStartMock(extensions), + kibanaVersion: '8.0.0', + AppWrapper: memo(({ children }) => { + return ( + + {children} + + ); + }), + render: (ui, options) => { + let renderResponse: RenderResult; + act(() => { + renderResponse = reactRender(ui, { + wrapper: testRendererMocks.AppWrapper, + ...options, + }); + }); + return renderResponse!; + }, + }; + + return testRendererMocks; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/fleet_start_services.tsx b/x-pack/plugins/fleet/public/applications/fleet/mock/fleet_start_services.tsx new file mode 100644 index 00000000000000..cc24d946e46af9 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/fleet_start_services.tsx @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { I18nProvider } from '@kbn/i18n/react'; +import { coreMock } from '../../../../../../../src/core/public/mocks'; +import { createStartDepsMock } from './plugin_dependencies'; +import { IStorage, Storage } from '../../../../../../../src/plugins/kibana_utils/public'; +import { MockedKeys } from '../../../../../../../packages/kbn-utility-types/jest/index'; +import { setHttpClient } from '../hooks/use_request'; +import { MockedFleetStartServices } from './types'; + +// Taken from core. See: src/plugins/kibana_utils/public/storage/storage.test.ts +const createMockStore = (): MockedKeys => { + let store: Record = {}; + return { + getItem: jest.fn().mockImplementation((key) => store[key]), + setItem: jest.fn().mockImplementation((key, value) => (store[key] = value)), + removeItem: jest.fn().mockImplementation((key: string) => delete store[key]), + clear: jest.fn().mockImplementation(() => (store = {})), + }; +}; + +const configureStartServices = (services: MockedFleetStartServices): void => { + // Store the http for use by useRequest + setHttpClient(services.http); + + // Set Fleet available capabilities + services.application.capabilities = { + ...services.application.capabilities, + fleet: { + read: true, + write: true, + }, + }; + + // Setup the `i18n.Context` component + services.i18n.Context.mockImplementation(({ children }: { children: React.ReactNode }) => ( + {children} + )); +}; + +export const createStartServices = (basePath: string = '/mock'): MockedFleetStartServices => { + const startServices: MockedFleetStartServices = { + ...coreMock.createStart({ basePath }), + ...createStartDepsMock(), + storage: new Storage(createMockStore()) as jest.Mocked, + }; + + configureStartServices(startServices); + + return startServices; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/index.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/index.ts new file mode 100644 index 00000000000000..6202f2cfee1fb2 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './create_test_renderer'; +export * from './plugin_configuration'; +export * from './plugin_dependencies'; +export * from './plugin_interfaces'; +export * from './fleet_start_services'; +export * from './types'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts new file mode 100644 index 00000000000000..735c1d11a9837d --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_configuration.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { FleetConfigType } from '../../../plugin'; + +export const createConfigurationMock = (): FleetConfigType => { + return { + enabled: true, + registryUrl: '', + registryProxyUrl: '', + agents: { + enabled: true, + tlsCheckDisabled: true, + pollingRequestTimeout: 1000, + maxConcurrentConnections: 100, + kibana: { + host: '', + ca_sha256: '', + }, + elasticsearch: { + host: '', + ca_sha256: '', + }, + agentPolicyRolloutRateLimitIntervalMs: 100, + agentPolicyRolloutRateLimitRequestPerInterval: 1000, + }, + }; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_dependencies.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_dependencies.ts new file mode 100644 index 00000000000000..51de2970f9ba69 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_dependencies.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { dataPluginMock } from '../../../../../../../src/plugins/data/public/mocks'; +import { licensingMock } from '../../../../../licensing/public/mocks'; +import { homePluginMock } from '../../../../../../../src/plugins/home/public/mocks'; +import { MockedFleetSetupDeps, MockedFleetStartDeps } from './types'; + +export const createSetupDepsMock = (): MockedFleetSetupDeps => { + return { + licensing: licensingMock.createSetup(), + data: dataPluginMock.createSetupContract(), + home: homePluginMock.createSetupContract(), + }; +}; + +export const createStartDepsMock = (): MockedFleetStartDeps => { + return { + data: dataPluginMock.createStartContract(), + }; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_interfaces.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_interfaces.ts new file mode 100644 index 00000000000000..786702863b0d6a --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/plugin_interfaces.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { UIExtensionsStorage } from '../types'; +import { createExtensionRegistrationCallback } from '../services/ui_extensions'; +import { MockedFleetStart } from './types'; + +export const createStartMock = (extensionsStorage: UIExtensionsStorage = {}): MockedFleetStart => { + return { + isInitialized: jest.fn().mockResolvedValue(true), + registerExtension: createExtensionRegistrationCallback(extensionsStorage), + }; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/mock/types.ts b/x-pack/plugins/fleet/public/applications/fleet/mock/types.ts new file mode 100644 index 00000000000000..c5830b0a2a5605 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/mock/types.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { MockedKeys } from '../../../../../../../packages/kbn-utility-types/jest/index'; +import { FleetSetupDeps, FleetStart, FleetStartDeps, FleetStartServices } from '../../../plugin'; + +export type MockedFleetStartServices = MockedKeys; + +export type MockedFleetSetupDeps = MockedKeys; + +export type MockedFleetStartDeps = MockedKeys; + +export type MockedFleetStart = MockedKeys; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/danger_eui_context_menu_item.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/danger_eui_context_menu_item.tsx index 54dc8ab6188b71..b90b2fd5441b53 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/danger_eui_context_menu_item.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/danger_eui_context_menu_item.tsx @@ -8,5 +8,5 @@ import styled from 'styled-components'; import { EuiContextMenuItem } from '@elastic/eui'; export const DangerEuiContextMenuItem = styled(EuiContextMenuItem)` - color: ${(props) => props.theme.eui.textColors.danger}; + color: ${(props) => props.theme.eui.euiTextColors.danger}; `; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_config.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_config.tsx index 75000ad7e1d3b6..9015cd09f78a30 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_config.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_config.tsx @@ -27,6 +27,7 @@ const FlexItemWithMaxWidth = styled(EuiFlexItem)` `; export const PackagePolicyInputConfig: React.FunctionComponent<{ + hasInputStreams: boolean; packageInputVars?: RegistryVarsEntry[]; packagePolicyInput: NewPackagePolicyInput; updatePackagePolicyInput: (updatedInput: Partial) => void; @@ -34,6 +35,7 @@ export const PackagePolicyInputConfig: React.FunctionComponent<{ forceShowErrors?: boolean; }> = memo( ({ + hasInputStreams, packageInputVars, packagePolicyInput, updatePackagePolicyInput, @@ -82,15 +84,19 @@ export const PackagePolicyInputConfig: React.FunctionComponent<{ /> - - -

    - -

    -
    + {hasInputStreams ? ( + <> + + +

    + +

    +
    + + ) : null} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_panel.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_panel.tsx index 79ff0cc29850c8..8e242980ce8070 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_panel.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/package_policy_input_panel.tsx @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { useState, Fragment, memo } from 'react'; +import React, { useState, Fragment, memo, useMemo } from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -85,16 +85,23 @@ export const PackagePolicyInputPanel: React.FunctionComponent<{ const errorCount = countValidationErrors(inputValidationResults); const hasErrors = forceShowErrors && errorCount; - const inputStreams = packageInputStreams - .map((packageInputStream) => { - return { - packageInputStream, - packagePolicyInputStream: packagePolicyInput.streams.find( - (stream) => stream.data_stream.dataset === packageInputStream.data_stream.dataset - ), - }; - }) - .filter((stream) => Boolean(stream.packagePolicyInputStream)); + const hasInputStreams = useMemo(() => packageInputStreams.length > 0, [ + packageInputStreams.length, + ]); + const inputStreams = useMemo( + () => + packageInputStreams + .map((packageInputStream) => { + return { + packageInputStream, + packagePolicyInputStream: packagePolicyInput.streams.find( + (stream) => stream.data_stream.dataset === packageInputStream.data_stream.dataset + ), + }; + }) + .filter((stream) => Boolean(stream.packagePolicyInputStream)), + [packageInputStreams, packagePolicyInput.streams] + ); return ( <> @@ -179,13 +186,14 @@ export const PackagePolicyInputPanel: React.FunctionComponent<{ {isShowingStreams && packageInput.vars && packageInput.vars.length ? ( - + {hasInputStreams ? : } ) : null} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.test.tsx new file mode 100644 index 00000000000000..fe16648b45ca32 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.test.tsx @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../mock'; +import { PAGE_ROUTING_PATHS, pagePathGetters, PLUGIN_ID } from '../../../constants'; +import { Route } from 'react-router-dom'; +import { CreatePackagePolicyPage } from './index'; +import React from 'react'; +import { CreatePackagePolicyRouteState } from '../../../types'; +import { act } from 'react-test-renderer'; + +describe('when on the package policy create page', () => { + const createPageUrlPath = pagePathGetters.add_integration_to_policy({ pkgkey: 'nginx-0.3.7' }); + let testRenderer: TestRenderer; + let renderResult: ReturnType; + const render = () => + (renderResult = testRenderer.render( + + + + )); + + beforeEach(() => { + testRenderer = createTestRendererMock(); + mockApiCalls(testRenderer.startServices.http); + testRenderer.history.push(createPageUrlPath); + }); + + describe('and Route state is provided via Fleet HashRouter', () => { + let expectedRouteState: CreatePackagePolicyRouteState; + + beforeEach(() => { + expectedRouteState = { + onCancelUrl: 'http://cancel/url/here', + onCancelNavigateTo: [PLUGIN_ID, { path: '/cancel/url/here' }], + }; + + testRenderer.history.replace({ + pathname: createPageUrlPath, + state: expectedRouteState, + }); + }); + + describe('and the cancel Link or Button is clicked', () => { + let cancelLink: HTMLAnchorElement; + let cancelButton: HTMLAnchorElement; + + beforeEach(() => { + render(); + + act(() => { + cancelLink = renderResult.getByTestId( + 'createPackagePolicy_cancelBackLink' + ) as HTMLAnchorElement; + + cancelButton = renderResult.getByTestId( + 'createPackagePolicyCancelButton' + ) as HTMLAnchorElement; + }); + }); + + it('should use custom "cancel" URL', () => { + expect(cancelLink.href).toBe(expectedRouteState.onCancelUrl); + expect(cancelButton.href).toBe(expectedRouteState.onCancelUrl); + }); + + it('should redirect via Fleet HashRouter when cancel link is clicked', () => { + act(() => { + cancelLink.click(); + }); + expect(testRenderer.history.location.pathname).toBe('/cancel/url/here'); + }); + + it('should redirect via Fleet HashRouter when cancel Button (button bar) is clicked', () => { + act(() => { + cancelButton.click(); + }); + expect(testRenderer.history.location.pathname).toBe('/cancel/url/here'); + }); + }); + }); +}); + +const mockApiCalls = (http: MockedFleetStartServices['http']) => { + http.get.mockImplementation(async (path) => { + const err = new Error(`API [GET ${path}] is not MOCKED!`); + // eslint-disable-next-line no-console + console.log(err); + throw err; + }); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.tsx index 62792b84105abb..f6d5b14990df30 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/index.tsx @@ -18,6 +18,7 @@ import { EuiSpacer, } from '@elastic/eui'; import { EuiStepProps } from '@elastic/eui/src/components/steps/step'; +import { ApplicationStart } from 'kibana/public'; import { AgentPolicy, PackageInfo, @@ -49,6 +50,7 @@ import { useIntraAppState } from '../../../hooks/use_intra_app_state'; import { useUIExtension } from '../../../hooks/use_ui_extension'; import { ExtensionWrapper } from '../../../components/extension_wrapper'; import { PackagePolicyEditExtensionComponentProps } from '../../../types'; +import { PLUGIN_ID } from '../../../../../../common/constants'; const StepsWithLessPadding = styled(EuiSteps)` .euiStep__content { @@ -57,10 +59,7 @@ const StepsWithLessPadding = styled(EuiSteps)` `; export const CreatePackagePolicyPage: React.FunctionComponent = () => { - const { - notifications, - application: { navigateToApp }, - } = useStartServices(); + const { notifications } = useStartServices(); const { agents: { enabled: isFleetEnabled }, } = useConfig(); @@ -69,6 +68,7 @@ export const CreatePackagePolicyPage: React.FunctionComponent = () => { } = useRouteMatch<{ policyId: string; pkgkey: string }>(); const { getHref, getPath } = useLink(); const history = useHistory(); + const handleNavigateTo = useNavigateToCallback(); const routeState = useIntraAppState(); const from: CreatePackagePolicyFrom = policyId ? 'policy' : 'package'; @@ -77,15 +77,13 @@ export const CreatePackagePolicyPage: React.FunctionComponent = () => { const [packageInfo, setPackageInfo] = useState(); const [isLoadingSecondStep, setIsLoadingSecondStep] = useState(false); - const agentPolicyId = agentPolicy?.id; // Retrieve agent count + const agentPolicyId = agentPolicy?.id; useEffect(() => { const getAgentCount = async () => { - if (agentPolicyId) { - const { data } = await sendGetAgentStatus({ policyId: agentPolicyId }); - if (data?.results.total) { - setAgentCount(data.results.total); - } + const { data } = await sendGetAgentStatus({ policyId: agentPolicyId }); + if (data?.results.total !== undefined) { + setAgentCount(data.results.total); } }; @@ -223,10 +221,10 @@ export const CreatePackagePolicyPage: React.FunctionComponent = () => { (ev) => { if (routeState && routeState.onCancelNavigateTo) { ev.preventDefault(); - navigateToApp(...routeState.onCancelNavigateTo); + handleNavigateTo(routeState.onCancelNavigateTo); } }, - [routeState, navigateToApp] + [routeState, handleNavigateTo] ); // Save package policy @@ -249,10 +247,10 @@ export const CreatePackagePolicyPage: React.FunctionComponent = () => { const { error, data } = await savePackagePolicy(); if (!error) { if (routeState && routeState.onSaveNavigateTo) { - navigateToApp( - ...(typeof routeState.onSaveNavigateTo === 'function' + handleNavigateTo( + typeof routeState.onSaveNavigateTo === 'function' ? routeState.onSaveNavigateTo(data!.item) - : routeState.onSaveNavigateTo) + : routeState.onSaveNavigateTo ); } else { history.push(getPath('policy_details', { policyId: agentPolicy?.id || policyId })); @@ -333,15 +331,20 @@ export const CreatePackagePolicyPage: React.FunctionComponent = () => { updatePackagePolicy={updatePackagePolicy} validationResults={validationResults!} /> - + + {/* Only show the out-of-box configuration step if a UI extension is NOT registered */} + {!ExtensionView && ( + + )} + {/* If an Agent Policy and a package has been selected, then show UI extension (if any) */} - {packagePolicy.policy_id && packagePolicy.package?.name && ExtensionView && ( + {ExtensionView && packagePolicy.policy_id && packagePolicy.package?.name && ( @@ -474,3 +477,29 @@ const IntegrationBreadcrumb: React.FunctionComponent<{ useBreadcrumbs('add_integration_to_policy', { pkgTitle, pkgkey }); return null; }; + +const useNavigateToCallback = () => { + const history = useHistory(); + const { + application: { navigateToApp }, + } = useStartServices(); + + return useCallback( + (navigateToProps: Parameters) => { + // If navigateTo appID is `fleet`, then don't use Kibana's navigateTo method, because that + // uses BrowserHistory but within fleet, we are using HashHistory. + // This temporary workaround hook can be removed once this issue is addressed: + // https://github.com/elastic/kibana/issues/70358 + if (navigateToProps[0] === PLUGIN_ID) { + const { path = '', state } = navigateToProps[1] || {}; + history.push({ + pathname: path.charAt(0) === '#' ? path.substr(1) : path, + state, + }); + } + + return navigateToApp(...navigateToProps); + }, + [history, navigateToApp] + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_configure_package.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_configure_package.tsx index 671bc829af82a8..e8c1ef6469925c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_configure_package.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_configure_package.tsx @@ -22,7 +22,6 @@ import { Loading } from '../../../components'; import { PackagePolicyValidationResults } from './services'; import { PackagePolicyInputPanel } from './components'; import { CreatePackagePolicyFrom } from './types'; -import { useUIExtension } from '../../../hooks/use_ui_extension'; const findStreamsForInputType = ( inputType: string, @@ -63,12 +62,6 @@ export const StepConfigurePackagePolicy: React.FunctionComponent<{ validationResults, submitAttempted, }) => { - const hasUiExtension = - useUIExtension( - packageInfo.name, - from === 'edit' ? 'package-policy-edit' : 'package-policy-create' - ) !== undefined; - // Configure inputs (and their streams) // Assume packages only export one config template for now const renderConfigureInputs = () => @@ -112,7 +105,7 @@ export const StepConfigurePackagePolicy: React.FunctionComponent<{ })} - ) : hasUiExtension ? null : ( + ) : ( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_select_agent_policy.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_select_agent_policy.tsx index 9c94bb939cdf8e..53463c14b9ce67 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_select_agent_policy.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/step_select_agent_policy.tsx @@ -3,7 +3,7 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, useMemo } from 'react'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -91,15 +91,13 @@ export const StepSelectAgentPolicy: React.FunctionComponent<{ sortOrder: 'asc', full: true, }); - // eslint-disable-next-line react-hooks/exhaustive-deps - const agentPolicies = agentPoliciesData?.items || []; - const agentPoliciesById = agentPolicies.reduce( - (acc: { [key: string]: GetAgentPoliciesResponseItem }, policy) => { + const agentPolicies = useMemo(() => agentPoliciesData?.items || [], [agentPoliciesData?.items]); + const agentPoliciesById = useMemo(() => { + return agentPolicies.reduce((acc: { [key: string]: GetAgentPoliciesResponseItem }, policy) => { acc[policy.id] = policy; return acc; - }, - {} - ); + }, {}); + }, [agentPolicies]); // Update parent package state useEffect(() => { @@ -132,21 +130,24 @@ export const StepSelectAgentPolicy: React.FunctionComponent<{ } }, [selectedPolicyId, agentPolicy, updateAgentPolicy, setIsLoadingSecondStep]); - // eslint-disable-next-line react-hooks/exhaustive-deps - const agentPolicyOptions: Array> = packageInfoData - ? agentPolicies.map((agentConf) => { - const alreadyHasLimitedPackage = - (isLimitedPackage && - doesAgentPolicyAlreadyIncludePackage(agentConf, packageInfoData.response.name)) || - false; - return { - label: agentConf.name, - value: agentConf.id, - disabled: alreadyHasLimitedPackage, - 'data-test-subj': 'agentPolicyItem', - }; - }) - : []; + const agentPolicyOptions: Array> = useMemo( + () => + packageInfoData + ? agentPolicies.map((agentConf) => { + const alreadyHasLimitedPackage = + (isLimitedPackage && + doesAgentPolicyAlreadyIncludePackage(agentConf, packageInfoData.response.name)) || + false; + return { + label: agentConf.name, + value: agentConf.id, + disabled: alreadyHasLimitedPackage, + 'data-test-subj': 'agentPolicyItem', + }; + }) + : [], + [agentPolicies, isLimitedPackage, packageInfoData] + ); const selectedAgentPolicyOption = agentPolicyOptions.find( (option) => option.value === selectedPolicyId @@ -246,7 +247,7 @@ export const StepSelectAgentPolicy: React.FunctionComponent<{ id="xpack.fleet.createPackagePolicy.StepSelectPolicy.agentPolicyAgentsDescriptionText" defaultMessage="{count, plural, one {# agent} other {# agents}} are enrolled with the selected agent policy." values={{ - count: agentPoliciesById[selectedPolicyId].agents || 0, + count: agentPoliciesById[selectedPolicyId]?.agents ?? 0, }} /> ) : null @@ -282,7 +283,7 @@ export const StepSelectAgentPolicy: React.FunctionComponent<{ id="xpack.fleet.createPackagePolicy.StepSelectPolicy.agentPolicyAgentsCountText" defaultMessage="{count, plural, one {# agent} other {# agents}} enrolled" values={{ - count: agentPoliciesById[option.value!].agents || 0, + count: agentPoliciesById[option.value!]?.agents ?? 0, }} /> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx index c0db51873e52ef..8f798445b2362f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.tsx @@ -244,6 +244,7 @@ export const EditPackagePolicyPage: React.FunctionComponent = () => { packagePolicyName: packagePolicy.name, }, }), + 'data-test-subj': 'policyUpdateSuccessToast', text: agentCount && agentPolicy ? i18n.translate('xpack.fleet.editPackagePolicy.updatedNotificationMessage', { @@ -305,20 +306,23 @@ export const EditPackagePolicyPage: React.FunctionComponent = () => { validationResults={validationResults!} /> - + {/* Only show the out-of-box configuration step if a UI extension is NOT registered */} + {!ExtensionView && ( + + )} - {packagePolicy.policy_id && + {ExtensionView && + packagePolicy.policy_id && packagePolicy.package?.name && - originalPackagePolicy && - ExtensionView && ( + originalPackagePolicy && ( { iconType="save" color="primary" fill + data-test-subj="saveIntegration" > = () => { }), width: '20%', render: (name: string, agentPolicy: AgentPolicy) => ( - - - - {name || agentPolicy.id} - - - - - - - - + + {name || agentPolicy.id} + ), }, { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx index 487eac6779dd55..2b1eb8e1ce984a 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/actions_menu.tsx @@ -73,7 +73,7 @@ export const AgentDetailsActionMenu: React.FunctionComponent<{ )} = memo(({ agent, agentPolicy }) => { - const { getHref } = useLink(); - const kibanaVersion = useKibanaVersion(); - return ( - - {[ - { - title: i18n.translate('xpack.fleet.agentDetails.hostNameLabel', { - defaultMessage: 'Host name', - }), - description: - typeof agent.local_metadata.host === 'object' && - typeof agent.local_metadata.host.hostname === 'string' - ? agent.local_metadata.host.hostname - : '-', - }, - { - title: i18n.translate('xpack.fleet.agentDetails.hostIdLabel', { - defaultMessage: 'Agent ID', - }), - description: agent.id, - }, - { - title: i18n.translate('xpack.fleet.agentDetails.statusLabel', { - defaultMessage: 'Status', - }), - description: , - }, - { - title: i18n.translate('xpack.fleet.agentDetails.agentPolicyLabel', { - defaultMessage: 'Agent policy', - }), - description: agentPolicy ? ( - - {agentPolicy.name || agent.policy_id} - - ) : ( - agent.policy_id || '-' - ), - }, - { - title: i18n.translate('xpack.fleet.agentDetails.versionLabel', { - defaultMessage: 'Agent version', - }), - description: - typeof agent.local_metadata.elastic === 'object' && - typeof agent.local_metadata.elastic.agent === 'object' && - typeof agent.local_metadata.elastic.agent.version === 'string' ? ( - - - {agent.local_metadata.elastic.agent.version} - - {isAgentUpgradeable(agent, kibanaVersion) ? ( - - - -   - - - - ) : null} - - ) : ( - '-' - ), - }, - { - title: i18n.translate('xpack.fleet.agentDetails.releaseLabel', { - defaultMessage: 'Agent release', - }), - description: - typeof agent.local_metadata.elastic === 'object' && - typeof agent.local_metadata.elastic.agent === 'object' && - typeof agent.local_metadata.elastic.agent.snapshot === 'boolean' - ? agent.local_metadata.elastic.agent.snapshot === true - ? 'snapshot' - : 'stable' - : '-', - }, - { - title: i18n.translate('xpack.fleet.agentDetails.platformLabel', { - defaultMessage: 'Platform', - }), - description: - typeof agent.local_metadata.os === 'object' && - typeof agent.local_metadata.os.platform === 'string' - ? agent.local_metadata.os.platform - : '-', - }, - ].map(({ title, description }) => { - return ( - - - {title} - - - {description} - - - ); - })} - - ); -}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx new file mode 100644 index 00000000000000..f89b8b53a18786 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { memo, useMemo } from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiLink, + EuiAccordion, + EuiTitle, + EuiToolTip, + EuiPanel, + EuiButtonIcon, + EuiBasicTable, + EuiBasicTableProps, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import styled from 'styled-components'; +import { Agent, AgentPolicy, PackagePolicy, PackagePolicyInput } from '../../../../../types'; +import { useLink } from '../../../../../hooks'; +import { PackageIcon } from '../../../../../components'; +import { displayInputType, getLogsQueryByInputType } from './input_type_utils'; + +const StyledEuiAccordion = styled(EuiAccordion)` + .ingest-integration-title-button { + padding: ${(props) => props.theme.eui.paddingSizes.m} + ${(props) => props.theme.eui.paddingSizes.m}; + } + + &.euiAccordion-isOpen .ingest-integration-title-button { + border-bottom: 1px solid ${(props) => props.theme.eui.euiColorLightShade}; + } + + .euiTableRow:last-child .euiTableRowCell { + border-bottom: none; + } +`; + +const CollapsablePanel: React.FC<{ id: string; title: React.ReactNode }> = ({ + id, + title, + children, +}) => { + return ( + + + {children} + + + ); +}; + +export const AgentDetailsIntegration: React.FunctionComponent<{ + agent: Agent; + agentPolicy: AgentPolicy; + packagePolicy: PackagePolicy; +}> = memo(({ agent, agentPolicy, packagePolicy }) => { + const { getHref } = useLink(); + + const inputs = useMemo(() => { + return packagePolicy.inputs.filter((input) => input.enabled); + }, [packagePolicy.inputs]); + + const columns: EuiBasicTableProps['columns'] = [ + { + field: 'type', + width: '100%', + name: i18n.translate('xpack.fleet.agentDetailsIntegrations.inputTypeLabel', { + defaultMessage: 'Input', + }), + render: (inputType: string) => { + return displayInputType(inputType); + }, + }, + { + align: 'right', + name: i18n.translate('xpack.fleet.agentDetailsIntegrations.actionsLabel', { + defaultMessage: 'Actions', + }), + field: 'type', + width: 'auto', + render: (inputType: string) => { + return ( + + + + ); + }, + }, + ]; + + return ( + +

    + + + {packagePolicy.package ? ( + + ) : ( + + )} + + + + {packagePolicy.name} + + + +

    + + } + > + tableLayout="auto" items={inputs} columns={columns} /> +
    + ); +}); + +export const AgentDetailsIntegrationsSection: React.FunctionComponent<{ + agent: Agent; + agentPolicy?: AgentPolicy; +}> = memo(({ agent, agentPolicy }) => { + if (!agentPolicy || !agentPolicy.package_policies) { + return null; + } + + return ( + + {(agentPolicy.package_policies as PackagePolicy[]).map((packagePolicy) => { + return ( + + + + ); + })} + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx new file mode 100644 index 00000000000000..81195bdeaa9e26 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_overview.tsx @@ -0,0 +1,179 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { memo } from 'react'; +import { + EuiDescriptionList, + EuiDescriptionListTitle, + EuiDescriptionListDescription, + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiIcon, + EuiToolTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { Agent, AgentPolicy } from '../../../../../types'; +import { useKibanaVersion, useLink } from '../../../../../hooks'; +import { isAgentUpgradeable } from '../../../../../services'; +import { AgentPolicyPackageBadges } from '../../../components/agent_policy_package_badges'; +import { LinkAndRevision } from '../../../../../components'; + +export const AgentDetailsOverviewSection: React.FunctionComponent<{ + agent: Agent; + agentPolicy?: AgentPolicy; +}> = memo(({ agent, agentPolicy }) => { + const { getHref } = useLink(); + const kibanaVersion = useKibanaVersion(); + return ( + + + {[ + { + title: i18n.translate('xpack.fleet.agentDetails.hostIdLabel', { + defaultMessage: 'Agent ID', + }), + description: agent.id, + }, + { + title: i18n.translate('xpack.fleet.agentDetails.agentPolicyLabel', { + defaultMessage: 'Agent policy', + }), + description: agentPolicy ? ( + + {agentPolicy.name || agentPolicy.id} + + ) : ( + agent.policy_id || '-' + ), + }, + { + title: i18n.translate('xpack.fleet.agentDetails.versionLabel', { + defaultMessage: 'Agent version', + }), + description: + typeof agent.local_metadata?.elastic?.agent?.version === 'string' ? ( + + + {agent.local_metadata.elastic.agent.version} + + {isAgentUpgradeable(agent, kibanaVersion) ? ( + + + + + + ) : null} + + ) : ( + '-' + ), + }, + { + title: i18n.translate('xpack.fleet.agentDetails.integrationsLabel', { + defaultMessage: 'Integrations', + }), + description: agent.policy_id ? ( + + ) : null, + }, + { + title: i18n.translate('xpack.fleet.agentDetails.hostNameLabel', { + defaultMessage: 'Host name', + }), + description: + typeof agent.local_metadata?.host?.hostname === 'string' + ? agent.local_metadata.host.hostname + : '-', + }, + { + title: i18n.translate('xpack.fleet.agentDetails.logLevel', { + defaultMessage: 'Logging level', + }), + description: + typeof agent.local_metadata?.elastic?.agent?.log_level === 'string' + ? agent.local_metadata.elastic.agent.log_level + : '-', + }, + { + title: i18n.translate('xpack.fleet.agentDetails.releaseLabel', { + defaultMessage: 'Agent release', + }), + description: + typeof agent.local_metadata?.elastic?.agent?.snapshot === 'boolean' + ? agent.local_metadata.elastic.agent.snapshot === true + ? 'snapshot' + : 'stable' + : '-', + }, + { + title: i18n.translate('xpack.fleet.agentDetails.platformLabel', { + defaultMessage: 'Platform', + }), + description: + typeof agent.local_metadata?.os?.platform === 'string' + ? agent.local_metadata.os.platform + : '-', + }, + { + title: i18n.translate('xpack.fleet.agentDetails.monitorLogsLabel', { + defaultMessage: 'Monitor logs', + }), + description: agentPolicy?.monitoring_enabled?.includes('logs') ? ( + + ) : ( + + ), + }, + { + title: i18n.translate('xpack.fleet.agentDetails.monitorMetricsLabel', { + defaultMessage: 'Monitor metrics', + }), + description: agentPolicy?.monitoring_enabled?.includes('metrics') ? ( + + ) : ( + + ), + }, + ].map(({ title, description }) => { + return ( + + + + {title} + + + {description} + + + + ); + })} + + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/index.tsx new file mode 100644 index 00000000000000..0b83fb4cc64e1b --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/index.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { memo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiSpacer } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { Agent, AgentPolicy } from '../../../../../types'; +import { AgentDetailsOverviewSection } from './agent_details_overview'; +import { AgentDetailsIntegrationsSection } from './agent_details_integrations'; + +export const AgentDetailsContent: React.FunctionComponent<{ + agent: Agent; + agentPolicy?: AgentPolicy; +}> = memo(({ agent, agentPolicy }) => { + return ( + <> + + + +

    + +

    +
    + + +
    + + +

    + +

    +
    + + +
    +
    + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/input_type_utils.ts b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/input_type_utils.ts new file mode 100644 index 00000000000000..62b7a294e1750f --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/input_type_utils.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { + STATE_DATASET_FIELD, + AGENT_DATASET_FILEBEAT, + AGENT_DATASET_METRICBEAT, +} from '../agent_logs/constants'; + +export function displayInputType(inputType: string): string { + if (inputType === 'logfile') { + return i18n.translate('xpack.fleet.agentDetailsIntegrations.inputTypeLogText', { + defaultMessage: 'Logs', + }); + } + if (inputType === 'endpoint') { + return i18n.translate('xpack.fleet.agentDetailsIntegrations.inputTypeEndpointText', { + defaultMessage: 'Endpoint', + }); + } + if (inputType.match(/\/metrics$/)) { + return i18n.translate('xpack.fleet.agentDetailsIntegrations.inputTypeMetricsText', { + defaultMessage: 'Metrics', + }); + } + + return inputType; +} + +export function getLogsQueryByInputType(inputType: string) { + if (inputType === 'logfile') { + return `(${STATE_DATASET_FIELD}:!(${AGENT_DATASET_FILEBEAT}))`; + } + if (inputType.match(/\/metrics$/)) { + return `(${STATE_DATASET_FIELD}:!(${AGENT_DATASET_METRICBEAT}))`; + } + + return ''; +} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx new file mode 100644 index 00000000000000..00deeff89503fc --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx @@ -0,0 +1,278 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { memo, useMemo, useState, useCallback, useEffect } from 'react'; +import styled from 'styled-components'; +import url from 'url'; +import { encode } from 'rison-node'; +import { stringify } from 'query-string'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiSuperDatePicker, + EuiFilterGroup, + EuiPanel, + EuiButtonEmpty, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; +import semverGte from 'semver/functions/gte'; +import semverCoerce from 'semver/functions/coerce'; +import { createStateContainerReactHelpers } from '../../../../../../../../../../../src/plugins/kibana_utils/public'; +import { RedirectAppLinks } from '../../../../../../../../../../../src/plugins/kibana_react/public'; +import { TimeRange, esKuery } from '../../../../../../../../../../../src/plugins/data/public'; +import { LogStream } from '../../../../../../../../../infra/public'; +import { Agent } from '../../../../../types'; +import { useStartServices } from '../../../../../hooks'; +import { DEFAULT_DATE_RANGE } from './constants'; +import { DatasetFilter } from './filter_dataset'; +import { LogLevelFilter } from './filter_log_level'; +import { LogQueryBar } from './query_bar'; +import { buildQuery } from './build_query'; +import { SelectLogLevel } from './select_log_level'; + +const WrapperFlexGroup = styled(EuiFlexGroup)` + height: 100%; +`; + +const DatePickerFlexItem = styled(EuiFlexItem)` + max-width: 312px; +`; + +export interface AgentLogsProps { + agent: Agent; + state: AgentLogsState; +} + +export interface AgentLogsState { + start: string; + end: string; + logLevels: string[]; + datasets: string[]; + query: string; +} + +export const AgentLogsUrlStateHelper = createStateContainerReactHelpers(); + +export const AgentLogsUI: React.FunctionComponent = memo(({ agent, state }) => { + const { data, application, http } = useStartServices(); + const { update: updateState } = AgentLogsUrlStateHelper.useTransitions(); + + // Util to convert date expressions (returned by datepicker) to timestamps (used by LogStream) + const getDateRangeTimestamps = useCallback( + (timeRange: TimeRange) => { + const { min, max } = data.query.timefilter.timefilter.calculateBounds(timeRange); + return min && max + ? { + start: min.valueOf(), + end: max.valueOf(), + } + : undefined; + }, + [data.query.timefilter.timefilter] + ); + + const tryUpdateDateRange = useCallback( + (timeRange: TimeRange) => { + const timestamps = getDateRangeTimestamps(timeRange); + if (timestamps) { + updateState({ + start: timeRange.from, + end: timeRange.to, + }); + } + }, + [getDateRangeTimestamps, updateState] + ); + + const [dateRangeTimestamps, setDateRangeTimestamps] = useState<{ start: number; end: number }>( + getDateRangeTimestamps({ + from: state.start, + to: state.end, + }) || + getDateRangeTimestamps({ + from: DEFAULT_DATE_RANGE.start, + to: DEFAULT_DATE_RANGE.end, + })! + ); + + // Attempts to parse for timestamps when start/end date expressions change + // If invalid date expressions, set expressions back to default + // Otherwise set the new timestamps + useEffect(() => { + const timestampsFromDateRange = getDateRangeTimestamps({ + from: state.start, + to: state.end, + }); + if (!timestampsFromDateRange) { + tryUpdateDateRange({ + from: DEFAULT_DATE_RANGE.start, + to: DEFAULT_DATE_RANGE.end, + }); + } else { + setDateRangeTimestamps(timestampsFromDateRange); + } + }, [state.start, state.end, getDateRangeTimestamps, tryUpdateDateRange]); + + // Query validation helper + const isQueryValid = useCallback((testQuery: string) => { + try { + esKuery.fromKueryExpression(testQuery); + return true; + } catch (err) { + return false; + } + }, []); + + // User query state + const [draftQuery, setDraftQuery] = useState(state.query); + const [isDraftQueryValid, setIsDraftQueryValid] = useState(isQueryValid(state.query)); + const onUpdateDraftQuery = useCallback( + (newDraftQuery: string, runQuery?: boolean) => { + setDraftQuery(newDraftQuery); + if (isQueryValid(newDraftQuery)) { + setIsDraftQueryValid(true); + if (runQuery) { + updateState({ query: newDraftQuery }); + } + } else { + setIsDraftQueryValid(false); + } + }, + [isQueryValid, updateState] + ); + + // Build final log stream query from agent id, datasets, log levels, and user input + const logStreamQuery = useMemo( + () => + buildQuery({ + agentId: agent.id, + datasets: state.datasets, + logLevels: state.logLevels, + userQuery: state.query, + }), + [agent.id, state.datasets, state.logLevels, state.query] + ); + + // Generate URL to pass page state to Logs UI + const viewInLogsUrl = useMemo( + () => + http.basePath.prepend( + url.format({ + pathname: '/app/logs/stream', + search: stringify( + { + logPosition: encode({ + start: state.start, + end: state.end, + streamLive: false, + }), + logFilter: encode({ + expression: logStreamQuery, + kind: 'kuery', + }), + }, + { sort: false, encode: false } + ), + }) + ), + [http.basePath, state.start, state.end, logStreamQuery] + ); + + const agentVersion = agent.local_metadata?.elastic?.agent?.version; + const isLogLevelSelectionAvailable = useMemo(() => { + if (!agentVersion) { + return false; + } + const agentVersionWithPrerelease = semverCoerce(agentVersion)?.version; + if (!agentVersionWithPrerelease) { + return false; + } + return semverGte(agentVersionWithPrerelease, '7.11.0'); + }, [agentVersion]); + + return ( + + + + + + + + + { + const currentDatasets = [...state.datasets]; + const datasetPosition = currentDatasets.indexOf(dataset); + if (datasetPosition >= 0) { + currentDatasets.splice(datasetPosition, 1); + updateState({ datasets: currentDatasets }); + } else { + updateState({ datasets: [...state.datasets, dataset] }); + } + }} + /> + { + const currentLevels = [...state.logLevels]; + const levelPosition = currentLevels.indexOf(level); + if (levelPosition >= 0) { + currentLevels.splice(levelPosition, 1); + updateState({ logLevels: currentLevels }); + } else { + updateState({ logLevels: [...state.logLevels, level] }); + } + }} + /> + + + + { + tryUpdateDateRange({ + from: start, + to: end, + }); + }} + /> + + + + + + + + + + + + + + + + {isLogLevelSelectionAvailable && ( + + + + )} + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/constants.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/constants.tsx index b56e27356ef342..4ee1618a385849 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/constants.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/constants.tsx @@ -3,8 +3,12 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ +import { AgentLogsState } from './agent_logs'; + export const AGENT_LOG_INDEX_PATTERN = 'logs-elastic_agent-*,logs-elastic_agent.*-*'; export const AGENT_DATASET = 'elastic_agent'; +export const AGENT_DATASET_FILEBEAT = 'elastic_agent.filebeat'; +export const AGENT_DATASET_METRICBEAT = 'elastic_agent.metricbeat'; export const AGENT_DATASET_PATTERN = 'elastic_agent.*'; export const AGENT_ID_FIELD = { name: 'elastic_agent.id', @@ -24,3 +28,23 @@ export const DEFAULT_DATE_RANGE = { start: 'now-1d', end: 'now', }; +export const DEFAULT_LOGS_STATE: AgentLogsState = { + start: DEFAULT_DATE_RANGE.start, + end: DEFAULT_DATE_RANGE.end, + logLevels: [], + datasets: [AGENT_DATASET], + query: '', +}; + +export const STATE_DATASET_FIELD = 'datasets'; + +export const AGENT_LOG_LEVELS = { + ERROR: 'error', + WARNING: 'warning', + INFO: 'info', + DEBUG: 'debug', +}; + +export const ORDERED_FILTER_LOG_LEVELS = ['error', 'warning', 'warn', 'notice', 'info', 'debug']; + +export const DEFAULT_LOG_LEVEL = AGENT_LOG_LEVELS.INFO; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/filter_log_level.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/filter_log_level.tsx index b034168dc8a15e..6aee9e065a96de 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/filter_log_level.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/filter_log_level.tsx @@ -6,8 +6,19 @@ import React, { memo, useState, useEffect } from 'react'; import { EuiPopover, EuiFilterButton, EuiFilterSelectItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { ORDERED_FILTER_LOG_LEVELS, AGENT_LOG_INDEX_PATTERN, LOG_LEVEL_FIELD } from './constants'; import { useStartServices } from '../../../../../hooks'; -import { AGENT_LOG_INDEX_PATTERN, LOG_LEVEL_FIELD } from './constants'; + +function sortLogLevels(levels: string[]): string[] { + return [ + ...new Set([ + // order by severity for known level + ...ORDERED_FILTER_LOG_LEVELS.filter((level) => levels.includes(level)), + // Add unknown log level + ...levels.sort(), + ]), + ]; +} export const LogLevelFilter: React.FunctionComponent<{ selectedLevels: string[]; @@ -22,7 +33,7 @@ export const LogLevelFilter: React.FunctionComponent<{ const fetchValues = async () => { setIsLoading(true); try { - const values = await data.autocomplete.getValueSuggestions({ + const values: string[] = await data.autocomplete.getValueSuggestions({ indexPattern: { title: AGENT_LOG_INDEX_PATTERN, fields: [LOG_LEVEL_FIELD], @@ -30,7 +41,7 @@ export const LogLevelFilter: React.FunctionComponent<{ field: LOG_LEVEL_FIELD, query: '', }); - setLevelValues(values.sort()); + setLevelValues(sortLogLevels(values)); } catch (e) { setLevelValues([]); } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx index e033781a850a02..0d888a88ec2cb2 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/index.tsx @@ -3,216 +3,63 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { memo, useMemo, useState, useCallback } from 'react'; -import styled from 'styled-components'; -import url from 'url'; -import { encode } from 'rison-node'; -import { stringify } from 'query-string'; +import React, { memo, useEffect, useState } from 'react'; import { - EuiFlexGroup, - EuiFlexItem, - EuiSuperDatePicker, - EuiFilterGroup, - EuiPanel, - EuiButtonEmpty, -} from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { RedirectAppLinks } from '../../../../../../../../../../../src/plugins/kibana_react/public'; -import { TimeRange, esKuery } from '../../../../../../../../../../../src/plugins/data/public'; -import { LogStream } from '../../../../../../../../../infra/public'; -import { Agent } from '../../../../../types'; -import { useStartServices } from '../../../../../hooks'; -import { AGENT_DATASET, DEFAULT_DATE_RANGE } from './constants'; -import { DatasetFilter } from './filter_dataset'; -import { LogLevelFilter } from './filter_log_level'; -import { LogQueryBar } from './query_bar'; -import { buildQuery } from './build_query'; + createStateContainer, + syncState, + createKbnUrlStateStorage, + INullableBaseStateContainer, + PureTransition, + getStateFromKbnUrl, +} from '../../../../../../../../../../../src/plugins/kibana_utils/public'; +import { DEFAULT_LOGS_STATE } from './constants'; +import { AgentLogsUI, AgentLogsProps, AgentLogsState, AgentLogsUrlStateHelper } from './agent_logs'; -const WrapperFlexGroup = styled(EuiFlexGroup)` - height: 100%; -`; +const stateStorageKey = '_q'; -const DatePickerFlexItem = styled(EuiFlexItem)` - max-width: 312px; -`; +const stateContainer = createStateContainer< + AgentLogsState, + { + update: PureTransition]>; + } +>( + { + ...DEFAULT_LOGS_STATE, + ...getStateFromKbnUrl(stateStorageKey, window.location.href), + }, + { + update: (state) => (updatedState) => ({ ...state, ...updatedState }), + } +); -export const AgentLogs: React.FunctionComponent<{ agent: Agent }> = memo(({ agent }) => { - const { data, application, http } = useStartServices(); +const AgentLogsConnected = AgentLogsUrlStateHelper.connect((state) => ({ + state: state || DEFAULT_LOGS_STATE, +}))(AgentLogsUI); - // Util to convert date expressions (returned by datepicker) to timestamps (used by LogStream) - const getDateRangeTimestamps = useCallback( - (timeRange: TimeRange) => { - const { min, max } = data.query.timefilter.timefilter.calculateBounds(timeRange); - return min && max - ? { - startTimestamp: min.valueOf(), - endTimestamp: max.valueOf(), - } - : undefined; - }, - [data.query.timefilter.timefilter] - ); +export const AgentLogs: React.FunctionComponent> = memo( + ({ agent }) => { + const [isSyncReady, setIsSyncReady] = useState(false); - // Initial time range filter - const [dateRange, setDateRange] = useState<{ - startExpression: string; - endExpression: string; - startTimestamp: number; - endTimestamp: number; - }>({ - startExpression: DEFAULT_DATE_RANGE.start, - endExpression: DEFAULT_DATE_RANGE.end, - ...getDateRangeTimestamps({ from: DEFAULT_DATE_RANGE.start, to: DEFAULT_DATE_RANGE.end })!, - }); + useEffect(() => { + const stateStorage = createKbnUrlStateStorage(); + const { start, stop } = syncState({ + storageKey: stateStorageKey, + stateContainer: stateContainer as INullableBaseStateContainer, + stateStorage, + }); + start(); + setIsSyncReady(true); - const tryUpdateDateRange = useCallback( - (timeRange: TimeRange) => { - const timestamps = getDateRangeTimestamps(timeRange); - if (timestamps) { - setDateRange({ - startExpression: timeRange.from, - endExpression: timeRange.to, - ...timestamps, - }); - } - }, - [getDateRangeTimestamps] - ); + return () => { + stop(); + stateContainer.set(DEFAULT_LOGS_STATE); + }; + }, []); - // Filters - const [selectedLogLevels, setSelectedLogLevels] = useState([]); - const [selectedDatasets, setSelectedDatasets] = useState([AGENT_DATASET]); - - // User query state - const [query, setQuery] = useState(''); - const [draftQuery, setDraftQuery] = useState(''); - const [isDraftQueryValid, setIsDraftQueryValid] = useState(true); - const onUpdateDraftQuery = useCallback((newDraftQuery: string, runQuery?: boolean) => { - setDraftQuery(newDraftQuery); - try { - esKuery.fromKueryExpression(newDraftQuery); - setIsDraftQueryValid(true); - if (runQuery) { - setQuery(newDraftQuery); - } - } catch (err) { - setIsDraftQueryValid(false); - } - }, []); - - // Build final log stream query from agent id, datasets, log levels, and user input - const logStreamQuery = useMemo( - () => - buildQuery({ - agentId: agent.id, - datasets: selectedDatasets, - logLevels: selectedLogLevels, - userQuery: query, - }), - [agent.id, query, selectedDatasets, selectedLogLevels] - ); - - // Generate URL to pass page state to Logs UI - const viewInLogsUrl = useMemo( - () => - http.basePath.prepend( - url.format({ - pathname: '/app/logs/stream', - search: stringify( - { - logPosition: encode({ - start: dateRange.startExpression, - end: dateRange.endExpression, - streamLive: false, - }), - logFilter: encode({ - expression: logStreamQuery, - kind: 'kuery', - }), - }, - { sort: false, encode: false } - ), - }) - ), - [logStreamQuery, dateRange.endExpression, dateRange.startExpression, http.basePath] - ); - - return ( - - - - - - - - - { - const currentLevels = [...selectedDatasets]; - const levelPosition = currentLevels.indexOf(level); - if (levelPosition >= 0) { - currentLevels.splice(levelPosition, 1); - setSelectedDatasets(currentLevels); - } else { - setSelectedDatasets([...selectedDatasets, level]); - } - }} - /> - { - const currentLevels = [...selectedLogLevels]; - const levelPosition = currentLevels.indexOf(level); - if (levelPosition >= 0) { - currentLevels.splice(levelPosition, 1); - setSelectedLogLevels(currentLevels); - } else { - setSelectedLogLevels([...selectedLogLevels, level]); - } - }} - /> - - - - { - tryUpdateDateRange({ - from: start, - to: end, - }); - }} - /> - - - - - - - - - - - - - - - - - ); -}); + return ( + + {isSyncReady ? : null} + + ); + } +); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx index ae2385d7142192..ab9e7cafb7c011 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx @@ -47,6 +47,8 @@ export const LogQueryBar: React.FunctionComponent<{ return ( = memo(({ agent }) => { + const { notifications } = useStartServices(); + const [isLoading, setIsLoading] = useState(false); + const [agentLogLevel, setAgentLogLevel] = useState( + agent.local_metadata?.elastic?.agent?.log_level ?? DEFAULT_LOG_LEVEL + ); + const [selectedLogLevel, setSelectedLogLevel] = useState(agentLogLevel); + + const onClickApply = useCallback(() => { + setIsLoading(true); + async function send() { + try { + const res = await sendPostAgentAction(agent.id, { + action: { + type: 'SETTINGS', + data: { + log_level: selectedLogLevel, + }, + }, + }); + if (res.error) { + throw res.error; + } + setAgentLogLevel(selectedLogLevel); + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.agentLogs.selectLogLevel.successText', { + defaultMessage: `Changed agent logging level to '{logLevel}'.`, + values: { + logLevel: selectedLogLevel, + }, + }) + ); + } catch (error) { + notifications.toasts.addError(error, { + title: i18n.translate('xpack.fleet.agentLogs.selectLogLevel.errorTitleText', { + defaultMessage: 'Error updating agent logging level', + }), + }); + } + setIsLoading(false); + } + + send(); + }, [notifications, selectedLogLevel, agent.id]); + + return ( + + + + + + + + { + setSelectedLogLevel(event.target.value); + }} + options={LEVEL_VALUES.map((level) => ({ text: level, value: level }))} + /> + + {agentLogLevel !== selectedLogLevel && ( + + + {isLoading ? ( + + ) : ( + + )} + + + )} + + ); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/index.tsx index f3714bbb532236..34893dccd93a4a 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/index.tsx @@ -5,7 +5,6 @@ */ import React, { useMemo, useCallback } from 'react'; import { useRouteMatch, Switch, Route, useLocation } from 'react-router-dom'; -import styled from 'styled-components'; import { EuiFlexGroup, EuiFlexItem, @@ -17,7 +16,7 @@ import { EuiDescriptionListDescription, } from '@elastic/eui'; import { Props as EuiTabProps } from '@elastic/eui/src/components/tabs/tab'; -import { FormattedMessage } from '@kbn/i18n/react'; +import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { EuiIconTip } from '@elastic/eui'; import { Agent, AgentPolicy, AgentDetailsReassignPolicyAction } from '../../../types'; @@ -38,12 +37,6 @@ import { AgentLogs, AgentDetailsActionMenu, AgentDetailsContent } from './compon import { useIntraAppState } from '../../../hooks/use_intra_app_state'; import { isAgentUpgradeable } from '../../../services'; -const Divider = styled.div` - width: 0; - height: 100%; - border-left: ${(props) => props.theme.eui.euiBorderThin}; -`; - export const AgentDetailsPage: React.FunctionComponent = () => { const { params: { agentId, tabId = '' }, @@ -78,6 +71,8 @@ export const AgentDetailsPage: React.FunctionComponent = () => { } }, [routeState, navigateToApp]); + const host = agentData?.item?.local_metadata?.host; + const headerLeftContent = useMemo( () => ( @@ -99,9 +94,8 @@ export const AgentDetailsPage: React.FunctionComponent = () => {

    {isLoading && isInitialRequest ? ( - ) : typeof agentData?.item?.local_metadata?.host === 'object' && - typeof agentData?.item?.local_metadata?.host?.hostname === 'string' ? ( - agentData.item.local_metadata.host.hostname + ) : typeof host === 'object' && typeof host?.hostname === 'string' ? ( + host.hostname ) : ( { ), - [agentData?.item?.local_metadata?.host, agentId, getHref, isInitialRequest, isLoading] + [host, agentId, getHref, isInitialRequest, isLoading] ); const headerRightContent = useMemo( () => agentData && agentData.item ? ( - + {[ { label: i18n.translate('xpack.fleet.agentDetails.statusLabel', { @@ -130,7 +124,16 @@ export const AgentDetailsPage: React.FunctionComponent = () => { }), content: , }, - { isDivider: true }, + { + label: i18n.translate('xpack.fleet.agentDetails.lastActivityLabel', { + defaultMessage: 'Last activity', + }), + content: agentData.item.last_checkin ? ( + + ) : ( + '-' + ), + }, { label: i18n.translate('xpack.fleet.agentDetails.policyLabel', { defaultMessage: 'Policy', @@ -148,7 +151,6 @@ export const AgentDetailsPage: React.FunctionComponent = () => { agentData.item.policy_id || '-' ), }, - { isDivider: true }, { label: i18n.translate('xpack.fleet.agentDetails.agentVersionLabel', { defaultMessage: 'Agent version', @@ -187,7 +189,6 @@ export const AgentDetailsPage: React.FunctionComponent = () => { '-' ), }, - { isDivider: true }, { content: ( { }, ].map((item, index) => ( - {item.isDivider ?? false ? ( - - ) : item.label ? ( - + {item.label ? ( + {item.label} {item.content} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_health.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_health.tsx index 45017ac8532da7..40d91f13db6590 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_health.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_health.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; import { FormattedMessage, FormattedRelative } from '@kbn/i18n/react'; -import { EuiHealth, EuiToolTip } from '@elastic/eui'; +import { EuiBadge, EuiToolTip } from '@elastic/eui'; import { Agent } from '../../../types'; interface Props { @@ -13,79 +13,52 @@ interface Props { } const Status = { - Online: ( - - - + Healthy: ( + + + ), Offline: ( - + - + ), Inactive: ( - - - - ), - Warning: ( - - - - ), - Error: ( - - - - ), - Degraded: ( - - - - ), - Enrolling: ( - - - + + + ), - Unenrolling: ( - + Unhealthy: ( + - + ), - Upgrading: ( - + Updating: ( + - + ), }; function getStatusComponent(agent: Agent): React.ReactElement { switch (agent.status) { + case 'warning': case 'error': - return Status.Error; case 'degraded': - return Status.Degraded; + return Status.Unhealthy; case 'inactive': return Status.Inactive; case 'offline': return Status.Offline; - case 'warning': - return Status.Warning; case 'unenrolling': - return Status.Unenrolling; case 'enrolling': - return Status.Enrolling; case 'updating': - return Status.Upgrading; + return Status.Updating; default: - return Status.Online; + return Status.Healthy; } } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_policy_package_badges.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_policy_package_badges.tsx index 08835cc872b82a..ff8e4868b1fdf8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_policy_package_badges.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_policy_package_badges.tsx @@ -3,53 +3,74 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiSpacer, EuiText, EuiFlexGroup, EuiFlexItem, EuiBadge } from '@elastic/eui'; -import { PackagePolicy } from '../../../types'; +import { PackagePolicy, PackagePolicyPackage } from '../../../types'; import { useGetOneAgentPolicy } from '../../../hooks'; import { PackageIcon } from '../../../components/package_icon'; interface Props { agentPolicyId: string; + hideTitle?: boolean; } -export const AgentPolicyPackageBadges: React.FunctionComponent = ({ agentPolicyId }) => { +export const AgentPolicyPackageBadges: React.FunctionComponent = ({ + agentPolicyId, + hideTitle, +}) => { const agentPolicyRequest = useGetOneAgentPolicy(agentPolicyId); const agentPolicy = agentPolicyRequest.data ? agentPolicyRequest.data.item : null; - if (!agentPolicy) { + const packages = useMemo(() => { + if (!agentPolicy) { + return; + } + + const uniquePackages = new Map(); + + (agentPolicy.package_policies as PackagePolicy[]).forEach(({ package: pkg }) => { + if (!pkg) { + return; + } + + if (!uniquePackages.has(pkg.name) || uniquePackages.get(pkg.name)!.version < pkg.version) { + uniquePackages.set(pkg.name, pkg); + } + }); + + return [...uniquePackages.values()]; + }, [agentPolicy]); + + if (!agentPolicy || !packages) { return null; } + return ( <> - - {agentPolicy.package_policies.length}, - }} - /> - - - {(agentPolicy.package_policies as PackagePolicy[]).map((packagePolicy, idx) => { - if (!packagePolicy.package) { - return null; - } + {!hideTitle && ( + <> + + {packages.length}, + }} + /> + + + + )} + {packages.map((pkg, idx) => { return ( - + - {packagePolicy.package.title} + {pkg.title} ); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/components/new_enrollment_key_flyout.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/components/new_enrollment_key_flyout.tsx index ed607e361bd6e5..d9aeba23726729 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/components/new_enrollment_key_flyout.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/components/new_enrollment_key_flyout.tsx @@ -46,6 +46,9 @@ function useCreateApiKeyForm( policy_id: policyIdInput.value, }), }); + if (res.error) { + throw res.error; + } policyIdInput.clear(); apiKeyNameInput.clear(); setIsLoading(false); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/components/requirements.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/components/requirements.tsx index 3d6cd2bc61e72d..a2529159f32f73 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/components/requirements.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/components/requirements.tsx @@ -7,7 +7,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiText, EuiTextColor, EuiTitle } from '@elastic/eui'; import React, { Fragment } from 'react'; import styled from 'styled-components'; -import { RequirementsByServiceName, entries } from '../../../types'; +import { RequirementsByServiceName, ServiceName, entries } from '../../../types'; import { ServiceTitleMap } from '../constants'; import { Version } from './version'; @@ -23,6 +23,14 @@ const StyledVersion = styled(Version)` font-size: ${(props) => props.theme.eui.euiFontSizeXS}; `; +// both our custom `entries` and this type seem unnecessary & duplicate effort but they work for now +type RequirementEntry = [ + Extract, + { + version: string; + } +]; + export function Requirements(props: RequirementsProps) { const { requirements } = props; @@ -40,7 +48,7 @@ export function Requirements(props: RequirementsProps) { - {entries(requirements).map(([service, requirement]) => ( + {entries(requirements).map(([service, requirement]: RequirementEntry) => ( @@ -48,7 +56,7 @@ export function Requirements(props: RequirementsProps) { - + ))} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/constants.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/constants.tsx index 1dad25e9cf0595..fe5390e75f6a1a 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/constants.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/constants.tsx @@ -29,8 +29,7 @@ export const AssetTitleMap: Record = { map: 'Map', }; -export const ServiceTitleMap: Record = { - elasticsearch: 'Elasticsearch', +export const ServiceTitleMap: Record, string> = { kibana: 'Kibana', }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/hooks/use_links.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/hooks/use_links.tsx index 3d2babae8eb2ea..5299f4f9be8bc1 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/hooks/use_links.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/hooks/use_links.tsx @@ -6,6 +6,7 @@ import { useStartServices } from '../../../hooks/use_core'; import { PLUGIN_ID } from '../../../constants'; import { epmRouteService } from '../../../services'; +import { PackageSpecIcon, PackageSpecScreenshot, RegistryImage } from '../../../../../../common'; const removeRelativePath = (relativePath: string): string => new URL(relativePath, 'http://example.com').pathname; @@ -14,7 +15,19 @@ export function useLinks() { const { http } = useStartServices(); return { toAssets: (path: string) => http.basePath.prepend(`/plugins/${PLUGIN_ID}/assets/${path}`), - toImage: (path: string) => http.basePath.prepend(epmRouteService.getFilePath(path)), + toPackageImage: ( + img: PackageSpecIcon | PackageSpecScreenshot | RegistryImage, + pkgName: string, + pkgVersion: string + ): string | undefined => { + const sourcePath = img.src + ? `/package/${pkgName}/${pkgVersion}${img.src}` + : 'path' in img && img.path; + if (sourcePath) { + const filePath = epmRouteService.getFilePath(sourcePath); + return http.basePath.prepend(filePath); + } + }, toRelativeImage: ({ path, packageName, diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/index.tsx index b605b882bc82cd..8884d1f9d7a758 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/index.tsx @@ -5,7 +5,7 @@ */ import React from 'react'; -import { HashRouter as Router, Switch, Route } from 'react-router-dom'; +import { Switch, Route } from 'react-router-dom'; import { PAGE_ROUTING_PATHS } from '../../constants'; import { useBreadcrumbs } from '../../hooks'; import { CreatePackagePolicyPage } from '../agent_policy/create_package_policy_page'; @@ -16,18 +16,16 @@ export const EPMApp: React.FunctionComponent = () => { useBreadcrumbs('integrations'); return ( - - - - - - - - - - - - - + + + + + + + + + + + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/content.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/content.tsx index 40346cde7f50ff..b19a82d3100c53 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/content.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/content.tsx @@ -7,6 +7,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import React from 'react'; import styled from 'styled-components'; +import { Redirect } from 'react-router-dom'; import { DetailParams } from '.'; import { PackageInfo } from '../../../../types'; import { AssetsFacetGroup } from '../../components/assets_facet_group'; @@ -14,10 +15,13 @@ import { CenterColumn, LeftColumn, RightColumn } from './layout'; import { OverviewPanel } from './overview_panel'; import { PackagePoliciesPanel } from './package_policies_panel'; import { SettingsPanel } from './settings_panel'; +import { useUIExtension } from '../../../../hooks/use_ui_extension'; +import { ExtensionWrapper } from '../../../../components/extension_wrapper'; +import { useLink } from '../../../../hooks'; type ContentProps = PackageInfo & Pick; -const SideNavColumn = styled(LeftColumn)` +const LeftSideColumn = styled(LeftColumn)` /* 🤢🤷 https://www.styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity */ &&& { margin-top: 77px; @@ -30,15 +34,18 @@ const ContentFlexGroup = styled(EuiFlexGroup)` `; export function Content(props: ContentProps) { + const showRightColumn = props.panel !== 'policies'; return ( - - + + - - - + {showRightColumn && ( + + + + )} ); } @@ -46,6 +53,9 @@ export function Content(props: ContentProps) { type ContentPanelProps = PackageInfo & Pick; export function ContentPanel(props: ContentPanelProps) { const { panel, name, version, assets, title, removable, latestVersion } = props; + const CustomView = useUIExtension(name, 'package-detail-custom'); + const { getPath } = useLink(); + switch (panel) { case 'settings': return ( @@ -60,6 +70,14 @@ export function ContentPanel(props: ContentPanelProps) { ); case 'policies': return ; + case 'custom': + return CustomView ? ( + + + + ) : ( + + ); case 'overview': default: return ; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.test.tsx new file mode 100644 index 00000000000000..7ed14a27c32cf9 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.test.tsx @@ -0,0 +1,411 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createTestRendererMock, MockedFleetStartServices, TestRenderer } from '../../../../mock'; +import { Detail } from './index'; +import React, { lazy, memo } from 'react'; +import { PAGE_ROUTING_PATHS, pagePathGetters } from '../../../../constants'; +import { Route } from 'react-router-dom'; +import { + GetFleetStatusResponse, + GetInfoResponse, +} from '../../../../../../../common/types/rest_spec'; +import { DetailViewPanelName, KibanaAssetType } from '../../../../../../../common/types/models'; +import { epmRouteService, fleetSetupRouteService } from '../../../../../../../common/services'; +import { act } from '@testing-library/react'; + +describe('when on integration detail', () => { + const detailPageUrlPath = pagePathGetters.integration_details({ pkgkey: 'nginx-0.3.7' }); + let testRenderer: TestRenderer; + let renderResult: ReturnType; + const render = () => + (renderResult = testRenderer.render( + + + + )); + + beforeEach(() => { + testRenderer = createTestRendererMock(); + mockApiCalls(testRenderer.startServices.http); + testRenderer.history.push(detailPageUrlPath); + }); + + describe('and a custom UI extension is NOT registered', () => { + beforeEach(() => render()); + + it('should show overview and settings tabs', () => { + const tabs: DetailViewPanelName[] = ['overview', 'settings']; + for (const tab of tabs) { + expect(renderResult.getByTestId(`tab-${tab}`)); + } + }); + + it('should not show a custom tab', () => { + expect(renderResult.queryByTestId('tab-custom')).toBeNull(); + }); + + it('should redirect if custom url is accessed', () => { + act(() => { + testRenderer.history.push( + pagePathGetters.integration_details({ pkgkey: 'nginx-0.3.7', panel: 'custom' }) + ); + }); + expect(testRenderer.history.location.pathname).toEqual(detailPageUrlPath); + }); + }); + + describe('and a custom UI extension is registered', () => { + // Because React Lazy components are loaded async (Promise), we setup this "watcher" Promise + // that is `resolved` once the lazy components actually renders. + let lazyComponentWasRendered: Promise; + + beforeEach(() => { + let setWasRendered: () => void; + lazyComponentWasRendered = new Promise((resolve) => { + setWasRendered = resolve; + }); + + const CustomComponent = lazy(async () => { + return { + default: memo(() => { + setWasRendered(); + return
    hello
    ; + }), + }; + }); + + testRenderer.startInterface.registerExtension({ + package: 'nginx', + view: 'package-detail-custom', + component: CustomComponent, + }); + + render(); + }); + + afterEach(() => { + // @ts-ignore + lazyComponentWasRendered = undefined; + }); + + it('should display "custom" tab in navigation', () => { + expect(renderResult.getByTestId('tab-custom')); + }); + + it('should display custom content when tab is clicked', async () => { + act(() => { + testRenderer.history.push( + pagePathGetters.integration_details({ pkgkey: 'nginx-0.3.7', panel: 'custom' }) + ); + }); + await lazyComponentWasRendered; + expect(renderResult.getByTestId('custom-hello')); + }); + }); + + describe('and the Add integration button is clicked', () => { + beforeEach(() => render()); + + it('should link to the create page', () => { + const addButton = renderResult.getByTestId('addIntegrationPolicyButton') as HTMLAnchorElement; + expect(addButton.href).toEqual( + 'http://localhost/mock/app/fleet#/integrations/nginx-0.3.7/add-integration' + ); + }); + + it('should link to create page with route state for return trip', () => { + const addButton = renderResult.getByTestId('addIntegrationPolicyButton') as HTMLAnchorElement; + act(() => addButton.click()); + expect(testRenderer.history.location.state).toEqual({ + onCancelNavigateTo: [ + 'fleet', + { + path: '#/integrations/detail/nginx-0.3.7', + }, + ], + onCancelUrl: '#/integrations/detail/nginx-0.3.7', + onSaveNavigateTo: [ + 'fleet', + { + path: '#/integrations/detail/nginx-0.3.7', + }, + ], + }); + }); + }); +}); + +const mockApiCalls = (http: MockedFleetStartServices['http']) => { + // @ts-ignore + const epmPackageResponse: GetInfoResponse = { + response: { + name: 'nginx', + title: 'Nginx', + version: '0.3.7', + release: 'experimental', + description: 'Nginx Integration', + type: 'integration', + download: '/epr/nginx/nginx-0.3.7.zip', + path: '/package/nginx/0.3.7', + icons: [ + { + src: '/img/logo_nginx.svg', + path: '/package/nginx/0.3.7/img/logo_nginx.svg', + title: 'logo nginx', + size: '32x32', + type: 'image/svg+xml', + }, + ], + format_version: '1.0.0', + readme: '/package/nginx/0.3.7/docs/README.md', + license: 'basic', + categories: ['web', 'security'], + conditions: { 'kibana.version': '^7.9.0' }, + screenshots: [ + { + src: '/img/kibana-nginx.png', + path: '/package/nginx/0.3.7/img/kibana-nginx.png', + title: 'kibana nginx', + size: '1218x1266', + type: 'image/png', + }, + { + src: '/img/metricbeat-nginx.png', + path: '/package/nginx/0.3.7/img/metricbeat-nginx.png', + title: 'metricbeat nginx', + size: '2560x2100', + type: 'image/png', + }, + ], + assets: { + kibana: { + dashboard: [ + { + pkgkey: 'nginx-0.3.7', + service: 'kibana', + type: 'dashboard' as KibanaAssetType, + file: 'nginx-023d2930-f1a5-11e7-a9ef-93c69af7b129.json', + }, + ], + search: [ + { + pkgkey: 'nginx-0.3.7', + service: 'kibana', + type: 'search' as KibanaAssetType, + file: 'nginx-6d9e66d0-a1f0-11e7-928f-5dbe6f6f5519.json', + }, + ], + visualization: [ + { + pkgkey: 'nginx-0.3.7', + service: 'kibana', + type: 'visualization' as KibanaAssetType, + file: 'nginx-0dd6f320-a29f-11e7-928f-5dbe6f6f5519.json', + }, + ], + }, + }, + policy_templates: [ + { + name: 'nginx', + title: 'Nginx logs and metrics', + description: 'Collect logs and metrics from Nginx instances', + inputs: [ + { + type: 'logfile', + title: 'Collect logs from Nginx instances', + description: 'Collecting Nginx access, error and ingress controller logs', + }, + { + type: 'nginx/metrics', + vars: [ + { + name: 'hosts', + type: 'text', + title: 'Hosts', + multi: true, + required: true, + show_user: true, + default: ['http://127.0.0.1:80'], + }, + ], + title: 'Collect metrics from Nginx instances', + description: 'Collecting Nginx stub status metrics', + }, + ], + multiple: true, + }, + ], + data_streams: [ + { + type: 'logs', + dataset: 'nginx.access', + title: 'Nginx access logs', + release: 'experimental', + ingest_pipeline: 'default', + streams: [ + { + input: 'logfile', + vars: [ + { + name: 'paths', + type: 'text', + title: 'Paths', + multi: true, + required: true, + show_user: true, + default: ['/var/log/nginx/access.log*'], + }, + ], + template_path: 'stream.yml.hbs', + title: 'Nginx access logs', + description: 'Collect Nginx access logs', + enabled: true, + }, + ], + package: 'nginx', + path: 'access', + }, + { + type: 'logs', + dataset: 'nginx.error', + title: 'Nginx error logs', + release: 'experimental', + ingest_pipeline: 'default', + streams: [ + { + input: 'logfile', + vars: [ + { + name: 'paths', + type: 'text', + title: 'Paths', + multi: true, + required: true, + show_user: true, + default: ['/var/log/nginx/error.log*'], + }, + ], + template_path: 'stream.yml.hbs', + title: 'Nginx error logs', + description: 'Collect Nginx error logs', + enabled: true, + }, + ], + package: 'nginx', + path: 'error', + }, + { + type: 'logs', + dataset: 'nginx.ingress_controller', + title: 'Nginx ingress_controller logs', + release: 'experimental', + ingest_pipeline: 'default', + streams: [ + { + input: 'logfile', + vars: [ + { + name: 'paths', + type: 'text', + title: 'Paths', + multi: true, + required: true, + show_user: true, + default: ['/var/log/nginx/ingress.log*'], + }, + ], + template_path: 'stream.yml.hbs', + title: 'Nginx ingress controller logs', + description: 'Collect Nginx ingress controller logs', + enabled: false, + }, + ], + package: 'nginx', + path: 'ingress_controller', + }, + { + type: 'metrics', + dataset: 'nginx.stubstatus', + title: 'Nginx stubstatus metrics', + release: 'experimental', + streams: [ + { + input: 'nginx/metrics', + vars: [ + { + name: 'period', + type: 'text', + title: 'Period', + multi: false, + required: true, + show_user: true, + default: '10s', + }, + { + name: 'server_status_path', + type: 'text', + title: 'Server Status Path', + multi: false, + required: true, + show_user: false, + default: '/nginx_status', + }, + ], + template_path: 'stream.yml.hbs', + title: 'Nginx stub status metrics', + description: 'Collect Nginx stub status metrics', + enabled: true, + }, + ], + package: 'nginx', + path: 'stubstatus', + }, + ], + owner: { github: 'elastic/integrations-services' }, + latestVersion: '0.3.7', + removable: true, + status: 'not_installed', + }, + } as GetInfoResponse; + + const packageReadMe = ` +# Nginx Integration + +This integration periodically fetches metrics from [Nginx](https://nginx.org/) servers. It can parse access and error +logs created by the HTTP server. + +## Compatibility + +The Nginx \`stubstatus\` metrics was tested with Nginx 1.9 and are expected to work with all version >= 1.9. +The logs were tested with version 1.10. +On Windows, the module was tested with Nginx installed from the Chocolatey repository. +`; + + const agentsSetupResponse: GetFleetStatusResponse = { isReady: true, missing_requirements: [] }; + + http.get.mockImplementation(async (path) => { + if (typeof path === 'string') { + if (path === epmRouteService.getInfoPath(`nginx-0.3.7`)) { + return epmPackageResponse; + } + + if (path === epmRouteService.getFilePath('/package/nginx/0.3.7/docs/README.md')) { + return packageReadMe; + } + + if (path === fleetSetupRouteService.getFleetSetupPath()) { + return agentsSetupResponse; + } + + const err = new Error(`API [GET ${path}] is not MOCKED!`); + // eslint-disable-next-line no-console + console.log(err); + throw err; + } + }); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.tsx index 0e72693db9e2d0..467276f0d0b8cb 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/index.tsx @@ -3,8 +3,8 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React, { useEffect, useState, useMemo } from 'react'; -import { useParams } from 'react-router-dom'; +import React, { useEffect, useState, useMemo, useCallback, ReactEventHandler } from 'react'; +import { useHistory, useLocation, useParams } from 'react-router-dom'; import styled from 'styled-components'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; @@ -20,7 +20,13 @@ import { EuiDescriptionListTitle, EuiDescriptionListDescription, } from '@elastic/eui'; -import { DetailViewPanelName, entries, InstallStatus, PackageInfo } from '../../../../types'; +import { + CreatePackagePolicyRouteState, + DetailViewPanelName, + entries, + InstallStatus, + PackageInfo, +} from '../../../../types'; import { Loading, Error } from '../../../../components'; import { useGetPackageInfoByKey, @@ -35,6 +41,8 @@ import { RELEASE_BADGE_LABEL, RELEASE_BADGE_DESCRIPTION } from '../../components import { UpdateIcon } from '../../components/icons'; import { Content } from './content'; import './index.scss'; +import { useUIExtension } from '../../../../hooks/use_ui_extension'; +import { PLUGIN_ID } from '../../../../../../../common/constants'; export const DEFAULT_PANEL: DetailViewPanelName = 'overview'; @@ -53,6 +61,9 @@ const PanelDisplayNames: Record = { settings: i18n.translate('xpack.fleet.epm.packageDetailsNav.settingsLinkText', { defaultMessage: 'Settings', }), + custom: i18n.translate('xpack.fleet.epm.packageDetailsNav.packageCustomLinkText', { + defaultMessage: 'Custom', + }), }; const Divider = styled.div` @@ -72,10 +83,11 @@ function Breadcrumbs({ packageTitle }: { packageTitle: string }) { } export function Detail() { - // TODO: fix forced cast if possible - const { pkgkey, panel = DEFAULT_PANEL } = useParams() as DetailParams; - const { getHref } = useLink(); + const { pkgkey, panel = DEFAULT_PANEL } = useParams(); + const { getHref, getPath } = useLink(); const hasWriteCapabilites = useCapabilities().write; + const history = useHistory(); + const location = useLocation(); // Package info state const [packageInfo, setPackageInfo] = useState(null); @@ -91,6 +103,10 @@ export function Detail() { pkgkey ); + const packageInstallStatus = packageInfoData?.response.status; + const showCustomTab = + useUIExtension(packageInfoData?.response.name ?? '', 'package-detail-custom') !== undefined; + // Track install status state useEffect(() => { if (packageInfoData?.response) { @@ -166,6 +182,40 @@ export function Detail() { [getHref, isLoading, packageInfo] ); + const handleAddIntegrationPolicyClick = useCallback( + (ev) => { + ev.preventDefault(); + + // The object below, given to `createHref` is explicitly accessing keys of `location` in order + // to ensure that dependencies to this `useCallback` is set correctly (because `location` is mutable) + const currentPath = history.createHref({ + pathname: location.pathname, + search: location.search, + hash: location.hash, + }); + const redirectToPath: CreatePackagePolicyRouteState['onSaveNavigateTo'] & + CreatePackagePolicyRouteState['onCancelNavigateTo'] = [ + PLUGIN_ID, + { + path: currentPath, + }, + ]; + const redirectBackRouteState: CreatePackagePolicyRouteState = { + onSaveNavigateTo: redirectToPath, + onCancelNavigateTo: redirectToPath, + onCancelUrl: currentPath, + }; + + history.push({ + pathname: getPath('add_integration_to_policy', { + pkgkey, + }), + state: redirectBackRouteState, + }); + }, + [getPath, history, location.hash, location.pathname, location.search, pkgkey] + ); + const headerRightContent = useMemo( () => packageInfo ? ( @@ -191,6 +241,7 @@ export function Detail() { { isDivider: true }, { content: ( + // eslint-disable-next-line @elastic/eui/href-or-on-click ) : undefined, - [getHref, hasWriteCapabilites, packageInfo, pkgkey, updateAvailable] + [ + getHref, + handleAddIntegrationPolicyClick, + hasWriteCapabilites, + packageInfo, + pkgkey, + updateAvailable, + ] ); const tabs = useMemo(() => { @@ -236,23 +296,31 @@ export function Detail() { return (entries(PanelDisplayNames) .filter(([panelId]) => { - return ( - panelId !== 'policies' || - (packageInfoData?.response.status === InstallStatus.installed && false) // Remove `false` when ready to implement policies tab - ); + // Don't show `Policies` tab if package is not installed + if (panelId === 'policies' && packageInstallStatus !== InstallStatus.installed) { + return false; + } + + // Don't show `custom` tab if a custom component is not registered + if (panelId === 'custom' && !showCustomTab) { + return false; + } + + return true; }) .map(([panelId, display]) => { return { id: panelId, name: display, isSelected: panelId === panel, + 'data-test-subj': `tab-${panelId}`, href: getHref('integration_details', { pkgkey: `${packageInfo?.name}-${packageInfo?.version}`, panel: panelId, }), }; }) as unknown) as WithHeaderLayoutProps['tabs']; - }, [getHref, packageInfo, packageInfoData?.response?.status, panel]); + }, [getHref, packageInfo, panel, showCustomTab, packageInstallStatus]); return ( = ({ children, ...rest }) => { +export const LeftColumn: FunctionComponent = ({ + columnGrow = 2, + children, + ...rest +}) => { return ( - + {children} ); }; -export const CenterColumn: FunctionComponent = ({ children, ...rest }) => { +export const CenterColumn: FunctionComponent = ({ + columnGrow = 9, + children, + ...rest +}) => { return ( - + {children} ); }; -export const RightColumn: FunctionComponent = ({ children, ...rest }) => { +export const RightColumn: FunctionComponent = ({ + columnGrow = 3, + children, + ...rest +}) => { return ( - + {children} ); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/overview_panel.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/overview_panel.tsx index ca6aceabe7f36e..c376c070789cee 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/overview_panel.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/overview_panel.tsx @@ -15,7 +15,7 @@ export function OverviewPanel(props: PackageInfo) { {readme && } - {screenshots && } + {screenshots && } ); } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/package_policies_panel.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/package_policies_panel.tsx index d97d891ac5e5d7..8609b08c9a7744 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/package_policies_panel.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/package_policies_panel.tsx @@ -4,11 +4,82 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { memo, ReactNode, useCallback, useMemo } from 'react'; import { Redirect } from 'react-router-dom'; +import { + CriteriaWithPagination, + EuiBasicTable, + EuiLink, + EuiTableFieldDataColumnType, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedRelative } from '@kbn/i18n/react'; import { useGetPackageInstallStatus } from '../../hooks'; import { InstallStatus } from '../../../../types'; import { useLink } from '../../../../hooks'; +import { + AGENT_SAVED_OBJECT_TYPE, + PACKAGE_POLICY_SAVED_OBJECT_TYPE, +} from '../../../../../../../common/constants'; +import { useUrlPagination } from '../../../../hooks'; +import { + PackagePolicyAndAgentPolicy, + usePackagePoliciesWithAgentPolicy, +} from './use_package_policies_with_agent_policy'; +import { LinkAndRevision, LinkAndRevisionProps } from '../../../../components'; +import { Persona } from './persona'; + +const IntegrationDetailsLink = memo<{ + packagePolicy: PackagePolicyAndAgentPolicy['packagePolicy']; +}>(({ packagePolicy }) => { + const { getHref } = useLink(); + return ( + + {packagePolicy.name} + + ); +}); + +const AgentPolicyDetailLink = memo<{ + agentPolicyId: string; + revision: LinkAndRevisionProps['revision']; + children: ReactNode; +}>(({ agentPolicyId, revision, children }) => { + const { getHref } = useLink(); + return ( + + {children} + + ); +}); + +const PolicyAgentListLink = memo<{ agentPolicyId: string; children: ReactNode }>( + ({ agentPolicyId, children }) => { + const { getHref } = useLink(); + return ( + + {children} + + ); + } +); interface PackagePoliciesPanelProps { name: string; @@ -18,9 +89,118 @@ export const PackagePoliciesPanel = ({ name, version }: PackagePoliciesPanelProp const { getPath } = useLink(); const getPackageInstallStatus = useGetPackageInstallStatus(); const packageInstallStatus = getPackageInstallStatus(name); + const { pagination, pageSizeOptions, setPagination } = useUrlPagination(); + const { data } = usePackagePoliciesWithAgentPolicy({ + page: pagination.currentPage, + perPage: pagination.pageSize, + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name: ${name}`, + }); + + const handleTableOnChange = useCallback( + ({ page }: CriteriaWithPagination) => { + setPagination({ + currentPage: page.index + 1, + pageSize: page.size, + }); + }, + [setPagination] + ); + + const columns: Array> = useMemo( + () => [ + { + field: 'packagePolicy.name', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.name', { + defaultMessage: 'Integration', + }), + render(_, { packagePolicy }) { + return ; + }, + }, + { + field: 'packagePolicy.description', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.description', { + defaultMessage: 'Description', + }), + truncateText: true, + }, + { + field: 'packagePolicy.policy_id', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.agentPolicy', { + defaultMessage: 'Agent policy', + }), + truncateText: true, + render(id, { agentPolicy }) { + return ( + + {agentPolicy.name ?? id} + + ); + }, + }, + { + field: '', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.agentCount', { + defaultMessage: 'Agents', + }), + truncateText: true, + align: 'right', + width: '8ch', + render({ packagePolicy, agentPolicy }: PackagePolicyAndAgentPolicy) { + return ( + + {agentPolicy?.agents ?? 0} + + ); + }, + }, + { + field: 'packagePolicy.updated_by', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.updatedBy', { + defaultMessage: 'Last Updated By', + }), + truncateText: true, + render(updatedBy) { + return ; + }, + }, + { + field: 'packagePolicy.updated_at', + name: i18n.translate('xpack.fleet.epm.packageDetails.integrationList.updatedAt', { + defaultMessage: 'Last Updated', + }), + truncateText: true, + render(updatedAt: PackagePolicyAndAgentPolicy['packagePolicy']['updated_at']) { + return ( + + + + ); + }, + }, + ], + [] + ); + // if they arrive at this page and the package is not installed, send them to overview // this happens if they arrive with a direct url or they uninstall while on this tab - if (packageInstallStatus.status !== InstallStatus.installed) + if (packageInstallStatus.status !== InstallStatus.installed) { return ; - return null; + } + + return ( + + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/persona.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/persona.tsx new file mode 100644 index 00000000000000..06b3c7a9a4093c --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/persona.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiAvatar, EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import React, { CSSProperties, memo, useCallback } from 'react'; +import { EuiAvatarProps } from '@elastic/eui/src/components/avatar/avatar'; + +const MIN_WIDTH: CSSProperties = { minWidth: 0 }; + +/** + * Shows a user's name along with an avatar. Name is truncated if its wider than the availble space + */ +export const Persona = memo( + ({ name, className, 'data-test-subj': dataTestSubj, title, ...otherAvatarProps }) => { + const getTestId = useCallback( + (suffix) => { + if (dataTestSubj) { + return `${dataTestSubj}-${suffix}`; + } + }, + [dataTestSubj] + ); + return ( + + + + + + + {name} + + + + ); + } +); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/screenshots.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/screenshots.tsx index b150d284ff3341..31e35ee43b42f7 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/screenshots.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/screenshots.tsx @@ -12,6 +12,8 @@ import { useLinks } from '../../hooks'; interface ScreenshotProps { images: ScreenshotItem[]; + packageName: string; + version: string; } const getHorizontalPadding = (styledProps: any): number => @@ -38,12 +40,13 @@ const NestedEuiFlexItem = styled(EuiFlexItem)` `; export function Screenshots(props: ScreenshotProps) { - const { toImage } = useLinks(); - const { images } = props; + const { toPackageImage } = useLinks(); + const { images, packageName, version } = props; // for now, just get first image const image = images[0]; const hasCaption = image.title ? true : false; + const screenshotUrl = toPackageImage(image, packageName, version); return ( @@ -67,18 +70,20 @@ export function Screenshots(props: ScreenshotProps) { )} - - {/* By default EuiImage sets width to 100% and Figure to 22.5rem for size=l images, + {screenshotUrl && ( + + {/* By default EuiImage sets width to 100% and Figure to 22.5rem for size=l images, set image to same width. Will need to update if size changes. */} - - + + + )} ); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/use_package_policies_with_agent_policy.ts b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/use_package_policies_with_agent_policy.ts new file mode 100644 index 00000000000000..d8a9d18e8a21f0 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/epm/screens/detail/use_package_policies_with_agent_policy.ts @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useEffect, useMemo, useState } from 'react'; +import { PackagePolicy } from '../../../../../../../common/types/models'; +import { + GetAgentPoliciesResponse, + GetAgentPoliciesResponseItem, +} from '../../../../../../../common/types/rest_spec'; +import { useGetPackagePolicies } from '../../../../hooks/use_request'; +import { + SendConditionalRequestConfig, + useConditionalRequest, +} from '../../../../hooks/use_request/use_request'; +import { agentPolicyRouteService } from '../../../../../../../common/services'; +import { AGENT_POLICY_SAVED_OBJECT_TYPE } from '../../../../../../../common/constants'; +import { GetPackagePoliciesResponse } from '../../../../../../../common/types/rest_spec'; + +export interface PackagePolicyEnriched extends PackagePolicy { + _agentPolicy: GetAgentPoliciesResponseItem | undefined; +} + +export interface PackagePolicyAndAgentPolicy { + packagePolicy: PackagePolicy; + agentPolicy: GetAgentPoliciesResponseItem; +} + +type GetPackagePoliciesWithAgentPolicy = Omit & { + items: PackagePolicyAndAgentPolicy[]; +}; + +/** + * Works similar to `useGetAgentPolicies()`, except that it will add an additional property to + * each package policy named `_agentPolicy` which may hold the Agent Policy associated with the + * given package policy. + * @param query + */ +export const usePackagePoliciesWithAgentPolicy = ( + query: Parameters[0] +): { + isLoading: boolean; + error: Error | null; + data?: GetPackagePoliciesWithAgentPolicy; +} => { + const { + data: packagePoliciesData, + error, + isLoading: isLoadingPackagePolicies, + } = useGetPackagePolicies(query); + + const agentPoliciesFilter = useMemo(() => { + if (!packagePoliciesData?.items.length) { + return ''; + } + + // Build a list of package_policies for which we need Agent Policies for. Since some package + // policies can exist within the same Agent Policy, we don't need to (in some cases) include + // the entire list of package_policy ids. + const includedAgentPolicies = new Set(); + + return `${AGENT_POLICY_SAVED_OBJECT_TYPE}.package_policies: (${packagePoliciesData.items + .filter((packagePolicy) => { + if (includedAgentPolicies.has(packagePolicy.policy_id)) { + return false; + } + includedAgentPolicies.add(packagePolicy.policy_id); + return true; + }) + .map((packagePolicy) => packagePolicy.id) + .join(' or ')}) `; + }, [packagePoliciesData]); + + const { + data: agentPoliciesData, + isLoading: isLoadingAgentPolicies, + } = useConditionalRequest({ + path: agentPolicyRouteService.getListPath(), + method: 'get', + query: { + perPage: 100, + kuery: agentPoliciesFilter, + }, + shouldSendRequest: !!packagePoliciesData?.items.length, + } as SendConditionalRequestConfig); + + const [enrichedData, setEnrichedData] = useState(); + + useEffect(() => { + if (isLoadingPackagePolicies || isLoadingAgentPolicies) { + return; + } + + if (!packagePoliciesData?.items) { + setEnrichedData(undefined); + return; + } + + const agentPoliciesById: Record = {}; + + if (agentPoliciesData?.items) { + for (const agentPolicy of agentPoliciesData.items) { + agentPoliciesById[agentPolicy.id] = agentPolicy; + } + } + + const updatedPackageData: PackagePolicyAndAgentPolicy[] = packagePoliciesData.items.map( + (packagePolicy) => { + return { + packagePolicy, + agentPolicy: agentPoliciesById[packagePolicy.policy_id], + }; + } + ); + + setEnrichedData({ + ...packagePoliciesData, + items: updatedPackageData, + }); + }, [isLoadingAgentPolicies, isLoadingPackagePolicies, packagePoliciesData, agentPoliciesData]); + + return { + data: enrichedData, + error, + isLoading: isLoadingPackagePolicies || isLoadingAgentPolicies, + }; +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/types/index.ts b/x-pack/plugins/fleet/public/applications/fleet/types/index.ts index 78cb355318d405..dd80c1ad77b85d 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/types/index.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/types/index.ts @@ -22,6 +22,7 @@ export { NewPackagePolicyInputStream, PackagePolicyConfigRecord, PackagePolicyConfigRecordEntry, + PackagePolicyPackage, Output, DataStream, // API schema - misc setup, status @@ -67,6 +68,8 @@ export { PutAgentReassignResponse, PostBulkAgentReassignRequest, PostBulkAgentReassignResponse, + PostNewAgentActionResponse, + PostNewAgentActionRequest, // API schemas - Enrollment API Keys GetEnrollmentAPIKeysResponse, GetEnrollmentAPIKeysRequest, diff --git a/x-pack/plugins/fleet/public/applications/fleet/types/ui_extensions.ts b/x-pack/plugins/fleet/public/applications/fleet/types/ui_extensions.ts index a8a961ca949b63..d35e5f4744449c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/types/ui_extensions.ts +++ b/x-pack/plugins/fleet/public/applications/fleet/types/ui_extensions.ts @@ -28,13 +28,17 @@ export interface PackagePolicyEditExtensionComponentProps { newPolicy: NewPackagePolicy; /** * A callback that should be executed anytime a change to the Integration Policy needs to - * be reported back to the Fleet Policy Edit page + * be reported back to the Fleet Policy Edit page. + * + * **NOTE:** + * this callback will be recreated everytime the policy data changes, thus logic around its + * invocation should take that into consideration in order to avoid an endless loop. */ onChange: (opts: { /** is current form state is valid */ isValid: boolean; /** The updated Integration Policy to be merged back and included in the API call */ - updatedPolicy: NewPackagePolicy; + updatedPolicy: Partial; }) => void; } diff --git a/x-pack/plugins/fleet/public/mocks.ts b/x-pack/plugins/fleet/public/mocks.ts new file mode 100644 index 00000000000000..63aac3332aa038 --- /dev/null +++ b/x-pack/plugins/fleet/public/mocks.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { createStartMock } from './applications/fleet/mock'; + +export const fleetMock = { + createStartMock, +}; diff --git a/x-pack/plugins/fleet/scripts/dev_agent/script.ts b/x-pack/plugins/fleet/scripts/dev_agent/script.ts index 18ce12794776af..3babb03c2dac69 100644 --- a/x-pack/plugins/fleet/scripts/dev_agent/script.ts +++ b/x-pack/plugins/fleet/scripts/dev_agent/script.ts @@ -45,7 +45,7 @@ run( while (!closing) { await checkin(kibanaUrl, agent, log); - await new Promise((resolve, reject) => setTimeout(() => resolve(), CHECKIN_INTERVAL)); + await new Promise((resolve, reject) => setTimeout(() => resolve(), CHECKIN_INTERVAL)); } }, { diff --git a/x-pack/plugins/fleet/server/collectors/config_collectors.ts b/x-pack/plugins/fleet/server/collectors/config_collectors.ts index 8fb4924a2ccf0f..f26e4261d573e3 100644 --- a/x-pack/plugins/fleet/server/collectors/config_collectors.ts +++ b/x-pack/plugins/fleet/server/collectors/config_collectors.ts @@ -6,6 +6,6 @@ import { FleetConfigType } from '..'; -export const getIsFleetEnabled = (config: FleetConfigType) => { +export const getIsAgentsEnabled = (config: FleetConfigType) => { return config.agents.enabled; }; diff --git a/x-pack/plugins/fleet/server/collectors/register.ts b/x-pack/plugins/fleet/server/collectors/register.ts index e7d95a7e83773e..35517e6a7a7002 100644 --- a/x-pack/plugins/fleet/server/collectors/register.ts +++ b/x-pack/plugins/fleet/server/collectors/register.ts @@ -6,19 +6,19 @@ import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { CoreSetup } from 'kibana/server'; -import { getIsFleetEnabled } from './config_collectors'; +import { getIsAgentsEnabled } from './config_collectors'; import { AgentUsage, getAgentUsage } from './agent_collectors'; import { getInternalSavedObjectsClient } from './helpers'; import { PackageUsage, getPackageUsage } from './package_collectors'; import { FleetConfigType } from '..'; interface Usage { - fleet_enabled: boolean; + agents_enabled: boolean; agents: AgentUsage; packages: PackageUsage[]; } -export function registerIngestManagerUsageCollector( +export function registerFleetUsageCollector( core: CoreSetup, config: FleetConfigType, usageCollection: UsageCollectionSetup | undefined @@ -30,19 +30,19 @@ export function registerIngestManagerUsageCollector( } // create usage collector - const ingestManagerCollector = usageCollection.makeUsageCollector({ - type: 'ingest_manager', + const fleetCollector = usageCollection.makeUsageCollector({ + type: 'fleet', isReady: () => true, fetch: async () => { const soClient = await getInternalSavedObjectsClient(core); return { - fleet_enabled: getIsFleetEnabled(config), + agents_enabled: getIsAgentsEnabled(config), agents: await getAgentUsage(soClient), packages: await getPackageUsage(soClient), }; }, schema: { - fleet_enabled: { type: 'boolean' }, + agents_enabled: { type: 'boolean' }, agents: { total: { type: 'long' }, online: { type: 'long' }, @@ -61,5 +61,5 @@ export function registerIngestManagerUsageCollector( }); // register usage collector - usageCollection.registerCollector(ingestManagerCollector); + usageCollection.registerCollector(fleetCollector); } diff --git a/x-pack/plugins/fleet/server/constants/index.ts b/x-pack/plugins/fleet/server/constants/index.ts index b1d7318ff51070..f380608e6817e3 100644 --- a/x-pack/plugins/fleet/server/constants/index.ts +++ b/x-pack/plugins/fleet/server/constants/index.ts @@ -41,6 +41,7 @@ export { PACKAGE_POLICY_SAVED_OBJECT_TYPE, OUTPUT_SAVED_OBJECT_TYPE, PACKAGES_SAVED_OBJECT_TYPE, + ASSETS_SAVED_OBJECT_TYPE, INDEX_PATTERN_SAVED_OBJECT_TYPE, ENROLLMENT_API_KEYS_SAVED_OBJECT_TYPE, GLOBAL_SETTINGS_SAVED_OBJECT_TYPE, diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index e3ca6a9b48dcfe..d6fa79a2baeba0 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -5,7 +5,11 @@ */ /* eslint-disable max-classes-per-file */ -export { defaultIngestErrorHandler, ingestErrorToResponseOptions } from './handlers'; +export { + defaultIngestErrorHandler, + ingestErrorToResponseOptions, + isLegacyESClientError, +} from './handlers'; export class IngestManagerError extends Error { constructor(message?: string) { @@ -24,3 +28,4 @@ export class PackageUnsupportedMediaTypeError extends IngestManagerError {} export class PackageInvalidArchiveError extends IngestManagerError {} export class PackageCacheError extends IngestManagerError {} export class PackageOperationNotSupportedError extends IngestManagerError {} +export class FleetAdminUserInvalidError extends IngestManagerError {} diff --git a/x-pack/plugins/fleet/server/mocks.ts b/x-pack/plugins/fleet/server/mocks.ts index 91098c87c312a8..bc3e89ef6d3ce4 100644 --- a/x-pack/plugins/fleet/server/mocks.ts +++ b/x-pack/plugins/fleet/server/mocks.ts @@ -25,7 +25,7 @@ export const createAppContextStartContractMock = (): FleetAppContext => { export const createPackagePolicyServiceMock = () => { return { - assignPackageStream: jest.fn(), + compilePackagePolicyInputs: jest.fn(), buildPackagePolicyFromPackage: jest.fn(), bulkCreate: jest.fn(), create: jest.fn(), diff --git a/x-pack/plugins/fleet/server/plugin.ts b/x-pack/plugins/fleet/server/plugin.ts index 90fb34efd4817e..7ddd6e3ba3fe07 100644 --- a/x-pack/plugins/fleet/server/plugin.ts +++ b/x-pack/plugins/fleet/server/plugin.ts @@ -44,7 +44,8 @@ import { registerDataStreamRoutes, registerAgentPolicyRoutes, registerSetupRoutes, - registerAgentRoutes, + registerAgentAPIRoutes, + registerElasticAgentRoutes, registerEnrollmentApiKeyRoutes, registerInstallScriptRoutes, registerOutputRoutes, @@ -71,8 +72,9 @@ import { } from './services/agents'; import { CloudSetup } from '../../cloud/server'; import { agentCheckinState } from './services/agents/checkin/state'; -import { registerIngestManagerUsageCollector } from './collectors/register'; +import { registerFleetUsageCollector } from './collectors/register'; import { getInstallation } from './services/epm/packages'; +import { makeRouterEnforcingSuperuser } from './routes/security'; export interface FleetSetupDeps { licensing: LicensingPluginSetup; @@ -213,23 +215,25 @@ export class FleetPlugin } const router = core.http.createRouter(); + const config = await this.config$.pipe(first()).toPromise(); // Register usage collection - registerIngestManagerUsageCollector(core, config, deps.usageCollection); + registerFleetUsageCollector(core, config, deps.usageCollection); // Always register app routes for permissions checking registerAppRoutes(router); - + // For all the routes we enforce the user to have role superuser + const routerSuperuserOnly = makeRouterEnforcingSuperuser(router); // Register rest of routes only if security is enabled if (this.security) { - registerSetupRoutes(router, config); - registerAgentPolicyRoutes(router); - registerPackagePolicyRoutes(router); - registerOutputRoutes(router); - registerSettingsRoutes(router); - registerDataStreamRoutes(router); - registerEPMRoutes(router); + registerSetupRoutes(routerSuperuserOnly, config); + registerAgentPolicyRoutes(routerSuperuserOnly); + registerPackagePolicyRoutes(routerSuperuserOnly); + registerOutputRoutes(routerSuperuserOnly); + registerSettingsRoutes(routerSuperuserOnly); + registerDataStreamRoutes(routerSuperuserOnly); + registerEPMRoutes(routerSuperuserOnly); // Conditional config routes if (config.agents.enabled) { @@ -245,12 +249,14 @@ export class FleetPlugin // we currently only use this global interceptor if fleet is enabled // since it would run this func on *every* req (other plugins, CSS, etc) registerLimitedConcurrencyRoutes(core, config); - registerAgentRoutes(router, config); - registerEnrollmentApiKeyRoutes(router); + registerAgentAPIRoutes(routerSuperuserOnly, config); + registerEnrollmentApiKeyRoutes(routerSuperuserOnly); registerInstallScriptRoutes({ - router, + router: routerSuperuserOnly, basePath: core.http.basePath, }); + // Do not enforce superuser role for Elastic Agent routes + registerElasticAgentRoutes(router, config); } } } diff --git a/x-pack/plugins/fleet/server/routes/agent/index.ts b/x-pack/plugins/fleet/server/routes/agent/index.ts index 39b80c6d096de8..54a30fbc9320fc 100644 --- a/x-pack/plugins/fleet/server/routes/agent/index.ts +++ b/x-pack/plugins/fleet/server/routes/agent/index.ts @@ -81,7 +81,7 @@ function makeValidator(jsonSchema: any) { }; } -export const registerRoutes = (router: IRouter, config: FleetConfigType) => { +export const registerAPIRoutes = (router: IRouter, config: FleetConfigType) => { // Get one router.get( { @@ -119,6 +119,96 @@ export const registerRoutes = (router: IRouter, config: FleetConfigType) => { getAgentsHandler ); + // Agent actions + router.post( + { + path: AGENT_API_ROUTES.ACTIONS_PATTERN, + validate: PostNewAgentActionRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postNewAgentActionHandlerBuilder({ + getAgent: AgentService.getAgent, + createAgentAction: AgentService.createAgentAction, + }) + ); + + router.post( + { + path: AGENT_API_ROUTES.UNENROLL_PATTERN, + validate: PostAgentUnenrollRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postAgentUnenrollHandler + ); + + router.put( + { + path: AGENT_API_ROUTES.REASSIGN_PATTERN, + validate: PutAgentReassignRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + putAgentsReassignHandler + ); + + // Get agent events + router.get( + { + path: AGENT_API_ROUTES.EVENTS_PATTERN, + validate: GetOneAgentEventsRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-read`] }, + }, + getAgentEventsHandler + ); + + // Get agent status for policy + router.get( + { + path: AGENT_API_ROUTES.STATUS_PATTERN, + validate: GetAgentStatusRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-read`] }, + }, + getAgentStatusForAgentPolicyHandler + ); + // upgrade agent + router.post( + { + path: AGENT_API_ROUTES.UPGRADE_PATTERN, + validate: PostAgentUpgradeRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postAgentUpgradeHandler + ); + // bulk upgrade + router.post( + { + path: AGENT_API_ROUTES.BULK_UPGRADE_PATTERN, + validate: PostBulkAgentUpgradeRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postBulkAgentsUpgradeHandler + ); + // Bulk reassign + router.post( + { + path: AGENT_API_ROUTES.BULK_REASSIGN_PATTERN, + validate: PostBulkAgentReassignRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postBulkAgentsReassignHandler + ); + + // Bulk unenroll + router.post( + { + path: AGENT_API_ROUTES.BULK_UNENROLL_PATTERN, + validate: PostBulkAgentUnenrollRequestSchema, + options: { tags: [`access:${PLUGIN_ID}-all`] }, + }, + postBulkAgentsUnenrollHandler + ); +}; + +export const registerElasticAgentRoutes = (router: IRouter, config: FleetConfigType) => { const pollingRequestTimeout = config.agents.pollingRequestTimeout; // Agent checkin router.post( @@ -226,92 +316,4 @@ export const registerRoutes = (router: IRouter, config: FleetConfigType) => { saveAgentEvents: AgentService.saveAgentEvents, }) ); - - // Agent actions - router.post( - { - path: AGENT_API_ROUTES.ACTIONS_PATTERN, - validate: PostNewAgentActionRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postNewAgentActionHandlerBuilder({ - getAgent: AgentService.getAgent, - createAgentAction: AgentService.createAgentAction, - }) - ); - - router.post( - { - path: AGENT_API_ROUTES.UNENROLL_PATTERN, - validate: PostAgentUnenrollRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postAgentUnenrollHandler - ); - - router.put( - { - path: AGENT_API_ROUTES.REASSIGN_PATTERN, - validate: PutAgentReassignRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - putAgentsReassignHandler - ); - - // Get agent events - router.get( - { - path: AGENT_API_ROUTES.EVENTS_PATTERN, - validate: GetOneAgentEventsRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-read`] }, - }, - getAgentEventsHandler - ); - - // Get agent status for policy - router.get( - { - path: AGENT_API_ROUTES.STATUS_PATTERN, - validate: GetAgentStatusRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-read`] }, - }, - getAgentStatusForAgentPolicyHandler - ); - // upgrade agent - router.post( - { - path: AGENT_API_ROUTES.UPGRADE_PATTERN, - validate: PostAgentUpgradeRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postAgentUpgradeHandler - ); - // bulk upgrade - router.post( - { - path: AGENT_API_ROUTES.BULK_UPGRADE_PATTERN, - validate: PostBulkAgentUpgradeRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postBulkAgentsUpgradeHandler - ); - // Bulk reassign - router.post( - { - path: AGENT_API_ROUTES.BULK_REASSIGN_PATTERN, - validate: PostBulkAgentReassignRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postBulkAgentsReassignHandler - ); - - // Bulk unenroll - router.post( - { - path: AGENT_API_ROUTES.BULK_UNENROLL_PATTERN, - validate: PostBulkAgentUnenrollRequestSchema, - options: { tags: [`access:${PLUGIN_ID}-all`] }, - }, - postBulkAgentsUnenrollHandler - ); }; diff --git a/x-pack/plugins/fleet/server/routes/epm/handlers.ts b/x-pack/plugins/fleet/server/routes/epm/handlers.ts index aa6160bbd8914e..05060c9d863aaa 100644 --- a/x-pack/plugins/fleet/server/routes/epm/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/epm/handlers.ts @@ -4,6 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ import { TypeOf } from '@kbn/config-schema'; +import mime from 'mime-types'; +import path from 'path'; import { RequestHandler, ResponseHeaders, KnownHeaders } from 'src/core/server'; import { GetInfoResponse, @@ -43,6 +45,8 @@ import { import { defaultIngestErrorHandler, ingestErrorToResponseOptions } from '../../errors'; import { splitPkgKey } from '../../services/epm/registry'; import { licenseService } from '../../services'; +import { getArchiveEntry } from '../../services/epm/archive/cache'; +import { bufferToStream } from '../../services/epm/streams'; export const getCategoriesHandler: RequestHandler< undefined, @@ -102,22 +106,51 @@ export const getFileHandler: RequestHandler { try { const { pkgName, pkgVersion, filePath } = request.params; - const registryResponse = await getFile(`/package/${pkgName}/${pkgVersion}/${filePath}`); - - const headersToProxy: KnownHeaders[] = ['content-type', 'cache-control']; - const proxiedHeaders = headersToProxy.reduce((headers, knownHeader) => { - const value = registryResponse.headers.get(knownHeader); - if (value !== null) { - headers[knownHeader] = value; + const savedObjectsClient = context.core.savedObjects.client; + const savedObject = await getInstallationObject({ savedObjectsClient, pkgName }); + const pkgInstallSource = savedObject?.attributes.install_source; + // TODO: when package storage is available, remove installSource check and check cache and storage, remove registry call + if (pkgInstallSource === 'upload' && pkgVersion === savedObject?.attributes.version) { + const headerContentType = mime.contentType(path.extname(filePath)); + if (!headerContentType) { + return response.custom({ + body: `unknown content type for file: ${filePath}`, + statusCode: 400, + }); } - return headers; - }, {} as ResponseHeaders); + const archiveFile = getArchiveEntry(`${pkgName}-${pkgVersion}/${filePath}`); + if (!archiveFile) { + return response.custom({ + body: `uploaded package file not found: ${filePath}`, + statusCode: 404, + }); + } + const headers: ResponseHeaders = { + 'cache-control': 'max-age=10, public', + 'content-type': headerContentType, + }; + return response.custom({ + body: bufferToStream(archiveFile), + statusCode: 200, + headers, + }); + } else { + const registryResponse = await getFile(`/package/${pkgName}/${pkgVersion}/${filePath}`); + const headersToProxy: KnownHeaders[] = ['content-type', 'cache-control']; + const proxiedHeaders = headersToProxy.reduce((headers, knownHeader) => { + const value = registryResponse.headers.get(knownHeader); + if (value !== null) { + headers[knownHeader] = value; + } + return headers; + }, {} as ResponseHeaders); - return response.custom({ - body: registryResponse.body, - statusCode: registryResponse.status, - headers: proxiedHeaders, - }); + return response.custom({ + body: registryResponse.body, + statusCode: registryResponse.status, + headers: proxiedHeaders, + }); + } } catch (error) { return defaultIngestErrorHandler({ error, response }); } diff --git a/x-pack/plugins/fleet/server/routes/index.ts b/x-pack/plugins/fleet/server/routes/index.ts index 0743270fd71215..a969010208d7f0 100644 --- a/x-pack/plugins/fleet/server/routes/index.ts +++ b/x-pack/plugins/fleet/server/routes/index.ts @@ -8,7 +8,10 @@ export { registerRoutes as registerPackagePolicyRoutes } from './package_policy' export { registerRoutes as registerDataStreamRoutes } from './data_streams'; export { registerRoutes as registerEPMRoutes } from './epm'; export { registerRoutes as registerSetupRoutes } from './setup'; -export { registerRoutes as registerAgentRoutes } from './agent'; +export { + registerAPIRoutes as registerAgentAPIRoutes, + registerElasticAgentRoutes as registerElasticAgentRoutes, +} from './agent'; export { registerRoutes as registerEnrollmentApiKeyRoutes } from './enrollment_api_key'; export { registerRoutes as registerInstallScriptRoutes } from './install_script'; export { registerRoutes as registerOutputRoutes } from './output'; diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts index f47b8499a1b69e..fee74e39c833a4 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.test.ts @@ -22,7 +22,7 @@ jest.mock('../../services/package_policy', (): { } => { return { packagePolicyService: { - assignPackageStream: jest.fn((packageInfo, dataInputs) => Promise.resolve(dataInputs)), + compilePackagePolicyInputs: jest.fn((packageInfo, dataInputs) => Promise.resolve(dataInputs)), buildPackagePolicyFromPackage: jest.fn(), bulkCreate: jest.fn(), create: jest.fn((soClient, callCluster, newData) => diff --git a/x-pack/plugins/fleet/server/routes/security.ts b/x-pack/plugins/fleet/server/routes/security.ts new file mode 100644 index 00000000000000..c2348c313e5832 --- /dev/null +++ b/x-pack/plugins/fleet/server/routes/security.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { IRouter, RequestHandler } from 'src/core/server'; +import { appContextService } from '../services'; + +export function enforceSuperUser( + handler: RequestHandler +): RequestHandler { + return function enforceSuperHandler(context, req, res) { + const security = appContextService.getSecurity(); + const user = security.authc.getCurrentUser(req); + if (!user) { + return res.unauthorized(); + } + + const userRoles = user.roles || []; + if (!userRoles.includes('superuser')) { + return res.forbidden({ + body: { + message: 'Access to Fleet API require the superuser role.', + }, + }); + } + return handler(context, req, res); + }; +} + +export function makeRouterEnforcingSuperuser(router: IRouter): IRouter { + return { + get: (options, handler) => router.get(options, enforceSuperUser(handler)), + delete: (options, handler) => router.delete(options, enforceSuperUser(handler)), + post: (options, handler) => router.post(options, enforceSuperUser(handler)), + put: (options, handler) => router.put(options, enforceSuperUser(handler)), + patch: (options, handler) => router.patch(options, enforceSuperUser(handler)), + handleLegacyErrors: (handler) => router.handleLegacyErrors(handler), + getRoutes: () => router.getRoutes(), + routerPath: router.routerPath, + }; +} diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 9d85a151efbbf9..20bbee2b1c791d 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -12,6 +12,7 @@ import { AGENT_POLICY_SAVED_OBJECT_TYPE, PACKAGE_POLICY_SAVED_OBJECT_TYPE, PACKAGES_SAVED_OBJECT_TYPE, + ASSETS_SAVED_OBJECT_TYPE, AGENT_SAVED_OBJECT_TYPE, AGENT_EVENT_SAVED_OBJECT_TYPE, AGENT_ACTION_SAVED_OBJECT_TYPE, @@ -242,6 +243,7 @@ const getSavedObjectTypes = ( enabled: { type: 'boolean' }, vars: { type: 'flattened' }, config: { type: 'flattened' }, + compiled_input: { type: 'flattened' }, streams: { type: 'nested', properties: { @@ -303,6 +305,13 @@ const getSavedObjectTypes = ( type: { type: 'keyword' }, }, }, + package_assets: { + type: 'nested', + properties: { + id: { type: 'keyword' }, + type: { type: 'keyword' }, + }, + }, install_started_at: { type: 'date' }, install_version: { type: 'keyword' }, install_status: { type: 'keyword' }, @@ -310,6 +319,25 @@ const getSavedObjectTypes = ( }, }, }, + [ASSETS_SAVED_OBJECT_TYPE]: { + name: ASSETS_SAVED_OBJECT_TYPE, + hidden: false, + namespaceType: 'agnostic', + management: { + importableAndExportable: false, + }, + mappings: { + properties: { + package_name: { type: 'keyword' }, + package_version: { type: 'keyword' }, + install_source: { type: 'keyword' }, + asset_path: { type: 'keyword' }, + media_type: { type: 'keyword' }, + data_utf8: { type: 'text', index: false }, + data_base64: { type: 'binary' }, + }, + }, + }, }); export function registerSavedObjects( diff --git a/x-pack/plugins/fleet/server/services/agents/checkin/state_new_actions.test.ts b/x-pack/plugins/fleet/server/services/agents/checkin/state_new_actions.test.ts index 28ddf9704bd925..9c87eaa1859cd2 100644 --- a/x-pack/plugins/fleet/server/services/agents/checkin/state_new_actions.test.ts +++ b/x-pack/plugins/fleet/server/services/agents/checkin/state_new_actions.test.ts @@ -85,9 +85,9 @@ describe('test agent checkin new action services', () => { it('should not fetch actions concurrently', async () => { const observable = createNewActionsSharedObservable(); - const resolves: Array<() => void> = []; + const resolves: Array<(value?: any) => void> = []; getMockedNewActionSince().mockImplementation(() => { - return new Promise((resolve) => { + return new Promise((resolve) => { resolves.push(resolve); }); }); diff --git a/x-pack/plugins/fleet/server/services/api_keys/security.ts b/x-pack/plugins/fleet/server/services/api_keys/security.ts index dfd53d55fbbf5d..5fdf8626a9fb22 100644 --- a/x-pack/plugins/fleet/server/services/api_keys/security.ts +++ b/x-pack/plugins/fleet/server/services/api_keys/security.ts @@ -4,7 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { KibanaRequest, FakeRequest, SavedObjectsClientContract } from 'src/core/server'; +import type { Request } from '@hapi/hapi'; +import { KibanaRequest, SavedObjectsClientContract } from '../../../../../../src/core/server'; +import { FleetAdminUserInvalidError, isLegacyESClientError } from '../../errors'; import { CallESAsCurrentUser } from '../../types'; import { appContextService } from '../app_context'; import { outputService } from '../output'; @@ -18,22 +20,38 @@ export async function createAPIKey( if (!adminUser) { throw new Error('No admin user configured'); } - const request: FakeRequest = { + const request = KibanaRequest.from(({ + path: '/', + route: { settings: {} }, + url: { href: '/' }, + raw: { req: { url: '/' } }, headers: { authorization: `Basic ${Buffer.from(`${adminUser.username}:${adminUser.password}`).toString( 'base64' )}`, }, - }; + } as unknown) as Request); const security = appContextService.getSecurity(); if (!security) { throw new Error('Missing security plugin'); } - return security.authc.createAPIKey(request as KibanaRequest, { - name, - role_descriptors: roleDescriptors, - }); + try { + const key = await security.authc.createAPIKey(request, { + name, + role_descriptors: roleDescriptors, + }); + + return key; + } catch (err) { + if (isLegacyESClientError(err) && err.statusCode === 401) { + // Clear Fleet admin user cache as the user is probably not valid anymore + outputService.invalidateCache(); + throw new FleetAdminUserInvalidError(`Fleet Admin user is invalid: ${err.message}`); + } + + throw err; + } } export async function authenticate(callCluster: CallESAsCurrentUser) { try { @@ -51,20 +69,36 @@ export async function invalidateAPIKey(soClient: SavedObjectsClientContract, id: if (!adminUser) { throw new Error('No admin user configured'); } - const request: FakeRequest = { + const request = KibanaRequest.from(({ + path: '/', + route: { settings: {} }, + url: { href: '/' }, + raw: { req: { url: '/' } }, headers: { authorization: `Basic ${Buffer.from(`${adminUser.username}:${adminUser.password}`).toString( 'base64' )}`, }, - }; + } as unknown) as Request); const security = appContextService.getSecurity(); if (!security) { throw new Error('Missing security plugin'); } - return security.authc.invalidateAPIKey(request as KibanaRequest, { - id, - }); + try { + const res = await security.authc.invalidateAPIKey(request, { + id, + }); + + return res; + } catch (err) { + if (isLegacyESClientError(err) && err.statusCode === 401) { + // Clear Fleet admin user cache as the user is probably not valid anymore + outputService.invalidateCache(); + throw new FleetAdminUserInvalidError(`Fleet Admin user is invalid: ${err.message}`); + } + + throw err; + } } diff --git a/x-pack/plugins/fleet/server/services/epm/agent/agent.test.ts b/x-pack/plugins/fleet/server/services/epm/agent/agent.test.ts index 54b40400bb4e7a..dba6f442d76e24 100644 --- a/x-pack/plugins/fleet/server/services/epm/agent/agent.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/agent/agent.test.ts @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { createStream } from './agent'; +import { compileTemplate } from './agent'; -describe('createStream', () => { +describe('compileTemplate', () => { it('should work', () => { const streamTemplate = ` input: log @@ -27,7 +27,7 @@ hidden_password: {{password}} password: { type: 'password', value: '' }, }; - const output = createStream(vars, streamTemplate); + const output = compileTemplate(vars, streamTemplate); expect(output).toEqual({ input: 'log', paths: ['/usr/local/var/log/nginx/access.log'], @@ -67,7 +67,7 @@ foo: bar password: { type: 'password', value: '' }, }; - const output = createStream(vars, streamTemplate); + const output = compileTemplate(vars, streamTemplate); expect(output).toEqual({ input: 'redis/metrics', metricsets: ['key'], @@ -114,7 +114,7 @@ hidden_password: {{password}} tags: { value: ['foo', 'bar', 'forwarded'] }, }; - const output = createStream(vars, streamTemplate); + const output = compileTemplate(vars, streamTemplate); expect(output).toEqual({ input: 'log', paths: ['/usr/local/var/log/nginx/access.log'], @@ -133,7 +133,7 @@ hidden_password: {{password}} tags: { value: ['foo', 'bar'] }, }; - const output = createStream(vars, streamTemplate); + const output = compileTemplate(vars, streamTemplate); expect(output).toEqual({ input: 'log', paths: ['/usr/local/var/log/nginx/access.log'], @@ -157,7 +157,7 @@ input: logs }, }; - const output = createStream(vars, streamTemplate); + const output = compileTemplate(vars, streamTemplate); expect(output).toEqual({ input: 'logs', }); diff --git a/x-pack/plugins/fleet/server/services/epm/agent/agent.ts b/x-pack/plugins/fleet/server/services/epm/agent/agent.ts index eeadac6e168b1f..400a688722f99e 100644 --- a/x-pack/plugins/fleet/server/services/epm/agent/agent.ts +++ b/x-pack/plugins/fleet/server/services/epm/agent/agent.ts @@ -10,27 +10,30 @@ import { PackagePolicyConfigRecord } from '../../../../common'; const handlebars = Handlebars.create(); -export function createStream(variables: PackagePolicyConfigRecord, streamTemplate: string) { - const { vars, yamlValues } = buildTemplateVariables(variables, streamTemplate); +export function compileTemplate(variables: PackagePolicyConfigRecord, templateStr: string) { + const { vars, yamlValues } = buildTemplateVariables(variables, templateStr); - const template = handlebars.compile(streamTemplate, { noEscape: true }); - let stream = template(vars); - stream = replaceRootLevelYamlVariables(yamlValues, stream); + const template = handlebars.compile(templateStr, { noEscape: true }); + let compiledTemplate = template(vars); + compiledTemplate = replaceRootLevelYamlVariables(yamlValues, compiledTemplate); - const yamlFromStream = safeLoad(stream, {}); + const yamlFromCompiledTemplate = safeLoad(compiledTemplate, {}); // Hack to keep empty string ('') values around in the end yaml because // `safeLoad` replaces empty strings with null - const patchedYamlFromStream = Object.entries(yamlFromStream).reduce((acc, [key, value]) => { - if (value === null && typeof vars[key] === 'string' && vars[key].trim() === '') { - acc[key] = ''; - } else { - acc[key] = value; - } - return acc; - }, {} as { [k: string]: any }); + const patchedYamlFromCompiledTemplate = Object.entries(yamlFromCompiledTemplate).reduce( + (acc, [key, value]) => { + if (value === null && typeof vars[key] === 'string' && vars[key].trim() === '') { + acc[key] = ''; + } else { + acc[key] = value; + } + return acc; + }, + {} as { [k: string]: any } + ); - return replaceVariablesInYaml(yamlValues, patchedYamlFromStream); + return replaceVariablesInYaml(yamlValues, patchedYamlFromCompiledTemplate); } function isValidKey(key: string) { @@ -54,7 +57,7 @@ function replaceVariablesInYaml(yamlVariables: { [k: string]: any }, yaml: any) return yaml; } -function buildTemplateVariables(variables: PackagePolicyConfigRecord, streamTemplate: string) { +function buildTemplateVariables(variables: PackagePolicyConfigRecord, templateStr: string) { const yamlValues: { [k: string]: any } = {}; const vars = Object.entries(variables).reduce((acc, [key, recordEntry]) => { // support variables with . like key.patterns diff --git a/x-pack/plugins/fleet/server/services/epm/archive/cache.ts b/x-pack/plugins/fleet/server/services/epm/archive/cache.ts index 04aa1767b4f14a..6032159fdfcc52 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/cache.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/cache.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import { ArchiveEntry } from './index'; -import { InstallSource, ArchivePackage, RegistryPackage } from '../../../../common'; +import { ArchivePackage, RegistryPackage } from '../../../../common'; const archiveEntryCache: Map = new Map(); export const getArchiveEntry = (key: string) => archiveEntryCache.get(key); @@ -16,7 +16,6 @@ export const deleteArchiveEntry = (key: string) => archiveEntryCache.delete(key) export interface SharedKey { name: string; version: string; - installSource: InstallSource; } type SharedKeyString = string; @@ -31,18 +30,10 @@ export const deleteArchiveFilelist = (keyArgs: SharedKey) => archiveFilelistCache.delete(sharedKey(keyArgs)); const packageInfoCache: Map = new Map(); -const sharedKey = ({ name, version, installSource }: SharedKey) => - `${name}-${version}-${installSource}`; +const sharedKey = ({ name, version }: SharedKey) => `${name}-${version}`; export const getPackageInfo = (args: SharedKey) => { - const packageInfo = packageInfoCache.get(sharedKey(args)); - if (args.installSource === 'registry') { - return packageInfo as RegistryPackage; - } else if (args.installSource === 'upload') { - return packageInfo as ArchivePackage; - } else { - throw new Error(`Unknown installSource: ${args.installSource}`); - } + return packageInfoCache.get(sharedKey(args)); }; export const getArchivePackage = (args: SharedKey) => { @@ -57,10 +48,9 @@ export const getArchivePackage = (args: SharedKey) => { export const setPackageInfo = ({ name, version, - installSource, packageInfo, }: SharedKey & { packageInfo: ArchivePackage | RegistryPackage }) => { - const key = sharedKey({ name, version, installSource }); + const key = sharedKey({ name, version }); return packageInfoCache.set(key, packageInfo); }; diff --git a/x-pack/plugins/fleet/server/services/epm/archive/extract.ts b/x-pack/plugins/fleet/server/services/epm/archive/extract.ts index 6ac81a25dfc21e..1e8f7ce416df19 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/extract.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/extract.ts @@ -69,7 +69,7 @@ export function getBufferExtractor( function yauzlFromBuffer(buffer: Buffer, opts: yauzl.Options): Promise { return new Promise((resolve, reject) => yauzl.fromBuffer(buffer, opts, (err?: Error, handle?: yauzl.ZipFile) => - err ? reject(err) : resolve(handle) + err ? reject(err) : resolve(handle!) ) ); } @@ -80,7 +80,7 @@ function getZipReadStream( ): Promise { return new Promise((resolve, reject) => zipfile.openReadStream(entry, (err?: Error, readStream?: NodeJS.ReadableStream) => - err ? reject(err) : resolve(readStream) + err ? reject(err) : resolve(readStream!) ) ); } diff --git a/x-pack/plugins/fleet/server/services/epm/archive/index.ts b/x-pack/plugins/fleet/server/services/epm/archive/index.ts index ddaf9b640c86a1..81d4fa6869e3ba 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/index.ts @@ -49,7 +49,7 @@ export async function unpackBufferToCache({ paths.push(path); } }); - setArchiveFilelist({ name, version, installSource }, paths); + setArchiveFilelist({ name, version }, paths); return paths; } @@ -85,18 +85,18 @@ export async function unpackBufferEntries( return entries; } -export const deletePackageCache = ({ name, version, installSource }: SharedKey) => { +export const deletePackageCache = ({ name, version }: SharedKey) => { // get cached archive filelist - const paths = getArchiveFilelist({ name, version, installSource }); + const paths = getArchiveFilelist({ name, version }); // delete cached archive filelist - deleteArchiveFilelist({ name, version, installSource }); + deleteArchiveFilelist({ name, version }); // delete cached archive files // this has been populated in unpackBufferToCache() paths?.forEach(deleteArchiveEntry); - deletePackageInfo({ name, version, installSource }); + deletePackageInfo({ name, version }); }; export function getPathParts(path: string): AssetParts { diff --git a/x-pack/plugins/fleet/server/services/epm/archive/save_to_es.ts b/x-pack/plugins/fleet/server/services/epm/archive/save_to_es.ts new file mode 100644 index 00000000000000..a29ae2112f0173 --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/archive/save_to_es.ts @@ -0,0 +1,121 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { extname } from 'path'; +import { isBinaryFile } from 'isbinaryfile'; +import mime from 'mime-types'; +import uuidv5 from 'uuid/v5'; +import { SavedObjectsClientContract, SavedObjectsBulkCreateObject } from 'src/core/server'; +import { + ASSETS_SAVED_OBJECT_TYPE, + InstallablePackage, + InstallSource, + PackageAssetReference, +} from '../../../../common'; +import { getArchiveEntry } from './index'; + +// uuid v5 requires a SHA-1 UUID as a namespace +// used to ensure same input produces the same id +const ID_NAMESPACE = '71403015-cdd5-404b-a5da-6c43f35cad84'; + +// could be anything, picked this from https://github.com/elastic/elastic-agent-client/issues/17 +const MAX_ES_ASSET_BYTES = 4 * 1024 * 1024; + +export interface PackageAsset { + package_name: string; + package_version: string; + install_source: string; + asset_path: string; + media_type: string; + data_utf8: string; + data_base64: string; +} + +export async function archiveEntryToESDocument(opts: { + path: string; + buffer: Buffer; + name: string; + version: string; + installSource: InstallSource; +}): Promise { + const { path, buffer, name, version, installSource } = opts; + const fileExt = extname(path); + const contentType = mime.lookup(fileExt); + const mediaType = mime.contentType(contentType || fileExt); + // can use to create a data URL like `data:${mediaType};base64,${base64Data}` + + const bufferIsBinary = await isBinaryFile(buffer); + const dataUtf8 = bufferIsBinary ? '' : buffer.toString('utf8'); + const dataBase64 = bufferIsBinary ? buffer.toString('base64') : ''; + + // validation: filesize? asset type? anything else + if (dataUtf8.length > MAX_ES_ASSET_BYTES) { + throw new Error(`File at ${path} is larger than maximum allowed size of ${MAX_ES_ASSET_BYTES}`); + } + + if (dataBase64.length > MAX_ES_ASSET_BYTES) { + throw new Error( + `After base64 encoding file at ${path} is larger than maximum allowed size of ${MAX_ES_ASSET_BYTES}` + ); + } + + return { + package_name: name, + package_version: version, + install_source: installSource, + asset_path: path, + media_type: mediaType || '', + data_utf8: dataUtf8, + data_base64: dataBase64, + }; +} + +export async function removeArchiveEntries(opts: { + savedObjectsClient: SavedObjectsClientContract; + refs: PackageAssetReference[]; +}) { + const { savedObjectsClient, refs } = opts; + const results = await Promise.all( + refs.map((ref) => savedObjectsClient.delete(ASSETS_SAVED_OBJECT_TYPE, ref.id)) + ); + return results; +} + +export async function saveArchiveEntries(opts: { + savedObjectsClient: SavedObjectsClientContract; + paths: string[]; + packageInfo: InstallablePackage; + installSource: InstallSource; +}) { + const { savedObjectsClient, paths, packageInfo, installSource } = opts; + const bulkBody = await Promise.all( + paths.map((path) => { + const buffer = getArchiveEntry(path); + if (!buffer) throw new Error(`Could not find ArchiveEntry at ${path}`); + const { name, version } = packageInfo; + return archiveEntryToBulkCreateObject({ path, buffer, name, version, installSource }); + }) + ); + + const results = await savedObjectsClient.bulkCreate(bulkBody); + return results; +} + +export async function archiveEntryToBulkCreateObject(opts: { + path: string; + buffer: Buffer; + name: string; + version: string; + installSource: InstallSource; +}): Promise> { + const { path, buffer, name, version, installSource } = opts; + const doc = await archiveEntryToESDocument({ path, buffer, name, version, installSource }); + return { + id: uuidv5(doc.asset_path, ID_NAMESPACE), + type: ASSETS_SAVED_OBJECT_TYPE, + attributes: doc, + }; +} diff --git a/x-pack/plugins/fleet/server/services/epm/archive/validation.ts b/x-pack/plugins/fleet/server/services/epm/archive/validation.ts index dc7a91e08799cb..cf5e7ae0f063c7 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/validation.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/validation.ts @@ -5,7 +5,7 @@ */ import yaml from 'js-yaml'; -import { uniq } from 'lodash'; +import { pick, uniq } from 'lodash'; import { ArchivePackage, RegistryPolicyTemplate, @@ -21,6 +21,45 @@ import { pkgToPkgKey } from '../registry'; const MANIFESTS: Record = {}; const MANIFEST_NAME = 'manifest.yml'; +// not sure these are 100% correct but they do the job here +// keeping them local until others need them +type OptionalPropertyOf = Exclude< + { + [K in keyof T]: T extends Record ? never : K; + }[keyof T], + undefined +>; +type RequiredPropertyOf = Exclude>; + +type RequiredPackageProp = RequiredPropertyOf; +type OptionalPackageProp = OptionalPropertyOf; +// pro: guarantee only supplying known values. these keys must be in ArchivePackage. no typos or new values +// pro: any values added to these lists will be passed through by default +// pro & con: values do need to be shadowed / repeated from ArchivePackage, but perhaps we want to limit values +const requiredArchivePackageProps: readonly RequiredPackageProp[] = [ + 'name', + 'version', + 'description', + 'title', + 'format_version', + 'release', + 'owner', +] as const; + +const optionalArchivePackageProps: readonly OptionalPackageProp[] = [ + 'readme', + 'assets', + 'data_streams', + 'internal', + 'license', + 'type', + 'categories', + 'conditions', + 'screenshots', + 'icons', + 'policy_templates', +] as const; + // TODO: everything below performs verification of manifest.yml files, and hence duplicates functionality already implemented in the // package registry. At some point this should probably be replaced (or enhanced) with verification based on // https://github.com/elastic/package-spec/ @@ -58,42 +97,51 @@ function parseAndVerifyArchive(paths: string[]): ArchivePackage { } // ... which must be valid YAML - let manifest; + let manifest: ArchivePackage; try { manifest = yaml.load(manifestBuffer.toString()); } catch (error) { throw new PackageInvalidArchiveError(`Could not parse top-level package manifest: ${error}.`); } - // Package name and version from the manifest must match those from the toplevel directory - const pkgKey = pkgToPkgKey({ name: manifest.name, version: manifest.version }); - if (toplevelDir !== pkgKey) { + // must have mandatory fields + const reqGiven = pick(manifest, requiredArchivePackageProps); + const requiredKeysMatch = + Object.keys(reqGiven).toString() === requiredArchivePackageProps.toString(); + if (!requiredKeysMatch) { + const list = requiredArchivePackageProps.join(', '); throw new PackageInvalidArchiveError( - `Name ${manifest.name} and version ${manifest.version} do not match top-level directory ${toplevelDir}` + `Invalid top-level package manifest: one or more fields missing of ${list}` ); } - const { name, version, description, type, categories, format_version: formatVersion } = manifest; - // check for mandatory fields - if (!(name && version && description && type && categories && formatVersion)) { + // at least have all required properties + // get optional values and combine into one object for the remaining operations + const optGiven = pick(manifest, optionalArchivePackageProps); + const parsed: ArchivePackage = { ...reqGiven, ...optGiven }; + + // Package name and version from the manifest must match those from the toplevel directory + const pkgKey = pkgToPkgKey({ name: parsed.name, version: parsed.version }); + if (toplevelDir !== pkgKey) { throw new PackageInvalidArchiveError( - 'Invalid top-level package manifest: one or more fields missing of name, version, description, type, categories, format_version' + `Name ${parsed.name} and version ${parsed.version} do not match top-level directory ${toplevelDir}` ); } - const dataStreams = parseAndVerifyDataStreams(paths, name, version); - const policyTemplates = parseAndVerifyPolicyTemplates(manifest); + parsed.data_streams = parseAndVerifyDataStreams(paths, parsed.name, parsed.version); + parsed.policy_templates = parseAndVerifyPolicyTemplates(manifest); + // add readme if exists + const readme = parseAndVerifyReadme(paths, parsed.name, parsed.version); + if (readme) { + parsed.readme = readme; + } - return { - name, - version, - description, - type, - categories, - format_version: formatVersion, - data_streams: dataStreams, - policy_templates: policyTemplates, - }; + return parsed; +} +function parseAndVerifyReadme(paths: string[], pkgName: string, pkgVersion: string): string | null { + const readmeRelPath = `/docs/README.md`; + const readmePath = `${pkgName}-${pkgVersion}${readmeRelPath}`; + return paths.includes(readmePath) ? `/package/${pkgName}/${pkgVersion}${readmeRelPath}` : null; } function parseAndVerifyDataStreams( paths: string[], diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/index_pattern/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/index_pattern/install.ts index ee5257b8a3ef62..bdb6744745c97a 100644 --- a/x-pack/plugins/fleet/server/services/epm/kibana/index_pattern/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/kibana/index_pattern/install.ts @@ -9,13 +9,12 @@ import { INDEX_PATTERN_SAVED_OBJECT_TYPE, INDEX_PATTERN_PLACEHOLDER_SUFFIX, } from '../../../../constants'; -import * as Registry from '../../registry'; import { loadFieldsFromYaml, Fields, Field } from '../../fields/field'; -import { getPackageKeysByStatus } from '../../packages/get'; import { dataTypes, installationStatuses } from '../../../../../common/constants'; -import { ValueOf } from '../../../../../common/types'; +import { ArchivePackage, InstallSource, ValueOf } from '../../../../../common/types'; import { RegistryPackage, CallESAsCurrentUser, DataType } from '../../../../types'; import { appContextService } from '../../../../services'; +import { getPackageFromSource, getPackageSavedObjects } from '../../packages/get'; interface FieldFormatMap { [key: string]: FieldFormatMapItem; @@ -73,45 +72,54 @@ export interface IndexPatternField { } export const indexPatternTypes = Object.values(dataTypes); -// TODO: use a function overload and make pkgName and pkgVersion required for install/update -// and not for an update removal. or separate out the functions export async function installIndexPatterns( savedObjectsClient: SavedObjectsClientContract, pkgName?: string, - pkgVersion?: string + pkgVersion?: string, + installSource?: InstallSource ) { // get all user installed packages - const installedPackages = await getPackageKeysByStatus( - savedObjectsClient, - installationStatuses.Installed + const installedPackagesRes = await getPackageSavedObjects(savedObjectsClient); + const installedPackagesSavedObjects = installedPackagesRes.saved_objects.filter( + (so) => so.attributes.install_status === installationStatuses.Installed ); - const packageVersionsToFetch = [...installedPackages]; - if (pkgName && pkgVersion) { - const packageToInstall = packageVersionsToFetch.find((pkg) => pkg.pkgName === pkgName); + const packagesToFetch = installedPackagesSavedObjects.reduce< + Array<{ name: string; version: string; installSource: InstallSource }> + >((acc, pkgSO) => { + acc.push({ + name: pkgSO.attributes.name, + version: pkgSO.attributes.version, + installSource: pkgSO.attributes.install_source, + }); + return acc; + }, []); + if (pkgName && pkgVersion && installSource) { + const packageToInstall = packagesToFetch.find((pkgSO) => pkgSO.name === pkgName); if (packageToInstall) { // set the version to the one we want to install - // if we're installing for the first time the number will be the same + // if we're reinstalling the number will be the same // if this is an upgrade then we'll be modifying the version number to the upgrade version - packageToInstall.pkgVersion = pkgVersion; + packageToInstall.version = pkgVersion; } else { - // this will likely not happen because the saved objects should already have the package we're trying - // install which means that it should have been found in the case above - packageVersionsToFetch.push({ pkgName, pkgVersion }); + // if we're installing for the first time, add to the list + packagesToFetch.push({ name: pkgName, version: pkgVersion, installSource }); } } // get each package's registry info - const packageVersionsFetchInfoPromise = packageVersionsToFetch.map((pkg) => - Registry.fetchInfo(pkg.pkgName, pkg.pkgVersion) + const packagesToFetchPromise = packagesToFetch.map((pkg) => + getPackageFromSource({ + pkgName: pkg.name, + pkgVersion: pkg.version, + pkgInstallSource: pkg.installSource, + }) ); - - const packageVersionsInfo = await Promise.all(packageVersionsFetchInfoPromise); - + const packages = await Promise.all(packagesToFetchPromise); // for each index pattern type, create an index pattern indexPatternTypes.forEach(async (indexPatternType) => { // if this is an update because a package is being uninstalled (no pkgkey argument passed) and no other packages are installed, remove the index pattern - if (!pkgName && installedPackages.length === 0) { + if (!pkgName && installedPackagesSavedObjects.length === 0) { try { await savedObjectsClient.delete(INDEX_PATTERN_SAVED_OBJECT_TYPE, `${indexPatternType}-*`); } catch (err) { @@ -119,9 +127,9 @@ export async function installIndexPatterns( } return; } - + const packagesWithInfo = packages.map((pkg) => pkg.packageInfo); // get all data stream fields from all installed packages - const fields = await getAllDataStreamFieldsByType(packageVersionsInfo, indexPatternType); + const fields = await getAllDataStreamFieldsByType(packagesWithInfo, indexPatternType); const kibanaIndexPattern = createIndexPattern(indexPatternType, fields); // create or overwrite the index pattern await savedObjectsClient.create(INDEX_PATTERN_SAVED_OBJECT_TYPE, kibanaIndexPattern, { @@ -134,7 +142,7 @@ export async function installIndexPatterns( // loops through all given packages and returns an array // of all fields from all data streams matching data stream type export const getAllDataStreamFieldsByType = async ( - packages: RegistryPackage[], + packages: Array, dataStreamType: ValueOf ): Promise => { const dataStreamsPromises = packages.reduce>>((acc, pkg) => { @@ -143,9 +151,9 @@ export const getAllDataStreamFieldsByType = async ( const matchingDataStreams = pkg.data_streams.filter( (dataStream) => dataStream.type === dataStreamType ); - matchingDataStreams.forEach((dataStream) => - acc.push(loadFieldsFromYaml(pkg, dataStream.path)) - ); + matchingDataStreams.forEach((dataStream) => { + acc.push(loadFieldsFromYaml(pkg, dataStream.path)); + }); } return acc; }, []); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index b7650d10b6b250..6d97cbc83d2aa3 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -63,12 +63,16 @@ describe('_installPackage', () => { callCluster, paths: [], packageInfo: { + title: 'title', name: 'xyz', version: '4.5.6', description: 'test', - type: 'x', - categories: ['this', 'that'], + type: 'integration', + categories: ['cloud', 'custom'], format_version: 'string', + release: 'experimental', + conditions: { kibana: { version: 'x.y.z' } }, + owner: { github: 'elastic/fleet' }, }, installType: 'install', installSource: 'registry', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts index 4d36c3919198cc..7b84ecc259a5f8 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.ts @@ -5,7 +5,13 @@ */ import { SavedObject, SavedObjectsClientContract } from 'src/core/server'; -import { InstallablePackage, InstallSource } from '../../../../common'; +import { + InstallablePackage, + InstallSource, + PackageAssetReference, + MAX_TIME_COMPLETE_INSTALL, + ASSETS_SAVED_OBJECT_TYPE, +} from '../../../../common'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../constants'; import { AssetReference, @@ -23,6 +29,7 @@ import { updateCurrentWriteIndices } from '../elasticsearch/template/template'; import { deleteKibanaSavedObjectsAssets } from './remove'; import { installTransform } from '../elasticsearch/transform/install'; import { createInstallation, saveKibanaAssetsRefs, updateVersion } from './install'; +import { saveArchiveEntries } from '../archive/save_to_es'; // this is only exported for testing // use a leading underscore to indicate it's not the supported path @@ -46,15 +53,29 @@ export async function _installPackage({ installSource: InstallSource; }): Promise { const { name: pkgName, version: pkgVersion } = packageInfo; - // add the package installation to the saved object. - // if some installation already exists, just update install info + // if some installation already exists if (installedPkg) { - await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { - install_version: pkgVersion, - install_status: 'installing', - install_started_at: new Date().toISOString(), - install_source: installSource, - }); + // if the installation is currently running, don't try to install + // instead, only return already installed assets + if ( + installedPkg.attributes.install_status === 'installing' && + Date.now() - Date.parse(installedPkg.attributes.install_started_at) < + MAX_TIME_COMPLETE_INSTALL + ) { + let assets: AssetReference[] = []; + assets = assets.concat(installedPkg.attributes.installed_es); + assets = assets.concat(installedPkg.attributes.installed_kibana); + return assets; + } else { + // if no installation is running, or the installation has been running longer than MAX_TIME_COMPLETE_INSTALL + // (it might be stuck) update the saved object and proceed + await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { + install_version: pkgVersion, + install_status: 'installing', + install_started_at: new Date().toISOString(), + install_source: installSource, + }); + } } else { await createInstallation({ savedObjectsClient, @@ -82,7 +103,8 @@ export async function _installPackage({ const installIndexPatternPromise = installIndexPatterns( savedObjectsClient, pkgName, - pkgVersion + pkgVersion, + installSource ).catch((reason) => (installIndexPatternError = reason)); const kibanaAssets = await getKibanaAssets(paths); if (installedPkg) @@ -162,12 +184,28 @@ export async function _installPackage({ if (installKibanaAssetsError) throw installKibanaAssetsError; await Promise.all([installKibanaAssetsPromise, installIndexPatternPromise]); + const packageAssetResults = await saveArchiveEntries({ + savedObjectsClient, + paths, + packageInfo, + installSource, + }); + const packageAssetRefs: PackageAssetReference[] = packageAssetResults.saved_objects.map( + (result) => ({ + id: result.id, + type: ASSETS_SAVED_OBJECT_TYPE, + }) + ); + // update to newly installed version when all assets are successfully installed if (installedPkg) await updateVersion(savedObjectsClient, pkgName, pkgVersion); + await savedObjectsClient.update(PACKAGES_SAVED_OBJECT_TYPE, pkgName, { install_version: pkgVersion, install_status: 'installed', + package_assets: packageAssetRefs, }); + return [ ...installedKibanaAssetsRefs, ...installedPipelines, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts index 770f342c0a6e78..33913b7f0c14de 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts @@ -21,7 +21,7 @@ export function getAssets( ): string[] { const assets: string[] = []; const { name, version } = packageInfo; - const paths = getArchiveFilelist({ name, version, installSource: 'registry' }); + const paths = getArchiveFilelist({ name, version }); // TODO: might be better to throw a PackageCacheError here if (!paths || paths.length === 0) return assets; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/ensure_installed_default_packages.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/ensure_installed_default_packages.test.ts index 4ad6fc96218dea..fe7b8be23b03b8 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/ensure_installed_default_packages.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/ensure_installed_default_packages.test.ts @@ -43,6 +43,7 @@ const mockInstallation: SavedObject = { id: 'test-pkg', installed_kibana: [{ type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }], installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + package_assets: [], es_index_patterns: { pattern: 'pattern-name' }, name: 'test package', version: '1.0.0', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index 3df2d39419ab89..0d7006ca41d2bb 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -7,8 +7,13 @@ import { SavedObjectsClientContract, SavedObjectsFindOptions } from 'src/core/server'; import { isPackageLimited, installationStatuses } from '../../../../common'; import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../constants'; -import { ArchivePackage, InstallSource, RegistryPackage, ValueOf } from '../../../../common/types'; -import { Installation, InstallationStatus, PackageInfo, KibanaAssetType } from '../../../types'; +import { + ArchivePackage, + InstallSource, + RegistryPackage, + EpmPackageAdditions, +} from '../../../../common/types'; +import { Installation, PackageInfo, KibanaAssetType } from '../../../types'; import * as Registry from '../registry'; import { createInstallableFrom, isRequiredPackage } from './index'; import { getArchivePackage } from '../archive'; @@ -84,26 +89,6 @@ export async function getPackageSavedObjects( }); } -export async function getPackageKeysByStatus( - savedObjectsClient: SavedObjectsClientContract, - status: ValueOf -) { - const allPackages = await getPackages({ savedObjectsClient, experimental: true }); - return allPackages.reduce>((acc, pkg) => { - if (pkg.status === status) { - if (pkg.status === installationStatuses.Installed) { - // if we're looking for installed packages grab the version from the saved object because `getPackages` will - // return the latest package information from the registry - acc.push({ pkgName: pkg.name, pkgVersion: pkg.savedObject.attributes.version }); - } else { - acc.push({ pkgName: pkg.name, pkgVersion: pkg.version }); - } - } - - return acc; - }, []); -} - export async function getPackageInfo(options: { savedObjectsClient: SavedObjectsClientContract; pkgName: string; @@ -118,19 +103,23 @@ export async function getPackageInfo(options: { const getPackageRes = await getPackageFromSource({ pkgName, pkgVersion, - pkgInstallSource: savedObject?.attributes.install_source, + pkgInstallSource: + savedObject?.attributes.version === pkgVersion + ? savedObject?.attributes.install_source + : 'registry', }); const paths = getPackageRes.paths; const packageInfo = getPackageRes.packageInfo; // add properties that aren't (or aren't yet) on the package - const updated = { - ...packageInfo, + const additions: EpmPackageAdditions = { latestVersion: latestPackage.version, title: packageInfo.title || nameAsTitle(packageInfo.name), assets: Registry.groupPathsByService(paths || []), removable: !isRequiredPackage(pkgName), }; + const updated = { ...packageInfo, ...additions }; + return createInstallableFrom(updated, savedObject); } @@ -139,7 +128,10 @@ export async function getPackageFromSource(options: { pkgName: string; pkgVersion: string; pkgInstallSource?: InstallSource; -}): Promise<{ paths: string[] | undefined; packageInfo: RegistryPackage | ArchivePackage }> { +}): Promise<{ + paths: string[] | undefined; + packageInfo: RegistryPackage | ArchivePackage; +}> { const { pkgName, pkgVersion, pkgInstallSource } = options; // TODO: Check package storage before checking registry let res; @@ -147,14 +139,16 @@ export async function getPackageFromSource(options: { res = getArchivePackage({ name: pkgName, version: pkgVersion, - installSource: pkgInstallSource, }); - if (!res.packageInfo) - throw new Error(`installed package ${pkgName}-${pkgVersion} does not exist in cache`); } else { res = await Registry.getRegistryPackage(pkgName, pkgVersion); } - return res; + if (!res.packageInfo || !res.paths) + throw new Error(`package info for ${pkgName}-${pkgVersion} does not exist`); + return { + paths: res.paths, + packageInfo: res.packageInfo, + }; } export async function getInstallationObject(options: { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get_install_type.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get_install_type.test.ts index a41511260c6e72..2dcfc7949d5e55 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get_install_type.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get_install_type.test.ts @@ -15,6 +15,7 @@ const mockInstallation: SavedObject = { id: 'test-pkg', installed_kibana: [{ type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }], installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + package_assets: [], es_index_patterns: { pattern: 'pattern-name' }, name: 'test packagek', version: '1.0.0', @@ -32,6 +33,7 @@ const mockInstallationUpdateFail: SavedObject = { id: 'test-pkg', installed_kibana: [{ type: KibanaSavedObjectType.dashboard, id: 'dashboard-1' }], installed_es: [{ type: ElasticsearchAssetType.ingestPipeline, id: 'pipeline' }], + package_assets: [], es_index_patterns: { pattern: 'pattern-name' }, name: 'test packagek', version: '1.0.0', diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index e73a5d35338289..d641c4945e6817 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -313,7 +313,6 @@ async function installPackageByUpload({ setPackageInfo({ name: packageInfo.name, version: packageInfo.version, - installSource, packageInfo, }); @@ -380,6 +379,7 @@ export async function createInstallation(options: { { installed_kibana: [], installed_es: [], + package_assets: [], es_index_patterns: toSaveESIndexPatterns, name: pkgName, version: pkgVersion, diff --git a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts index ca84980107fe36..6e0d574d311cc0 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/remove.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/remove.ts @@ -23,6 +23,7 @@ import { deleteTransforms } from '../elasticsearch/transform/remove'; import { packagePolicyService, appContextService } from '../..'; import { splitPkgKey } from '../registry'; import { deletePackageCache } from '../archive'; +import { removeArchiveEntries } from '../archive/save_to_es'; export async function removeInstallation(options: { savedObjectsClient: SavedObjectsClientContract; @@ -48,7 +49,7 @@ export async function removeInstallation(options: { `unable to remove package with existing package policy(s) in use by agent(s)` ); - // Delete the installed assets + // Delete the installed assets. Don't include installation.package_assets. Those are irrelevant to users const installedAssets = [...installation.installed_kibana, ...installation.installed_es]; await deleteAssets(installation, savedObjectsClient, callCluster); @@ -66,9 +67,10 @@ export async function removeInstallation(options: { deletePackageCache({ name: pkgName, version: pkgVersion, - installSource: installation.install_source, }); + await removeArchiveEntries({ savedObjectsClient, refs: installation.package_assets }); + // successful delete's in SO client return {}. return something more useful return installedAssets; } diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 2d496055df78ae..d8368f2a46d190 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -128,11 +128,10 @@ export async function fetchCategories(params?: CategoriesParams): Promise { const installSource = 'registry'; - let paths = getArchiveFilelist({ name, version, installSource }); + let paths = getArchiveFilelist({ name, version }); if (!paths || paths.length === 0) { const { archiveBuffer, archivePath } = await fetchArchiveBuffer(name, version); paths = await unpackBufferToCache({ @@ -172,7 +171,7 @@ export async function ensureCachedArchiveInfo( version: string, installSource: InstallSource = 'registry' ) { - const paths = getArchiveFilelist({ name, version, installSource }); + const paths = getArchiveFilelist({ name, version }); if (!paths || paths.length === 0) { if (installSource === 'registry') { await getRegistryPackage(name, version); diff --git a/x-pack/plugins/fleet/server/services/package_policy.test.ts b/x-pack/plugins/fleet/server/services/package_policy.test.ts index 6ae76c56436d57..30a980ab07f706 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.test.ts @@ -25,7 +25,16 @@ paths: }, ]; } - return []; + return [ + { + buffer: Buffer.from(` +hosts: +{{#each hosts}} +- {{this}} +{{/each}} +`), + }, + ]; } jest.mock('./epm/packages/assets', () => { @@ -47,9 +56,9 @@ jest.mock('./epm/registry', () => { }); describe('Package policy service', () => { - describe('assignPackageStream', () => { + describe('compilePackagePolicyInputs', () => { it('should work with config variables from the stream', async () => { - const inputs = await packagePolicyService.assignPackageStream( + const inputs = await packagePolicyService.compilePackagePolicyInputs( ({ data_streams: [ { @@ -110,7 +119,7 @@ describe('Package policy service', () => { }); it('should work with config variables at the input level', async () => { - const inputs = await packagePolicyService.assignPackageStream( + const inputs = await packagePolicyService.compilePackagePolicyInputs( ({ data_streams: [ { @@ -169,6 +178,117 @@ describe('Package policy service', () => { }, ]); }); + + it('should work with an input with a template and no streams', async () => { + const inputs = await packagePolicyService.compilePackagePolicyInputs( + ({ + data_streams: [], + policy_templates: [ + { + inputs: [{ type: 'log', template_path: 'some_template_path.yml' }], + }, + ], + } as unknown) as PackageInfo, + [ + { + type: 'log', + enabled: true, + vars: { + hosts: { + value: ['localhost'], + }, + }, + streams: [], + }, + ] + ); + + expect(inputs).toEqual([ + { + type: 'log', + enabled: true, + vars: { + hosts: { + value: ['localhost'], + }, + }, + compiled_input: { + hosts: ['localhost'], + }, + streams: [], + }, + ]); + }); + + it('should work with an input with a template and streams', async () => { + const inputs = await packagePolicyService.compilePackagePolicyInputs( + ({ + data_streams: [ + { + dataset: 'package.dataset1', + type: 'logs', + streams: [{ input: 'log', template_path: 'some_template_path.yml' }], + }, + ], + policy_templates: [ + { + inputs: [{ type: 'log', template_path: 'some_template_path.yml' }], + }, + ], + } as unknown) as PackageInfo, + [ + { + type: 'log', + enabled: true, + vars: { + hosts: { + value: ['localhost'], + }, + paths: { + value: ['/var/log/set.log'], + }, + }, + streams: [ + { + id: 'datastream01', + data_stream: { dataset: 'package.dataset1', type: 'logs' }, + enabled: true, + }, + ], + }, + ] + ); + + expect(inputs).toEqual([ + { + type: 'log', + enabled: true, + vars: { + hosts: { + value: ['localhost'], + }, + paths: { + value: ['/var/log/set.log'], + }, + }, + compiled_input: { + hosts: ['localhost'], + }, + streams: [ + { + id: 'datastream01', + data_stream: { dataset: 'package.dataset1', type: 'logs' }, + enabled: true, + compiled_stream: { + metricset: ['dataset1'], + paths: ['/var/log/set.log'], + type: 'log', + }, + }, + ], + }, + ]); + }); }); describe('update', () => { diff --git a/x-pack/plugins/fleet/server/services/package_policy.ts b/x-pack/plugins/fleet/server/services/package_policy.ts index 0f78c97a6f2bdc..7b8952bdea2cd8 100644 --- a/x-pack/plugins/fleet/server/services/package_policy.ts +++ b/x-pack/plugins/fleet/server/services/package_policy.ts @@ -31,7 +31,7 @@ import { outputService } from './output'; import * as Registry from './epm/registry'; import { getPackageInfo, getInstallation, ensureInstalledPackage } from './epm/packages'; import { getAssetsData } from './epm/packages/assets'; -import { createStream } from './epm/agent/agent'; +import { compileTemplate } from './epm/agent/agent'; import { normalizeKuery } from './saved_object'; const SAVED_OBJECT_TYPE = PACKAGE_POLICY_SAVED_OBJECT_TYPE; @@ -92,7 +92,7 @@ class PackagePolicyService { } } - inputs = await this.assignPackageStream(pkgInfo, inputs); + inputs = await this.compilePackagePolicyInputs(pkgInfo, inputs); } const isoDate = new Date().toISOString(); @@ -285,7 +285,7 @@ class PackagePolicyService { pkgVersion: packagePolicy.package.version, }); - inputs = await this.assignPackageStream(pkgInfo, inputs); + inputs = await this.compilePackagePolicyInputs(pkgInfo, inputs); } await soClient.update( @@ -374,14 +374,20 @@ class PackagePolicyService { } } - public async assignPackageStream( + public async compilePackagePolicyInputs( pkgInfo: PackageInfo, inputs: PackagePolicyInput[] ): Promise { const registryPkgInfo = await Registry.fetchInfo(pkgInfo.name, pkgInfo.version); - const inputsPromises = inputs.map((input) => - _assignPackageStreamToInput(registryPkgInfo, pkgInfo, input) - ); + const inputsPromises = inputs.map(async (input) => { + const compiledInput = await _compilePackagePolicyInput(registryPkgInfo, pkgInfo, input); + const compiledStreams = await _compilePackageStreams(registryPkgInfo, pkgInfo, input); + return { + ...input, + compiled_input: compiledInput, + streams: compiledStreams, + }; + }); return Promise.all(inputsPromises); } @@ -396,20 +402,53 @@ function assignStreamIdToInput(packagePolicyId: string, input: NewPackagePolicyI }; } -async function _assignPackageStreamToInput( +async function _compilePackagePolicyInput( + registryPkgInfo: RegistryPackage, + pkgInfo: PackageInfo, + input: PackagePolicyInput +) { + if (!input.enabled || !pkgInfo.policy_templates?.[0].inputs) { + return undefined; + } + + const packageInputs = pkgInfo.policy_templates[0].inputs; + const packageInput = packageInputs.find((pkgInput) => pkgInput.type === input.type); + if (!packageInput) { + throw new Error(`Input template not found, unable to find input type ${input.type}`); + } + + if (!packageInput.template_path) { + return undefined; + } + + const [pkgInputTemplate] = await getAssetsData(registryPkgInfo, (path: string) => + path.endsWith(`/agent/input/${packageInput.template_path!}`) + ); + + if (!pkgInputTemplate || !pkgInputTemplate.buffer) { + throw new Error(`Unable to load input template at /agent/input/${packageInput.template_path!}`); + } + + return compileTemplate( + // Populate template variables from input vars + Object.assign({}, input.vars), + pkgInputTemplate.buffer.toString() + ); +} + +async function _compilePackageStreams( registryPkgInfo: RegistryPackage, pkgInfo: PackageInfo, input: PackagePolicyInput ) { const streamsPromises = input.streams.map((stream) => - _assignPackageStreamToStream(registryPkgInfo, pkgInfo, input, stream) + _compilePackageStream(registryPkgInfo, pkgInfo, input, stream) ); - const streams = await Promise.all(streamsPromises); - return { ...input, streams }; + return await Promise.all(streamsPromises); } -async function _assignPackageStreamToStream( +async function _compilePackageStream( registryPkgInfo: RegistryPackage, pkgInfo: PackageInfo, input: PackagePolicyInput, @@ -442,22 +481,22 @@ async function _assignPackageStreamToStream( throw new Error(`Stream template path not found for dataset ${datasetPath}`); } - const [pkgStream] = await getAssetsData( + const [pkgStreamTemplate] = await getAssetsData( registryPkgInfo, (path: string) => path.endsWith(streamFromPkg.template_path), datasetPath ); - if (!pkgStream || !pkgStream.buffer) { + if (!pkgStreamTemplate || !pkgStreamTemplate.buffer) { throw new Error( `Unable to load stream template ${streamFromPkg.template_path} for dataset ${datasetPath}` ); } - const yaml = createStream( + const yaml = compileTemplate( // Populate template variables from input vars and stream vars Object.assign({}, input.vars, stream.vars), - pkgStream.buffer.toString() + pkgStreamTemplate.buffer.toString() ); stream.compiled_stream = yaml; diff --git a/x-pack/plugins/global_search/common/types.ts b/x-pack/plugins/global_search/common/types.ts index a08ecaf41b2137..7cc1d7ada44229 100644 --- a/x-pack/plugins/global_search/common/types.ts +++ b/x-pack/plugins/global_search/common/types.ts @@ -87,3 +87,28 @@ export interface GlobalSearchBatchedResults { */ results: GlobalSearchResult[]; } + +/** + * Search parameters for the {@link GlobalSearchPluginStart.find | `find` API} + * + * @public + */ +export interface GlobalSearchFindParams { + /** + * The term to search for. Can be undefined if searching by filters. + */ + term?: string; + /** + * The types of results to search for. + */ + types?: string[]; + /** + * The tag ids to filter search by. + */ + tags?: string[]; +} + +/** + * @public + */ +export type GlobalSearchProviderFindParams = GlobalSearchFindParams; diff --git a/x-pack/plugins/global_search/jest.config.js b/x-pack/plugins/global_search/jest.config.js new file mode 100644 index 00000000000000..2ad904d8c57c44 --- /dev/null +++ b/x-pack/plugins/global_search/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/global_search'], +}; diff --git a/x-pack/plugins/global_search/public/index.ts b/x-pack/plugins/global_search/public/index.ts index 18483cea725402..0e1cbaedae7821 100644 --- a/x-pack/plugins/global_search/public/index.ts +++ b/x-pack/plugins/global_search/public/index.ts @@ -25,6 +25,8 @@ export { GlobalSearchProviderResult, GlobalSearchProviderResultUrl, GlobalSearchResult, + GlobalSearchFindParams, + GlobalSearchProviderFindParams, } from '../common/types'; export { GlobalSearchPluginSetup, diff --git a/x-pack/plugins/global_search/public/mocks.ts b/x-pack/plugins/global_search/public/mocks.ts index 97dc01e92dbfef..8b0bfec66f61de 100644 --- a/x-pack/plugins/global_search/public/mocks.ts +++ b/x-pack/plugins/global_search/public/mocks.ts @@ -20,6 +20,7 @@ const createStartMock = (): jest.Mocked => { return { find: searchMock.find, + getSearchableTypes: searchMock.getSearchableTypes, }; }; diff --git a/x-pack/plugins/global_search/public/plugin.ts b/x-pack/plugins/global_search/public/plugin.ts index 6af8ec32a581d4..a861911d935b46 100644 --- a/x-pack/plugins/global_search/public/plugin.ts +++ b/x-pack/plugins/global_search/public/plugin.ts @@ -45,13 +45,14 @@ export class GlobalSearchPlugin start({ http }: CoreStart, { licensing }: GlobalSearchPluginStartDeps) { this.licenseChecker = new LicenseChecker(licensing.license$); - const { find } = this.searchService.start({ + const { find, getSearchableTypes } = this.searchService.start({ http, licenseChecker: this.licenseChecker, }); return { find, + getSearchableTypes, }; } diff --git a/x-pack/plugins/global_search/public/services/fetch_server_results.test.ts b/x-pack/plugins/global_search/public/services/fetch_server_results.test.ts index f62acd08633ff1..4794c355a161bc 100644 --- a/x-pack/plugins/global_search/public/services/fetch_server_results.test.ts +++ b/x-pack/plugins/global_search/public/services/fetch_server_results.test.ts @@ -33,11 +33,18 @@ describe('fetchServerResults', () => { it('perform a POST request to the endpoint with valid options', () => { http.post.mockResolvedValue({ results: [] }); - fetchServerResults(http, 'some term', { preference: 'pref' }); + fetchServerResults( + http, + { term: 'some term', types: ['dashboard', 'map'] }, + { preference: 'pref' } + ); expect(http.post).toHaveBeenCalledTimes(1); expect(http.post).toHaveBeenCalledWith('/internal/global_search/find', { - body: JSON.stringify({ term: 'some term', options: { preference: 'pref' } }), + body: JSON.stringify({ + params: { term: 'some term', types: ['dashboard', 'map'] }, + options: { preference: 'pref' }, + }), }); }); @@ -47,7 +54,11 @@ describe('fetchServerResults', () => { http.post.mockResolvedValue({ results: [resultA, resultB] }); - const results = await fetchServerResults(http, 'some term', { preference: 'pref' }).toPromise(); + const results = await fetchServerResults( + http, + { term: 'some term' }, + { preference: 'pref' } + ).toPromise(); expect(http.post).toHaveBeenCalledTimes(1); expect(results).toHaveLength(2); @@ -65,7 +76,7 @@ describe('fetchServerResults', () => { getTestScheduler().run(({ expectObservable, hot }) => { http.post.mockReturnValue(hot('---(a|)', { a: { results: [] } }) as any); - const results = fetchServerResults(http, 'term', {}); + const results = fetchServerResults(http, { term: 'term' }, {}); expectObservable(results).toBe('---(a|)', { a: [], @@ -77,7 +88,7 @@ describe('fetchServerResults', () => { getTestScheduler().run(({ expectObservable, hot }) => { http.post.mockReturnValue(hot('---(a|)', { a: { results: [] } }) as any); const aborted$ = hot('-(a|)', { a: undefined }); - const results = fetchServerResults(http, 'term', { aborted$ }); + const results = fetchServerResults(http, { term: 'term' }, { aborted$ }); expectObservable(results).toBe('-|', { a: [], diff --git a/x-pack/plugins/global_search/public/services/fetch_server_results.ts b/x-pack/plugins/global_search/public/services/fetch_server_results.ts index 3c06dfab9f50e3..7508c8db571656 100644 --- a/x-pack/plugins/global_search/public/services/fetch_server_results.ts +++ b/x-pack/plugins/global_search/public/services/fetch_server_results.ts @@ -7,7 +7,7 @@ import { Observable, from, EMPTY } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { HttpStart } from 'src/core/public'; -import { GlobalSearchResult } from '../../common/types'; +import { GlobalSearchResult, GlobalSearchProviderFindParams } from '../../common/types'; import { GlobalSearchFindOptions } from './types'; interface ServerFetchResponse { @@ -24,7 +24,7 @@ interface ServerFetchResponse { */ export const fetchServerResults = ( http: HttpStart, - term: string, + params: GlobalSearchProviderFindParams, { preference, aborted$ }: GlobalSearchFindOptions ): Observable => { let controller: AbortController | undefined; @@ -36,7 +36,7 @@ export const fetchServerResults = ( } return from( http.post('/internal/global_search/find', { - body: JSON.stringify({ term, options: { preference } }), + body: JSON.stringify({ params, options: { preference } }), signal: controller?.signal, }) ).pipe( diff --git a/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.test.ts b/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.test.ts new file mode 100644 index 00000000000000..002ea0cff20d8b --- /dev/null +++ b/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.test.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { httpServiceMock } from '../../../../../src/core/public/mocks'; +import { fetchServerSearchableTypes } from './fetch_server_searchable_types'; + +describe('fetchServerSearchableTypes', () => { + let http: ReturnType; + + beforeEach(() => { + http = httpServiceMock.createStartContract(); + }); + + it('perform a GET request to the endpoint with valid options', () => { + http.get.mockResolvedValue({ results: [] }); + + fetchServerSearchableTypes(http); + + expect(http.get).toHaveBeenCalledTimes(1); + expect(http.get).toHaveBeenCalledWith('/internal/global_search/searchable_types'); + }); + + it('returns the results from the server', async () => { + const types = ['typeA', 'typeB']; + + http.get.mockResolvedValue({ types }); + + const results = await fetchServerSearchableTypes(http); + + expect(http.get).toHaveBeenCalledTimes(1); + expect(results).toEqual(types); + }); +}); diff --git a/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.ts b/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.ts new file mode 100644 index 00000000000000..c4a07249918702 --- /dev/null +++ b/x-pack/plugins/global_search/public/services/fetch_server_searchable_types.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { HttpStart } from 'src/core/public'; + +interface ServerSearchableTypesResponse { + types: string[]; +} + +export const fetchServerSearchableTypes = async (http: HttpStart) => { + const { types } = await http.get( + '/internal/global_search/searchable_types' + ); + return types; +}; diff --git a/x-pack/plugins/global_search/public/services/search_service.mock.ts b/x-pack/plugins/global_search/public/services/search_service.mock.ts index eca69148288b9c..0aa65e39f026c5 100644 --- a/x-pack/plugins/global_search/public/services/search_service.mock.ts +++ b/x-pack/plugins/global_search/public/services/search_service.mock.ts @@ -7,17 +7,21 @@ import { SearchServiceSetup, SearchServiceStart } from './search_service'; import { of } from 'rxjs'; -const createSetupMock = (): jest.Mocked => { - return { +const createSetupMock = () => { + const mock: jest.Mocked = { registerResultProvider: jest.fn(), }; + + return mock; }; -const createStartMock = (): jest.Mocked => { - const mock = { +const createStartMock = () => { + const mock: jest.Mocked = { find: jest.fn(), + getSearchableTypes: jest.fn(), }; mock.find.mockReturnValue(of({ results: [] })); + mock.getSearchableTypes.mockResolvedValue([]); return mock; }; diff --git a/x-pack/plugins/global_search/public/services/search_service.test.mocks.ts b/x-pack/plugins/global_search/public/services/search_service.test.mocks.ts index 1caabd6a1681c4..bbc513c78759e2 100644 --- a/x-pack/plugins/global_search/public/services/search_service.test.mocks.ts +++ b/x-pack/plugins/global_search/public/services/search_service.test.mocks.ts @@ -9,6 +9,11 @@ jest.doMock('./fetch_server_results', () => ({ fetchServerResults: fetchServerResultsMock, })); +export const fetchServerSearchableTypesMock = jest.fn(); +jest.doMock('./fetch_server_searchable_types', () => ({ + fetchServerSearchableTypes: fetchServerSearchableTypesMock, +})); + export const getDefaultPreferenceMock = jest.fn(); jest.doMock('./utils', () => { const original = jest.requireActual('./utils'); diff --git a/x-pack/plugins/global_search/public/services/search_service.test.ts b/x-pack/plugins/global_search/public/services/search_service.test.ts index 350547a928fe4b..297a27e3c837cd 100644 --- a/x-pack/plugins/global_search/public/services/search_service.test.ts +++ b/x-pack/plugins/global_search/public/services/search_service.test.ts @@ -4,7 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import { fetchServerResultsMock, getDefaultPreferenceMock } from './search_service.test.mocks'; +import { + fetchServerResultsMock, + getDefaultPreferenceMock, + fetchServerSearchableTypesMock, +} from './search_service.test.mocks'; import { Observable, of } from 'rxjs'; import { take } from 'rxjs/operators'; @@ -41,10 +45,17 @@ describe('SearchService', () => { const createProvider = ( id: string, - source: Observable = of([]) + { + source = of([]), + types = [], + }: { + source?: Observable; + types?: string[] | Promise; + } = {} ): jest.Mocked => ({ id, find: jest.fn().mockImplementation((term, options, context) => source), + getSearchableTypes: jest.fn().mockReturnValue(types), }); const expectedResult = (id: string) => expect.objectContaining({ id }); @@ -85,6 +96,9 @@ describe('SearchService', () => { fetchServerResultsMock.mockClear(); fetchServerResultsMock.mockReturnValue(of()); + fetchServerSearchableTypesMock.mockClear(); + fetchServerSearchableTypesMock.mockResolvedValue([]); + getDefaultPreferenceMock.mockClear(); getDefaultPreferenceMock.mockReturnValue('default_pref'); }); @@ -116,11 +130,14 @@ describe('SearchService', () => { registerResultProvider(provider); const { find } = service.start(startDeps()); - find('foobar', { preference: 'pref' }); + find( + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, + { preference: 'pref' } + ); expect(provider.find).toHaveBeenCalledTimes(1); expect(provider.find).toHaveBeenCalledWith( - 'foobar', + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, expect.objectContaining({ preference: 'pref' }) ); }); @@ -129,12 +146,15 @@ describe('SearchService', () => { service.setup({ config: createConfig() }); const { find } = service.start(startDeps()); - find('foobar', { preference: 'pref' }); + find( + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, + { preference: 'pref' } + ); expect(fetchServerResultsMock).toHaveBeenCalledTimes(1); expect(fetchServerResultsMock).toHaveBeenCalledWith( httpStart, - 'foobar', + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, expect.objectContaining({ preference: 'pref', aborted$: expect.any(Object) }) ); }); @@ -148,25 +168,25 @@ describe('SearchService', () => { registerResultProvider(provider); const { find } = service.start(startDeps()); - find('foobar', { preference: 'pref' }); + find({ term: 'foobar' }, { preference: 'pref' }); expect(getDefaultPreferenceMock).not.toHaveBeenCalled(); expect(provider.find).toHaveBeenNthCalledWith( 1, - 'foobar', + { term: 'foobar' }, expect.objectContaining({ preference: 'pref', }) ); - find('foobar', {}); + find({ term: 'foobar' }, {}); expect(getDefaultPreferenceMock).toHaveBeenCalledTimes(1); expect(provider.find).toHaveBeenNthCalledWith( 2, - 'foobar', + { term: 'foobar' }, expect.objectContaining({ preference: 'default_pref', }) @@ -183,10 +203,10 @@ describe('SearchService', () => { a: [providerResult('1')], b: [providerResult('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('a-b-|', { a: expectedBatch('1'), @@ -207,7 +227,7 @@ describe('SearchService', () => { fetchServerResultsMock.mockReturnValue(serverResults); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('a-b-|', { a: expectedBatch('1'), @@ -223,26 +243,24 @@ describe('SearchService', () => { getTestScheduler().run(({ expectObservable, hot }) => { registerResultProvider( - createProvider( - 'A', - hot('a---d-|', { + createProvider('A', { + source: hot('a---d-|', { a: [providerResult('A1'), providerResult('A2')], d: [providerResult('A3')], - }) - ) + }), + }) ); registerResultProvider( - createProvider( - 'B', - hot('-b-c| ', { + createProvider('B', { + source: hot('-b-c| ', { b: [providerResult('B1')], c: [providerResult('B2'), providerResult('B3')], - }) - ) + }), + }) ); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('ab-cd-|', { a: expectedBatch('A1', 'A2'), @@ -266,17 +284,16 @@ describe('SearchService', () => { ); registerResultProvider( - createProvider( - 'A', - hot('a-b-|', { + createProvider('A', { + source: hot('a-b-|', { a: [providerResult('P1')], b: [providerResult('P2')], - }) - ) + }), + }) ); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('a-b--(c|)', { a: expectedBatch('P1'), @@ -296,12 +313,12 @@ describe('SearchService', () => { a: [providerResult('1')], b: [providerResult('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const aborted$ = hot('----a--|', { a: undefined }); const { find } = service.start(startDeps()); - const results = find('foo', { aborted$ }); + const results = find({ term: 'foobar' }, { aborted$ }); expectObservable(results).toBe('--a-|', { a: expectedBatch('1'), @@ -320,10 +337,10 @@ describe('SearchService', () => { b: [providerResult('2')], c: [providerResult('3')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('a 24ms b 74ms |', { a: expectedBatch('1'), @@ -340,26 +357,24 @@ describe('SearchService', () => { getTestScheduler().run(({ expectObservable, hot }) => { registerResultProvider( - createProvider( - 'A', - hot('a---d-|', { + createProvider('A', { + source: hot('a---d-|', { a: [providerResult('A1'), providerResult('A2')], d: [providerResult('A3')], - }) - ) + }), + }) ); registerResultProvider( - createProvider( - 'B', - hot('-b-c| ', { + createProvider('B', { + source: hot('-b-c| ', { b: [providerResult('B1')], c: [providerResult('B2'), providerResult('B3')], - }) - ) + }), + }) ); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe('ab-(c|)', { a: expectedBatch('A1', 'A2'), @@ -388,11 +403,11 @@ describe('SearchService', () => { url: { path: '/foo', prependBasePath: false }, }); - const provider = createProvider('A', of([resultA, resultB])); + const provider = createProvider('A', { source: of([resultA, resultB]) }); registerResultProvider(provider); const { find } = service.start(startDeps()); - const batch = await find('foo', {}).pipe(take(1)).toPromise(); + const batch = await find({ term: 'foobar' }, {}).pipe(take(1)).toPromise(); expect(batch.results).toHaveLength(2); expect(batch.results[0]).toEqual({ @@ -417,10 +432,10 @@ describe('SearchService', () => { a: [providerResult('1')], b: [providerResult('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start(startDeps()); - const results = find('foo', {}); + const results = find({ term: 'foobar' }, {}); expectObservable(results).toBe( '#', @@ -432,5 +447,91 @@ describe('SearchService', () => { }); }); }); + + describe('#getSearchableTypes()', () => { + it('returns the types registered by the provider', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + }); + + const provider = createProvider('A', { types: ['type-a', 'type-b'] }); + registerResultProvider(provider); + + const { getSearchableTypes } = service.start(startDeps()); + + const types = await getSearchableTypes(); + + expect(types).toEqual(['type-a', 'type-b']); + }); + + it('returns the types registered by the server', async () => { + fetchServerSearchableTypesMock.mockResolvedValue(['server-a', 'server-b']); + + service.setup({ + config: createConfig(), + }); + + const { getSearchableTypes } = service.start(startDeps()); + + const types = await getSearchableTypes(); + + expect(types).toEqual(['server-a', 'server-b']); + }); + + it('merges the types registered by the providers', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + }); + + const provider1 = createProvider('A', { types: ['type-a', 'type-b'] }); + registerResultProvider(provider1); + + const provider2 = createProvider('B', { types: ['type-c', 'type-d'] }); + registerResultProvider(provider2); + + const { getSearchableTypes } = service.start(startDeps()); + + const types = await getSearchableTypes(); + + expect(types.sort()).toEqual(['type-a', 'type-b', 'type-c', 'type-d']); + }); + + it('merges the types registered by the providers and the server', async () => { + fetchServerSearchableTypesMock.mockResolvedValue(['server-a', 'server-b']); + + const { registerResultProvider } = service.setup({ + config: createConfig(), + }); + + const provider1 = createProvider('A', { types: ['type-a', 'type-b'] }); + registerResultProvider(provider1); + + const { getSearchableTypes } = service.start(startDeps()); + + const types = await getSearchableTypes(); + + expect(types.sort()).toEqual(['server-a', 'server-b', 'type-a', 'type-b']); + }); + + it('removes duplicates', async () => { + fetchServerSearchableTypesMock.mockResolvedValue(['server-a', 'dupe-1']); + + const { registerResultProvider } = service.setup({ + config: createConfig(), + }); + + const provider1 = createProvider('A', { types: ['type-a', 'dupe-1', 'dupe-2'] }); + registerResultProvider(provider1); + + const provider2 = createProvider('B', { types: ['type-b', 'dupe-2'] }); + registerResultProvider(provider2); + + const { getSearchableTypes } = service.start(startDeps()); + + const types = await getSearchableTypes(); + + expect(types.sort()).toEqual(['dupe-1', 'dupe-2', 'server-a', 'type-a', 'type-b']); + }); + }); }); }); diff --git a/x-pack/plugins/global_search/public/services/search_service.ts b/x-pack/plugins/global_search/public/services/search_service.ts index 62b347d9258688..015143d34886fd 100644 --- a/x-pack/plugins/global_search/public/services/search_service.ts +++ b/x-pack/plugins/global_search/public/services/search_service.ts @@ -6,10 +6,15 @@ import { merge, Observable, timer, throwError } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; +import { uniq } from 'lodash'; import { duration } from 'moment'; import { i18n } from '@kbn/i18n'; import { HttpStart } from 'src/core/public'; -import { GlobalSearchProviderResult, GlobalSearchBatchedResults } from '../../common/types'; +import { + GlobalSearchFindParams, + GlobalSearchProviderResult, + GlobalSearchBatchedResults, +} from '../../common/types'; import { GlobalSearchFindError } from '../../common/errors'; import { takeInArray } from '../../common/operators'; import { defaultMaxProviderResults } from '../../common/constants'; @@ -20,6 +25,7 @@ import { GlobalSearchClientConfigType } from '../config'; import { GlobalSearchFindOptions } from './types'; import { getDefaultPreference } from './utils'; import { fetchServerResults } from './fetch_server_results'; +import { fetchServerSearchableTypes } from './fetch_server_searchable_types'; /** @public */ export interface SearchServiceSetup { @@ -52,7 +58,7 @@ export interface SearchServiceStart { * * @example * ```ts - * startDeps.globalSearch.find('some term').subscribe({ + * startDeps.globalSearch.find({term: 'some term'}).subscribe({ * next: ({ results }) => { * addNewResultsToList(results); * }, @@ -67,7 +73,15 @@ export interface SearchServiceStart { * Emissions from the resulting observable will only contains **new** results. It is the consumer's * responsibility to aggregate the emission and sort the results if required. */ - find(term: string, options: GlobalSearchFindOptions): Observable; + find( + params: GlobalSearchFindParams, + options: GlobalSearchFindOptions + ): Observable; + + /** + * Returns all the searchable types registered by the underlying result providers. + */ + getSearchableTypes(): Promise; } interface SetupDeps { @@ -89,6 +103,7 @@ export class SearchService { private http?: HttpStart; private maxProviderResults = defaultMaxProviderResults; private licenseChecker?: ILicenseChecker; + private serverTypes?: string[]; setup({ config, maxProviderResults = defaultMaxProviderResults }: SetupDeps): SearchServiceSetup { this.config = config; @@ -110,11 +125,27 @@ export class SearchService { this.licenseChecker = licenseChecker; return { - find: (term, options) => this.performFind(term, options), + find: (params, options) => this.performFind(params, options), + getSearchableTypes: () => this.getSearchableTypes(), }; } - private performFind(term: string, options: GlobalSearchFindOptions) { + private async getSearchableTypes() { + const providerTypes = ( + await Promise.all( + [...this.providers.values()].map((provider) => provider.getSearchableTypes()) + ) + ).flat(); + + // only need to fetch from server once + if (!this.serverTypes) { + this.serverTypes = await fetchServerSearchableTypes(this.http!); + } + + return uniq([...providerTypes, ...this.serverTypes]); + } + + private performFind(params: GlobalSearchFindParams, options: GlobalSearchFindOptions) { const licenseState = this.licenseChecker!.getState(); if (!licenseState.valid) { return throwError( @@ -142,13 +173,13 @@ export class SearchService { const processResult = (result: GlobalSearchProviderResult) => processProviderResult(result, this.http!.basePath); - const serverResults$ = fetchServerResults(this.http!, term, { + const serverResults$ = fetchServerResults(this.http!, params, { preference, aborted$, }); const providersResults$ = [...this.providers.values()].map((provider) => - provider.find(term, providerOptions).pipe( + provider.find(params, providerOptions).pipe( takeInArray(this.maxProviderResults), takeUntil(aborted$), map((results) => results.map((r) => processResult(r))) diff --git a/x-pack/plugins/global_search/public/types.ts b/x-pack/plugins/global_search/public/types.ts index 42ef234504d12b..7235347d4aa380 100644 --- a/x-pack/plugins/global_search/public/types.ts +++ b/x-pack/plugins/global_search/public/types.ts @@ -5,11 +5,15 @@ */ import { Observable } from 'rxjs'; -import { GlobalSearchProviderFindOptions, GlobalSearchProviderResult } from '../common/types'; +import { + GlobalSearchProviderFindOptions, + GlobalSearchProviderResult, + GlobalSearchProviderFindParams, +} from '../common/types'; import { SearchServiceSetup, SearchServiceStart } from './services'; export type GlobalSearchPluginSetup = Pick; -export type GlobalSearchPluginStart = Pick; +export type GlobalSearchPluginStart = Pick; /** * GlobalSearch result provider, to be registered using the {@link GlobalSearchPluginSetup | global search API} @@ -29,7 +33,7 @@ export interface GlobalSearchResultProvider { * // returning all results in a single batch * setupDeps.globalSearch.registerResultProvider({ * id: 'my_provider', - * find: (term, { aborted$, preference, maxResults }, context) => { + * find: ({ term, filters }, { aborted$, preference, maxResults }, context) => { * const resultPromise = myService.search(term, { preference, maxResults }, context.core.savedObjects.client); * return from(resultPromise).pipe(takeUntil(aborted$)); * }, @@ -37,7 +41,13 @@ export interface GlobalSearchResultProvider { * ``` */ find( - term: string, + search: GlobalSearchProviderFindParams, options: GlobalSearchProviderFindOptions ): Observable; + + /** + * Method that should return all the possible {@link GlobalSearchProviderResult.type | type} of results that + * this provider can return. + */ + getSearchableTypes: () => string[] | Promise; } diff --git a/x-pack/plugins/global_search/server/mocks.ts b/x-pack/plugins/global_search/server/mocks.ts index e7c133edf95c84..88be7f6e861a1b 100644 --- a/x-pack/plugins/global_search/server/mocks.ts +++ b/x-pack/plugins/global_search/server/mocks.ts @@ -26,12 +26,14 @@ const createStartMock = (): jest.Mocked => { return { find: searchMock.find, + getSearchableTypes: searchMock.getSearchableTypes, }; }; const createRouteHandlerContextMock = (): jest.Mocked => { const handlerContextMock = { find: jest.fn(), + getSearchableTypes: jest.fn(), }; handlerContextMock.find.mockReturnValue(of([])); diff --git a/x-pack/plugins/global_search/server/plugin.ts b/x-pack/plugins/global_search/server/plugin.ts index 87e7f96b34c0c5..9d6844dde50f02 100644 --- a/x-pack/plugins/global_search/server/plugin.ts +++ b/x-pack/plugins/global_search/server/plugin.ts @@ -59,6 +59,7 @@ export class GlobalSearchPlugin core.http.registerRouteHandlerContext('globalSearch', (_, req) => { return { find: (term, options) => this.searchServiceStart!.find(term, options, req), + getSearchableTypes: () => this.searchServiceStart!.getSearchableTypes(req), }; }); @@ -75,6 +76,7 @@ export class GlobalSearchPlugin }); return { find: this.searchServiceStart.find, + getSearchableTypes: this.searchServiceStart.getSearchableTypes, }; } diff --git a/x-pack/plugins/global_search/server/routes/find.ts b/x-pack/plugins/global_search/server/routes/find.ts index a9063abda0e3eb..0b82a035348ed9 100644 --- a/x-pack/plugins/global_search/server/routes/find.ts +++ b/x-pack/plugins/global_search/server/routes/find.ts @@ -15,7 +15,11 @@ export const registerInternalFindRoute = (router: IRouter) => { path: '/internal/global_search/find', validate: { body: schema.object({ - term: schema.string(), + params: schema.object({ + term: schema.maybe(schema.string()), + types: schema.maybe(schema.arrayOf(schema.string())), + tags: schema.maybe(schema.arrayOf(schema.string())), + }), options: schema.maybe( schema.object({ preference: schema.maybe(schema.string()), @@ -25,10 +29,10 @@ export const registerInternalFindRoute = (router: IRouter) => { }, }, async (ctx, req, res) => { - const { term, options } = req.body; + const { params, options } = req.body; try { const allResults = await ctx - .globalSearch!.find(term, { ...options, aborted$: req.events.aborted$ }) + .globalSearch!.find(params, { ...options, aborted$: req.events.aborted$ }) .pipe( map((batch) => batch.results), reduce((acc, results) => [...acc, ...results]) diff --git a/x-pack/plugins/global_search/server/routes/get_searchable_types.ts b/x-pack/plugins/global_search/server/routes/get_searchable_types.ts new file mode 100644 index 00000000000000..f9cc69e4a28ae9 --- /dev/null +++ b/x-pack/plugins/global_search/server/routes/get_searchable_types.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { IRouter } from 'src/core/server'; + +export const registerInternalSearchableTypesRoute = (router: IRouter) => { + router.get( + { + path: '/internal/global_search/searchable_types', + validate: false, + }, + async (ctx, req, res) => { + const types = await ctx.globalSearch!.getSearchableTypes(); + return res.ok({ + body: { + types, + }, + }); + } + ); +}; diff --git a/x-pack/plugins/global_search/server/routes/index.test.ts b/x-pack/plugins/global_search/server/routes/index.test.ts index 64675bc13cb1c6..1111f01d130559 100644 --- a/x-pack/plugins/global_search/server/routes/index.test.ts +++ b/x-pack/plugins/global_search/server/routes/index.test.ts @@ -14,7 +14,6 @@ describe('registerRoutes', () => { registerRoutes(router); expect(router.post).toHaveBeenCalledTimes(1); - expect(router.post).toHaveBeenCalledWith( expect.objectContaining({ path: '/internal/global_search/find', @@ -22,7 +21,14 @@ describe('registerRoutes', () => { expect.any(Function) ); - expect(router.get).toHaveBeenCalledTimes(0); + expect(router.get).toHaveBeenCalledTimes(1); + expect(router.get).toHaveBeenCalledWith( + expect.objectContaining({ + path: '/internal/global_search/searchable_types', + }), + expect.any(Function) + ); + expect(router.delete).toHaveBeenCalledTimes(0); expect(router.put).toHaveBeenCalledTimes(0); }); diff --git a/x-pack/plugins/global_search/server/routes/index.ts b/x-pack/plugins/global_search/server/routes/index.ts index 7840b95614993f..0eeb443b72b53d 100644 --- a/x-pack/plugins/global_search/server/routes/index.ts +++ b/x-pack/plugins/global_search/server/routes/index.ts @@ -6,7 +6,9 @@ import { IRouter } from 'src/core/server'; import { registerInternalFindRoute } from './find'; +import { registerInternalSearchableTypesRoute } from './get_searchable_types'; export const registerRoutes = (router: IRouter) => { registerInternalFindRoute(router); + registerInternalSearchableTypesRoute(router); }; diff --git a/x-pack/plugins/global_search/server/routes/integration_tests/find.test.ts b/x-pack/plugins/global_search/server/routes/integration_tests/find.test.ts index ed28786782c354..c37bcdbf847438 100644 --- a/x-pack/plugins/global_search/server/routes/integration_tests/find.test.ts +++ b/x-pack/plugins/global_search/server/routes/integration_tests/find.test.ts @@ -62,7 +62,9 @@ describe('POST /internal/global_search/find', () => { await supertest(httpSetup.server.listener) .post('/internal/global_search/find') .send({ - term: 'search', + params: { + term: 'search', + }, options: { preference: 'custom-pref', }, @@ -70,10 +72,13 @@ describe('POST /internal/global_search/find', () => { .expect(200); expect(globalSearchHandlerContext.find).toHaveBeenCalledTimes(1); - expect(globalSearchHandlerContext.find).toHaveBeenCalledWith('search', { - preference: 'custom-pref', - aborted$: expect.any(Object), - }); + expect(globalSearchHandlerContext.find).toHaveBeenCalledWith( + { term: 'search' }, + { + preference: 'custom-pref', + aborted$: expect.any(Object), + } + ); }); it('returns all the results returned from the service', async () => { @@ -84,7 +89,9 @@ describe('POST /internal/global_search/find', () => { const response = await supertest(httpSetup.server.listener) .post('/internal/global_search/find') .send({ - term: 'search', + params: { + term: 'search', + }, }) .expect(200); @@ -101,7 +108,9 @@ describe('POST /internal/global_search/find', () => { const response = await supertest(httpSetup.server.listener) .post('/internal/global_search/find') .send({ - term: 'search', + params: { + term: 'search', + }, }) .expect(403); @@ -119,7 +128,9 @@ describe('POST /internal/global_search/find', () => { const response = await supertest(httpSetup.server.listener) .post('/internal/global_search/find') .send({ - term: 'search', + params: { + term: 'search', + }, }) .expect(500); diff --git a/x-pack/plugins/global_search/server/routes/integration_tests/get_searchable_types.test.ts b/x-pack/plugins/global_search/server/routes/integration_tests/get_searchable_types.test.ts new file mode 100644 index 00000000000000..b3b6862599d6dd --- /dev/null +++ b/x-pack/plugins/global_search/server/routes/integration_tests/get_searchable_types.test.ts @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import supertest from 'supertest'; +import { UnwrapPromise } from '@kbn/utility-types'; +import { setupServer } from '../../../../../../src/core/server/test_utils'; +import { globalSearchPluginMock } from '../../mocks'; +import { registerInternalSearchableTypesRoute } from '../get_searchable_types'; + +type SetupServerReturn = UnwrapPromise>; +const pluginId = Symbol('globalSearch'); + +describe('GET /internal/global_search/searchable_types', () => { + let server: SetupServerReturn['server']; + let httpSetup: SetupServerReturn['httpSetup']; + let globalSearchHandlerContext: ReturnType< + typeof globalSearchPluginMock.createRouteHandlerContext + >; + + beforeEach(async () => { + ({ server, httpSetup } = await setupServer(pluginId)); + + globalSearchHandlerContext = globalSearchPluginMock.createRouteHandlerContext(); + httpSetup.registerRouteHandlerContext( + pluginId, + 'globalSearch', + () => globalSearchHandlerContext + ); + + const router = httpSetup.createRouter('/'); + + registerInternalSearchableTypesRoute(router); + + await server.start(); + }); + + afterEach(async () => { + await server.stop(); + }); + + it('calls the handler context with correct parameters', async () => { + await supertest(httpSetup.server.listener) + .post('/internal/global_search/searchable_types') + .expect(200); + + expect(globalSearchHandlerContext.getSearchableTypes).toHaveBeenCalledTimes(1); + }); + + it('returns the types returned from the service', async () => { + globalSearchHandlerContext.getSearchableTypes.mockResolvedValue(['type-a', 'type-b']); + + const response = await supertest(httpSetup.server.listener) + .post('/internal/global_search/searchable_types') + .expect(200); + + expect(response.body).toEqual({ + types: ['type-a', 'type-b'], + }); + }); + + it('returns the default error when the observable throws any other error', async () => { + globalSearchHandlerContext.getSearchableTypes.mockRejectedValue(new Error()); + + const response = await supertest(httpSetup.server.listener) + .post('/internal/global_search/searchable_types') + .expect(200); + + expect(response.body).toEqual( + expect.objectContaining({ + message: 'An internal server error occurred.', + statusCode: 500, + }) + ); + }); +}); diff --git a/x-pack/plugins/global_search/server/services/search_service.mock.ts b/x-pack/plugins/global_search/server/services/search_service.mock.ts index eca69148288b9c..0aa65e39f026c5 100644 --- a/x-pack/plugins/global_search/server/services/search_service.mock.ts +++ b/x-pack/plugins/global_search/server/services/search_service.mock.ts @@ -7,17 +7,21 @@ import { SearchServiceSetup, SearchServiceStart } from './search_service'; import { of } from 'rxjs'; -const createSetupMock = (): jest.Mocked => { - return { +const createSetupMock = () => { + const mock: jest.Mocked = { registerResultProvider: jest.fn(), }; + + return mock; }; -const createStartMock = (): jest.Mocked => { - const mock = { +const createStartMock = () => { + const mock: jest.Mocked = { find: jest.fn(), + getSearchableTypes: jest.fn(), }; mock.find.mockReturnValue(of({ results: [] })); + mock.getSearchableTypes.mockResolvedValue([]); return mock; }; diff --git a/x-pack/plugins/global_search/server/services/search_service.test.ts b/x-pack/plugins/global_search/server/services/search_service.test.ts index 2460100a46dbbe..b3e4981b353929 100644 --- a/x-pack/plugins/global_search/server/services/search_service.test.ts +++ b/x-pack/plugins/global_search/server/services/search_service.test.ts @@ -36,10 +36,17 @@ describe('SearchService', () => { const createProvider = ( id: string, - source: Observable = of([]) + { + source = of([]), + types = [], + }: { + source?: Observable; + types?: string[] | Promise; + } = {} ): jest.Mocked => ({ id, find: jest.fn().mockImplementation((term, options, context) => source), + getSearchableTypes: jest.fn().mockReturnValue(types), }); const expectedResult = (id: string) => expect.objectContaining({ id }); @@ -97,11 +104,15 @@ describe('SearchService', () => { registerResultProvider(provider); const { find } = service.start({ core: coreStart, licenseChecker }); - find('foobar', { preference: 'pref' }, request); + find( + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, + { preference: 'pref' }, + request + ); expect(provider.find).toHaveBeenCalledTimes(1); expect(provider.find).toHaveBeenCalledWith( - 'foobar', + { term: 'foobar', types: ['dashboard', 'map'], tags: ['tag-id'] }, expect.objectContaining({ preference: 'pref' }), expect.objectContaining({ core: expect.any(Object) }) ); @@ -118,10 +129,10 @@ describe('SearchService', () => { a: [result('1')], b: [result('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', {}, request); + const results = find({ term: 'foobar' }, {}, request); expectObservable(results).toBe('a-b-|', { a: expectedBatch('1'), @@ -138,26 +149,24 @@ describe('SearchService', () => { getTestScheduler().run(({ expectObservable, hot }) => { registerResultProvider( - createProvider( - 'A', - hot('a---d-|', { + createProvider('A', { + source: hot('a---d-|', { a: [result('A1'), result('A2')], d: [result('A3')], - }) - ) + }), + }) ); registerResultProvider( - createProvider( - 'B', - hot('-b-c| ', { + createProvider('B', { + source: hot('-b-c| ', { b: [result('B1')], c: [result('B2'), result('B3')], - }) - ) + }), + }) ); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', {}, request); + const results = find({ term: 'foobar' }, {}, request); expectObservable(results).toBe('ab-cd-|', { a: expectedBatch('A1', 'A2'), @@ -179,12 +188,12 @@ describe('SearchService', () => { a: [result('1')], b: [result('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const aborted$ = hot('----a--|', { a: undefined }); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', { aborted$ }, request); + const results = find({ term: 'foobar' }, { aborted$ }, request); expectObservable(results).toBe('--a-|', { a: expectedBatch('1'), @@ -204,10 +213,10 @@ describe('SearchService', () => { b: [result('2')], c: [result('3')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', {}, request); + const results = find({ term: 'foobar' }, {}, request); expectObservable(results).toBe('a 24ms b 74ms |', { a: expectedBatch('1'), @@ -225,26 +234,24 @@ describe('SearchService', () => { getTestScheduler().run(({ expectObservable, hot }) => { registerResultProvider( - createProvider( - 'A', - hot('a---d-|', { + createProvider('A', { + source: hot('a---d-|', { a: [result('A1'), result('A2')], d: [result('A3')], - }) - ) + }), + }) ); registerResultProvider( - createProvider( - 'B', - hot('-b-c| ', { + createProvider('B', { + source: hot('-b-c| ', { b: [result('B1')], c: [result('B2'), result('B3')], - }) - ) + }), + }) ); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', {}, request); + const results = find({ term: 'foobar' }, {}, request); expectObservable(results).toBe('ab-(c|)', { a: expectedBatch('A1', 'A2'), @@ -274,11 +281,11 @@ describe('SearchService', () => { url: { path: '/foo', prependBasePath: false }, }); - const provider = createProvider('A', of([resultA, resultB])); + const provider = createProvider('A', { source: of([resultA, resultB]) }); registerResultProvider(provider); const { find } = service.start({ core: coreStart, licenseChecker }); - const batch = await find('foo', {}, request).pipe(take(1)).toPromise(); + const batch = await find({ term: 'foobar' }, {}, request).pipe(take(1)).toPromise(); expect(batch.results).toHaveLength(2); expect(batch.results[0]).toEqual({ @@ -304,10 +311,10 @@ describe('SearchService', () => { a: [result('1')], b: [result('2')], }); - registerResultProvider(createProvider('A', providerResults)); + registerResultProvider(createProvider('A', { source: providerResults })); const { find } = service.start({ core: coreStart, licenseChecker }); - const results = find('foo', {}, request); + const results = find({ term: 'foobar' }, {}, request); expectObservable(results).toBe( '#', @@ -319,5 +326,77 @@ describe('SearchService', () => { }); }); }); + + describe('#getSearchableTypes()', () => { + it('returns the types registered by the provider', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + basePath, + }); + + const provider = createProvider('A', { types: ['type-a', 'type-b'] }); + registerResultProvider(provider); + + const { getSearchableTypes } = service.start({ core: coreStart, licenseChecker }); + + const types = await getSearchableTypes(request); + + expect(types).toEqual(['type-a', 'type-b']); + }); + + it('supports promises', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + basePath, + }); + + const provider = createProvider('A', { types: Promise.resolve(['type-a', 'type-b']) }); + registerResultProvider(provider); + + const { getSearchableTypes } = service.start({ core: coreStart, licenseChecker }); + + const types = await getSearchableTypes(request); + + expect(types).toEqual(['type-a', 'type-b']); + }); + + it('merges the types registered by the providers', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + basePath, + }); + + const provider1 = createProvider('A', { types: ['type-a', 'type-b'] }); + registerResultProvider(provider1); + + const provider2 = createProvider('B', { types: ['type-c', 'type-d'] }); + registerResultProvider(provider2); + + const { getSearchableTypes } = service.start({ core: coreStart, licenseChecker }); + + const types = await getSearchableTypes(request); + + expect(types.sort()).toEqual(['type-a', 'type-b', 'type-c', 'type-d']); + }); + + it('removes duplicates', async () => { + const { registerResultProvider } = service.setup({ + config: createConfig(), + basePath, + }); + + const provider1 = createProvider('A', { types: ['type-a', 'dupe'] }); + registerResultProvider(provider1); + + const provider2 = createProvider('B', { types: ['type-b', 'dupe'] }); + registerResultProvider(provider2); + + const { getSearchableTypes } = service.start({ core: coreStart, licenseChecker }); + + const types = await getSearchableTypes(request); + + expect(types.sort()).toEqual(['dupe', 'type-a', 'type-b']); + }); + }); }); }); diff --git a/x-pack/plugins/global_search/server/services/search_service.ts b/x-pack/plugins/global_search/server/services/search_service.ts index 1897a24196cf10..88250820861a6a 100644 --- a/x-pack/plugins/global_search/server/services/search_service.ts +++ b/x-pack/plugins/global_search/server/services/search_service.ts @@ -6,14 +6,18 @@ import { Observable, timer, merge, throwError } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; +import { uniq } from 'lodash'; import { i18n } from '@kbn/i18n'; import { KibanaRequest, CoreStart, IBasePath } from 'src/core/server'; -import { GlobalSearchProviderResult, GlobalSearchBatchedResults } from '../../common/types'; +import { + GlobalSearchProviderResult, + GlobalSearchBatchedResults, + GlobalSearchFindParams, +} from '../../common/types'; import { GlobalSearchFindError } from '../../common/errors'; import { takeInArray } from '../../common/operators'; import { defaultMaxProviderResults } from '../../common/constants'; import { ILicenseChecker } from '../../common/license_checker'; - import { processProviderResult } from '../../common/process_result'; import { GlobalSearchConfigType } from '../config'; import { getContextFactory, GlobalSearchContextFactory } from './context'; @@ -46,7 +50,7 @@ export interface SearchServiceStart { * * @example * ```ts - * startDeps.globalSearch.find('some term').subscribe({ + * startDeps.globalSearch.find({ term: 'some term' }).subscribe({ * next: ({ results }) => { * addNewResultsToList(results); * }, @@ -64,10 +68,15 @@ export interface SearchServiceStart { * from the server-side `find` API. */ find( - term: string, + params: GlobalSearchFindParams, options: GlobalSearchFindOptions, request: KibanaRequest ): Observable; + + /** + * Returns all the searchable types registered by the underlying result providers. + */ + getSearchableTypes(request: KibanaRequest): Promise; } interface SetupDeps { @@ -115,11 +124,26 @@ export class SearchService { this.licenseChecker = licenseChecker; this.contextFactory = getContextFactory(core); return { - find: (term, options, request) => this.performFind(term, options, request), + find: (params, options, request) => this.performFind(params, options, request), + getSearchableTypes: (request) => this.getSearchableTypes(request), }; } - private performFind(term: string, options: GlobalSearchFindOptions, request: KibanaRequest) { + private async getSearchableTypes(request: KibanaRequest) { + const context = this.contextFactory!(request); + const allTypes = ( + await Promise.all( + [...this.providers.values()].map((provider) => provider.getSearchableTypes(context)) + ) + ).flat(); + return uniq(allTypes); + } + + private performFind( + params: GlobalSearchFindParams, + options: GlobalSearchFindOptions, + request: KibanaRequest + ) { const licenseState = this.licenseChecker!.getState(); if (!licenseState.valid) { return throwError( @@ -137,7 +161,7 @@ export class SearchService { const timeout$ = timer(this.config!.search_timeout.asMilliseconds()).pipe(map(mapToUndefined)); const aborted$ = options.aborted$ ? merge(options.aborted$, timeout$) : timeout$; - const providerOptions = { + const findOptions = { ...options, preference: options.preference ?? 'default', maxResults: this.maxProviderResults, @@ -148,7 +172,7 @@ export class SearchService { processProviderResult(result, basePath); const providersResults$ = [...this.providers.values()].map((provider) => - provider.find(term, providerOptions, context).pipe( + provider.find(params, findOptions, context).pipe( takeInArray(this.maxProviderResults), takeUntil(aborted$), map((results) => results.map((r) => processResult(r))) diff --git a/x-pack/plugins/global_search/server/types.ts b/x-pack/plugins/global_search/server/types.ts index 07d21f54d7bf59..48c40fdb66e13e 100644 --- a/x-pack/plugins/global_search/server/types.ts +++ b/x-pack/plugins/global_search/server/types.ts @@ -16,11 +16,13 @@ import { GlobalSearchBatchedResults, GlobalSearchProviderFindOptions, GlobalSearchProviderResult, + GlobalSearchProviderFindParams, + GlobalSearchFindParams, } from '../common/types'; import { SearchServiceSetup, SearchServiceStart } from './services'; export type GlobalSearchPluginSetup = Pick; -export type GlobalSearchPluginStart = Pick; +export type GlobalSearchPluginStart = Pick; /** * globalSearch route handler context. @@ -31,7 +33,14 @@ export interface RouteHandlerGlobalSearchContext { /** * See {@link SearchServiceStart.find | the find API} */ - find(term: string, options: GlobalSearchFindOptions): Observable; + find( + params: GlobalSearchFindParams, + options: GlobalSearchFindOptions + ): Observable; + /** + * See {@link SearchServiceStart.getSearchableTypes | the getSearchableTypes API} + */ + getSearchableTypes: () => Promise; } /** @@ -97,7 +106,7 @@ export interface GlobalSearchResultProvider { * // returning all results in a single batch * setupDeps.globalSearch.registerResultProvider({ * id: 'my_provider', - * find: (term, { aborted$, preference, maxResults }, context) => { + * find: ({term, filters }, { aborted$, preference, maxResults }, context) => { * const resultPromise = myService.search(term, { preference, maxResults }, context.core.savedObjects.client); * return from(resultPromise).pipe(takeUntil(aborted$)); * }, @@ -105,8 +114,14 @@ export interface GlobalSearchResultProvider { * ``` */ find( - term: string, + search: GlobalSearchProviderFindParams, options: GlobalSearchProviderFindOptions, context: GlobalSearchProviderContext ): Observable; + + /** + * Method that should return all the possible {@link GlobalSearchProviderResult.type | type} of results that + * this provider can return. + */ + getSearchableTypes: (context: GlobalSearchProviderContext) => string[] | Promise; } diff --git a/x-pack/plugins/global_search_bar/jest.config.js b/x-pack/plugins/global_search_bar/jest.config.js new file mode 100644 index 00000000000000..5b03d4a3f90d7e --- /dev/null +++ b/x-pack/plugins/global_search_bar/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/global_search_bar'], +}; diff --git a/x-pack/plugins/global_search_bar/kibana.json b/x-pack/plugins/global_search_bar/kibana.json index bf0ae83a0d863f..85e091fe1abadd 100644 --- a/x-pack/plugins/global_search_bar/kibana.json +++ b/x-pack/plugins/global_search_bar/kibana.json @@ -5,6 +5,6 @@ "server": false, "ui": true, "requiredPlugins": ["globalSearch"], - "optionalPlugins": ["usageCollection"], + "optionalPlugins": ["usageCollection", "savedObjectsTagging"], "configPath": ["xpack", "global_search_bar"] } diff --git a/x-pack/plugins/global_search_bar/public/components/__snapshots__/search_bar.test.tsx.snap b/x-pack/plugins/global_search_bar/public/components/__snapshots__/search_bar.test.tsx.snap index bf7eacd2b52a11..f5e7a030d59e3c 100644 --- a/x-pack/plugins/global_search_bar/public/components/__snapshots__/search_bar.test.tsx.snap +++ b/x-pack/plugins/global_search_bar/public/components/__snapshots__/search_bar.test.tsx.snap @@ -35,8 +35,8 @@ exports[`SearchBar supports keyboard shortcuts 1`] = ` aria-haspopup="listbox" aria-label="Filter options" autocomplete="off" - class="euiFieldSearch euiFieldSearch--fullWidth euiFieldSearch--compressed euiSelectableSearch euiSelectableTemplateSitewide__search" - data-test-subj="header-search" + class="euiFieldSearch euiFieldSearch--fullWidth euiFieldSearch--compressed euiSelectableSearch euiSelectableTemplateSitewide__search kbnSearchBar" + data-test-subj="nav-search-input" placeholder="Search Elastic" type="search" value="" diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.scss b/x-pack/plugins/global_search_bar/public/components/search_bar.scss new file mode 100644 index 00000000000000..eadac85c8be89a --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.scss @@ -0,0 +1,21 @@ +//TODO add these overrides to EUI so that search behaves the same globally +.kbnSearchBar { + width: 400px; + max-width: 100%; + will-change: width; +} + +@include euiBreakpoint('l', 'xl') { + .kbnSearchBar:focus { + animation: kbnAnimateSearchBar $euiAnimSpeedFast forwards; + } +} + +@keyframes kbnAnimateSearchBar { + from { + width: 400px; + } + to { + width: 600px; + } +} diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx index a3e2d66eabe5b9..1ed011d3cc3b14 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.test.tsx @@ -11,8 +11,8 @@ import { of, BehaviorSubject } from 'rxjs'; import { filter, map } from 'rxjs/operators'; import { mountWithIntl } from '@kbn/test/jest'; import { applicationServiceMock } from '../../../../../src/core/public/mocks'; -import { GlobalSearchBatchedResults, GlobalSearchResult } from '../../../global_search/public'; import { globalSearchPluginMock } from '../../../global_search/public/mocks'; +import { GlobalSearchBatchedResults, GlobalSearchResult } from '../../../global_search/public'; import { SearchBar } from './search_bar'; type Result = { id: string; type: string } | string; @@ -54,7 +54,7 @@ describe('SearchBar', () => { }); const triggerFocus = () => { - component.find('input[data-test-subj="header-search"]').simulate('focus'); + component.find('input[data-test-subj="nav-search-input"]').simulate('focus'); }; const update = () => { @@ -86,7 +86,7 @@ describe('SearchBar', () => { component = mountWithIntl( { update(); expect(searchService.find).toHaveBeenCalledTimes(1); - expect(searchService.find).toHaveBeenCalledWith('', {}); + expect(searchService.find).toHaveBeenCalledWith({}, {}); expect(getDisplayedOptionsTitle()).toMatchSnapshot(); await simulateTypeChar('d'); @@ -108,13 +108,13 @@ describe('SearchBar', () => { expect(getDisplayedOptionsTitle()).toMatchSnapshot(); expect(searchService.find).toHaveBeenCalledTimes(2); - expect(searchService.find).toHaveBeenCalledWith('d', {}); + expect(searchService.find).toHaveBeenCalledWith({ term: 'd' }, {}); }); it('supports keyboard shortcuts', () => { mountWithIntl( { component = mountWithIntl( void; + trackUiMetric: (metricType: UiCounterMetricType, eventName: string | string[]) => void; + taggingApi?: SavedObjectTaggingPluginStart; basePathUrl: string; darkMode: boolean; } -const clearField = (field: HTMLInputElement) => { +const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; + +const setFieldValue = (field: HTMLInputElement, value: string) => { const nativeInputValue = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value'); const nativeInputValueSetter = nativeInputValue ? nativeInputValue.set : undefined; if (nativeInputValueSetter) { - nativeInputValueSetter.call(field, ''); + nativeInputValueSetter.call(field, value); } - field.dispatchEvent(new Event('change')); }; +const clearField = (field: HTMLInputElement) => setFieldValue(field, ''); + const cleanMeta = (str: string) => (str.charAt(0).toUpperCase() + str.slice(1)).replace(/-/g, ' '); const blurEvent = new FocusEvent('blur'); @@ -64,19 +77,19 @@ const sortByTitle = (a: GlobalSearchResult, b: GlobalSearchResult): number => { const resultToOption = (result: GlobalSearchResult): EuiSelectableTemplateSitewideOption => { const { id, title, url, icon, type, meta } = result; + // only displaying icons for applications + const useIcon = type === 'application'; const option: EuiSelectableTemplateSitewideOption = { key: id, label: title, url, type, + icon: { type: useIcon && icon ? icon : 'empty' }, + 'data-test-subj': `nav-search-option`, }; - if (icon) { - option.icon = { type: icon }; - } - if (type === 'application') { - option.meta = [{ text: meta?.categoryLabel as string }]; + option.meta = [{ text: (meta?.categoryLabel as string) ?? '' }]; } else { option.meta = [{ text: cleanMeta(type) }]; } @@ -84,8 +97,22 @@ const resultToOption = (result: GlobalSearchResult): EuiSelectableTemplateSitewi return option; }; +const suggestionToOption = (suggestion: SearchSuggestion): EuiSelectableTemplateSitewideOption => { + const { key, label, description, icon, suggestedSearch } = suggestion; + return { + key, + label, + type: '__suggestion__', + icon: { type: icon }, + suggestion: suggestedSearch, + meta: [{ text: description }], + 'data-test-subj': `nav-search-option`, + }; +}; + export function SearchBar({ globalSearch, + taggingApi, navigateToUrl, trackUiMetric, basePathUrl, @@ -96,16 +123,34 @@ export function SearchBar({ const [searchRef, setSearchRef] = useState(null); const [buttonRef, setButtonRef] = useState(null); const searchSubscription = useRef(null); - const [options, _setOptions] = useState([] as EuiSelectableTemplateSitewideOption[]); - const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; + const [options, _setOptions] = useState([]); + const [searchableTypes, setSearchableTypes] = useState([]); + + useEffect(() => { + const fetch = async () => { + const types = await globalSearch.getSearchableTypes(); + setSearchableTypes(types); + }; + fetch(); + }, [globalSearch]); + + const loadSuggestions = useCallback( + (searchTerm: string) => { + return getSuggestions({ + searchTerm, + searchableTypes, + tagCache: taggingApi?.cache, + }); + }, + [taggingApi, searchableTypes] + ); const setOptions = useCallback( - (_options: GlobalSearchResult[]) => { + (_options: GlobalSearchResult[], suggestions: SearchSuggestion[]) => { if (!isMounted()) { return; } - - _setOptions(_options.map(resultToOption)); + _setOptions([...suggestions.map(suggestionToOption), ..._options.map(resultToOption)]); }, [isMounted, _setOptions] ); @@ -118,22 +163,40 @@ export function SearchBar({ searchSubscription.current = null; } - let arr: GlobalSearchResult[] = []; - if (searchValue.length !== 0) trackUiMetric(METRIC_TYPE.COUNT, 'search_request'); - searchSubscription.current = globalSearch(searchValue, {}).subscribe({ + const suggestions = loadSuggestions(searchValue); + + let aggregatedResults: GlobalSearchResult[] = []; + if (searchValue.length !== 0) { + trackUiMetric(METRIC_TYPE.COUNT, 'search_request'); + } + + const rawParams = parseSearchParams(searchValue); + const tagIds = + taggingApi && rawParams.filters.tags + ? rawParams.filters.tags.map( + (tagName) => taggingApi.ui.getTagIdFromName(tagName) ?? '__unknown__' + ) + : undefined; + const searchParams: GlobalSearchFindParams = { + term: rawParams.term, + types: rawParams.filters.types, + tags: tagIds, + }; + + searchSubscription.current = globalSearch.find(searchParams, {}).subscribe({ next: ({ results }) => { if (searchValue.length > 0) { - arr = [...results, ...arr].sort(sortByScore); - setOptions(arr); + aggregatedResults = [...results, ...aggregatedResults].sort(sortByScore); + setOptions(aggregatedResults, suggestions); return; } // if searchbar is empty, filter to only applications and sort alphabetically results = results.filter(({ type }: GlobalSearchResult) => type === 'application'); - arr = [...results, ...arr].sort(sortByTitle); + aggregatedResults = [...results, ...aggregatedResults].sort(sortByTitle); - setOptions(arr); + setOptions(aggregatedResults, suggestions); }, error: () => { // Not doing anything on error right now because it'll either just show the previous @@ -144,7 +207,7 @@ export function SearchBar({ }); }, 350, - [searchValue] + [searchValue, loadSuggestions] ); const onKeyDown = (event: KeyboardEvent) => { @@ -166,7 +229,15 @@ export function SearchBar({ } // @ts-ignore - ts error is "union type is too complex to express" - const { url, type } = selected; + const { url, type, suggestion } = selected; + + // if the type is a suggestion, we change the query on the input and trigger a new search + // by setting the searchValue (only setting the field value does not trigger a search) + if (type === '__suggestion__') { + setFieldValue(searchRef!, suggestion); + setSearchValue(suggestion); + return; + } // errors in tracking should not prevent selection behavior try { @@ -197,7 +268,7 @@ export function SearchBar({ }; const emptyMessage = ( - + ) => setSearchValue(e.currentTarget.value), - 'data-test-subj': 'header-search', + 'data-test-subj': 'nav-search-input', inputRef: setSearchRef, compressed: true, + className: 'kbnSearchBar', placeholder: i18n.translate('xpack.globalSearchBar.searchBar.placeholder', { defaultMessage: 'Search Elastic', }), @@ -256,53 +329,73 @@ export function SearchBar({ }, }} popoverProps={{ + 'data-test-subj': 'nav-search-popover', + panelClassName: 'navSearch__panel', repositionOnScroll: true, buttonRef: setButtonRef, }} emptyMessage={emptyMessage} noMatchesMessage={emptyMessage} popoverFooter={ - - - - - - ), - commandDescription: ( - - - {isMac ? ( - - ) : ( - - )} - - - ), - }} - /> -
    - + + + +

    + +   + type:  + +   + tag: +

    +
    +
    + + +

    + + ), + commandDescription: ( + + {isMac ? ( + + ) : ( + + )} + + ), + }} + /> +

    +
    +
    +
    } /> ); diff --git a/x-pack/plugins/global_search_bar/public/plugin.tsx b/x-pack/plugins/global_search_bar/public/plugin.tsx index 14ac0935467d7d..80111e7746a75e 100644 --- a/x-pack/plugins/global_search_bar/public/plugin.tsx +++ b/x-pack/plugins/global_search_bar/public/plugin.tsx @@ -4,19 +4,21 @@ * you may not use this file except in compliance with the Elastic License. */ -import { UiStatsMetricType } from '@kbn/analytics'; -import { I18nProvider } from '@kbn/i18n/react'; -import { ApplicationStart } from 'kibana/public'; import React from 'react'; import ReactDOM from 'react-dom'; +import { UiCounterMetricType } from '@kbn/analytics'; +import { I18nProvider } from '@kbn/i18n/react'; +import { ApplicationStart } from 'kibana/public'; import { CoreStart, Plugin } from 'src/core/public'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/public'; import { GlobalSearchPluginStart } from '../../global_search/public'; -import { SearchBar } from '../public/components/search_bar'; +import { SavedObjectTaggingPluginStart } from '../../saved_objects_tagging/public'; +import { SearchBar } from './components/search_bar'; export interface GlobalSearchBarPluginStartDeps { globalSearch: GlobalSearchPluginStart; - usageCollection: UsageCollectionSetup; + savedObjectsTagging?: SavedObjectTaggingPluginStart; + usageCollection?: UsageCollectionSetup; } export class GlobalSearchBarPlugin implements Plugin<{}, {}> { @@ -24,49 +26,61 @@ export class GlobalSearchBarPlugin implements Plugin<{}, {}> { return {}; } - public start(core: CoreStart, { globalSearch, usageCollection }: GlobalSearchBarPluginStartDeps) { - let trackUiMetric = (metricType: UiStatsMetricType, eventName: string | string[]) => {}; - - if (usageCollection) { - trackUiMetric = usageCollection.reportUiStats.bind(usageCollection, 'global_search_bar'); - } + public start( + core: CoreStart, + { globalSearch, savedObjectsTagging, usageCollection }: GlobalSearchBarPluginStartDeps + ) { + const trackUiMetric = usageCollection + ? usageCollection.reportUiCounter.bind(usageCollection, 'global_search_bar') + : (metricType: UiCounterMetricType, eventName: string | string[]) => {}; core.chrome.navControls.registerCenter({ order: 1000, - mount: (target) => - this.mount( - target, + mount: (container) => + this.mount({ + container, globalSearch, - core.application.navigateToUrl, - core.http.basePath.prepend('/plugins/globalSearchBar/assets/'), - core.uiSettings.get('theme:darkMode'), - trackUiMetric - ), + savedObjectsTagging, + navigateToUrl: core.application.navigateToUrl, + basePathUrl: core.http.basePath.prepend('/plugins/globalSearchBar/assets/'), + darkMode: core.uiSettings.get('theme:darkMode'), + trackUiMetric, + }), }); return {}; } - private mount( - targetDomElement: HTMLElement, - globalSearch: GlobalSearchPluginStart, - navigateToUrl: ApplicationStart['navigateToUrl'], - basePathUrl: string, - darkMode: boolean, - trackUiMetric: (metricType: UiStatsMetricType, eventName: string | string[]) => void - ) { + private mount({ + container, + globalSearch, + savedObjectsTagging, + navigateToUrl, + basePathUrl, + darkMode, + trackUiMetric, + }: { + container: HTMLElement; + globalSearch: GlobalSearchPluginStart; + savedObjectsTagging?: SavedObjectTaggingPluginStart; + navigateToUrl: ApplicationStart['navigateToUrl']; + basePathUrl: string; + darkMode: boolean; + trackUiMetric: (metricType: UiCounterMetricType, eventName: string | string[]) => void; + }) { ReactDOM.render( , - targetDomElement + container ); - return () => ReactDOM.unmountComponentAtNode(targetDomElement); + return () => ReactDOM.unmountComponentAtNode(container); } } diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/index.ts b/x-pack/plugins/global_search_bar/public/search_syntax/index.ts new file mode 100644 index 00000000000000..01c52e468af3a4 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { parseSearchParams } from './parse_search_params'; +export { ParsedSearchParams, FilterValues, FilterValueType } from './types'; diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.test.ts b/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.test.ts new file mode 100644 index 00000000000000..3b00389b8605d0 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.test.ts @@ -0,0 +1,87 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { parseSearchParams } from './parse_search_params'; + +describe('parseSearchParams', () => { + it('returns the correct term', () => { + const searchParams = parseSearchParams('tag:(my-tag OR other-tag) hello'); + expect(searchParams.term).toEqual('hello'); + }); + + it('returns the raw query as `term` in case of parsing error', () => { + const searchParams = parseSearchParams('tag:((()^invalid'); + expect(searchParams).toEqual({ + term: 'tag:((()^invalid', + filters: { + unknowns: {}, + }, + }); + }); + + it('returns `undefined` term if query only contains field clauses', () => { + const searchParams = parseSearchParams('tag:(my-tag OR other-tag)'); + expect(searchParams.term).toBeUndefined(); + }); + + it('returns correct filters when no field clause is defined', () => { + const searchParams = parseSearchParams('hello'); + expect(searchParams.filters).toEqual({ + tags: undefined, + types: undefined, + unknowns: {}, + }); + }); + + it('returns correct filters when field clauses are present', () => { + const searchParams = parseSearchParams('tag:foo type:bar hello tag:dolly'); + expect(searchParams).toEqual({ + term: 'hello', + filters: { + tags: ['foo', 'dolly'], + types: ['bar'], + unknowns: {}, + }, + }); + }); + + it('handles unknowns field clauses', () => { + const searchParams = parseSearchParams('tag:foo unknown:bar hello'); + expect(searchParams).toEqual({ + term: 'hello', + filters: { + tags: ['foo'], + unknowns: { + unknown: ['bar'], + }, + }, + }); + }); + + it('handles aliases field clauses', () => { + const searchParams = parseSearchParams('tag:foo tags:bar type:dash types:board hello'); + expect(searchParams).toEqual({ + term: 'hello', + filters: { + tags: ['foo', 'bar'], + types: ['dash', 'board'], + unknowns: {}, + }, + }); + }); + + it('converts boolean and number values to string for known filters', () => { + const searchParams = parseSearchParams('tag:42 tags:true type:69 types:false hello'); + expect(searchParams).toEqual({ + term: 'hello', + filters: { + tags: ['42', 'true'], + types: ['69', 'false'], + unknowns: {}, + }, + }); + }); +}); diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.ts b/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.ts new file mode 100644 index 00000000000000..83117ddfb507d1 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/parse_search_params.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Query } from '@elastic/eui'; +import { getSearchTerm, getFieldValueMap, applyAliases } from './query_utils'; +import { FilterValues, ParsedSearchParams } from './types'; + +const knownFilters = ['tag', 'type']; + +const aliasMap = { + tag: ['tags'], + type: ['types'], +}; + +export const parseSearchParams = (term: string): ParsedSearchParams => { + let query: Query; + + try { + query = Query.parse(term); + } catch (e) { + // if the query fails to parse, we just perform the search against the raw search term. + return { + term, + filters: { + unknowns: {}, + }, + }; + } + + const searchTerm = getSearchTerm(query); + const filterValues = applyAliases(getFieldValueMap(query), aliasMap); + + const unknownFilters = [...filterValues.entries()] + .filter(([key]) => !knownFilters.includes(key)) + .reduce((unknowns, [key, value]) => { + return { + ...unknowns, + [key]: value, + }; + }, {} as Record); + + const tags = filterValues.get('tag'); + const types = filterValues.get('type'); + + return { + term: searchTerm, + filters: { + tags: tags ? valuesToString(tags) : undefined, + types: types ? valuesToString(types) : undefined, + unknowns: unknownFilters, + }, + }; +}; + +const valuesToString = (raw: FilterValues): FilterValues => + raw.map((value) => String(value)); diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.test.ts b/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.test.ts new file mode 100644 index 00000000000000..c04f5dddd34a26 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.test.ts @@ -0,0 +1,134 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Query } from '@elastic/eui'; +import { getSearchTerm, getFieldValueMap, applyAliases } from './query_utils'; +import { FilterValues } from './types'; + +describe('getSearchTerm', () => { + const searchTerm = (raw: string) => getSearchTerm(Query.parse(raw)); + + it('returns the search term when no field is present', () => { + expect(searchTerm('some plain query')).toEqual('some plain query'); + }); + + it('remove leading and trailing spaces', () => { + expect(searchTerm(' hello dolly ')).toEqual('hello dolly'); + }); + + it('remove duplicate whitespaces', () => { + expect(searchTerm(' foo bar ')).toEqual('foo bar'); + }); + + it('omits field terms', () => { + expect(searchTerm('some tag:foo query type:dashboard')).toEqual('some query'); + expect(searchTerm('tag:foo another query type:(dashboard OR vis)')).toEqual('another query'); + }); + + it('remove duplicate whitespaces when using field terms', () => { + expect(searchTerm(' over tag:foo 9000 ')).toEqual('over 9000'); + }); +}); + +describe('getFieldValueMap', () => { + const fieldValueMap = (raw: string) => getFieldValueMap(Query.parse(raw)); + + it('parses single value field term', () => { + const result = fieldValueMap('tag:foo'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual(['foo']); + }); + + it('parses multi-value field term', () => { + const result = fieldValueMap('tag:(foo OR bar)'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual(['foo', 'bar']); + }); + + it('parses multiple single value field terms', () => { + const result = fieldValueMap('tag:foo tag:bar'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual(['foo', 'bar']); + }); + + it('parses boolean field terms', () => { + const result = fieldValueMap('tag:true tag:false'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual([true, false]); + }); + + it('parses numeric field terms', () => { + const result = fieldValueMap('tag:42 tag:9000'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual([42, 9000]); + }); + + it('parses multiple mixed single/multi value field terms', () => { + const result = fieldValueMap('tag:foo tag:(bar OR hello) tag:dolly'); + + expect(result.size).toBe(1); + expect(result.get('tag')).toEqual(['foo', 'bar', 'hello', 'dolly']); + }); + + it('parses distinct field terms', () => { + const result = fieldValueMap('tag:foo type:dashboard tag:dolly type:(config OR map) foo:bar'); + + expect(result.size).toBe(3); + expect(result.get('tag')).toEqual(['foo', 'dolly']); + expect(result.get('type')).toEqual(['dashboard', 'config', 'map']); + expect(result.get('foo')).toEqual(['bar']); + }); + + it('ignore the search terms', () => { + const result = fieldValueMap('tag:foo some type:dashboard query foo:bar'); + + expect(result.size).toBe(3); + expect(result.get('tag')).toEqual(['foo']); + expect(result.get('type')).toEqual(['dashboard']); + expect(result.get('foo')).toEqual(['bar']); + }); +}); + +describe('applyAliases', () => { + const getValueMap = (entries: Record) => + new Map([...Object.entries(entries)]); + + it('returns the map unchanged when no aliases are used', () => { + const result = applyAliases( + getValueMap({ + tag: ['tag-1', 'tag-2'], + type: ['dashboard'], + }), + {} + ); + + expect(result.size).toEqual(2); + expect(result.get('tag')).toEqual(['tag-1', 'tag-2']); + expect(result.get('type')).toEqual(['dashboard']); + }); + + it('apply the aliases', () => { + const result = applyAliases( + getValueMap({ + tag: ['tag-1'], + tags: ['tag-2', 'tag-3'], + type: ['dashboard'], + }), + { + tag: ['tags'], + } + ); + + expect(result.size).toEqual(2); + expect(result.get('tag')).toEqual(['tag-1', 'tag-2', 'tag-3']); + expect(result.get('type')).toEqual(['dashboard']); + }); +}); diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.ts b/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.ts new file mode 100644 index 00000000000000..93fdd943a202c8 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/query_utils.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { Query } from '@elastic/eui'; +import { FilterValues } from './types'; + +/** + * Return a name->values map for all the field clauses of given query. + * + * @example + * ``` + * getFieldValueMap(Query.parse('foo:bar foo:baz hello:dolly term')); + * >> { foo: ['bar', 'baz'], hello: ['dolly] } + * ``` + */ +export const getFieldValueMap = (query: Query) => { + const fieldMap = new Map(); + + query.ast.clauses.forEach((clause) => { + if (clause.type === 'field') { + const { field, value } = clause; + fieldMap.set(field, [ + ...(fieldMap.get(field) ?? []), + ...((Array.isArray(value) ? value : [value]) as FilterValues), + ]); + } + }); + + return fieldMap; +}; + +/** + * Aggregate all term clauses from given query and concatenate them. + */ +export const getSearchTerm = (query: Query): string | undefined => { + let term: string | undefined; + if (query.ast.getTermClauses().length) { + term = query.ast + .getTermClauses() + .map((clause) => clause.value) + .join(' ') + .replace(/\s{2,}/g, ' ') + .trim(); + } + return term?.length ? term : undefined; +}; + +/** + * Apply given alias map to the value map, concatenating the aliases values to the alias target, and removing + * the alias entry. Any non-aliased entries will remain unchanged. + * + * @example + * ``` + * applyAliases({ field: ['foo'], alias: ['bar'], hello: ['dolly'] }, { field: ['alias']}); + * >> { field: ['foo', 'bar'], hello: ['dolly'] } + * ``` + */ +export const applyAliases = ( + valueMap: Map, + aliasesMap: Record +): Map => { + const reverseLookup: Record = {}; + Object.entries(aliasesMap).forEach(([canonical, aliases]) => { + aliases.forEach((alias) => { + reverseLookup[alias] = canonical; + }); + }); + + const resultMap = new Map(); + valueMap.forEach((values, field) => { + const targetKey = reverseLookup[field] ?? field; + resultMap.set(targetKey, [...(resultMap.get(targetKey) ?? []), ...values]); + }); + + return resultMap; +}; diff --git a/x-pack/plugins/global_search_bar/public/search_syntax/types.ts b/x-pack/plugins/global_search_bar/public/search_syntax/types.ts new file mode 100644 index 00000000000000..8df025a478bc5e --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/search_syntax/types.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export type FilterValueType = string | boolean | number; + +export type FilterValues = ValueType[]; + +export interface ParsedSearchParams { + /** + * The parsed search term. + * Can be undefined if the query was only composed of field terms. + */ + term?: string; + /** + * The filters extracted from the field terms. + */ + filters: { + /** + * Aggregation of `tag` and `tags` field clauses + */ + tags?: FilterValues; + /** + * Aggregation of `type` and `types` field clauses + */ + types?: FilterValues; + /** + * All unknown field clauses + */ + unknowns: Record; + }; +} diff --git a/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts new file mode 100644 index 00000000000000..8d961502e0967b --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { taggingApiMock } from '../../../saved_objects_tagging/public/mocks'; +import { Tag } from '../../../../../src/plugins/saved_objects_tagging_oss/common'; +import { getSuggestions } from './get_suggestions'; + +const createTag = (parts: Partial = {}): Tag => ({ + id: 'tag-id', + name: 'some-tag', + description: 'Some tag', + color: '#FF00CC', + ...parts, +}); + +describe('getSuggestions', () => { + let tagCache: ReturnType; + const searchableTypes = ['application', 'dashboard', 'maps']; + + beforeEach(() => { + tagCache = taggingApiMock.createCache(); + + tagCache.getState.mockReturnValue([ + createTag({ + id: 'basic', + name: 'normal', + }), + createTag({ + id: 'caps', + name: 'BAR', + }), + createTag({ + id: 'whitespace', + name: 'white space', + }), + ]); + }); + + describe('tag suggestion', () => { + it('returns a suggestion when matching the name of a tag', () => { + const suggestions = getSuggestions({ + searchTerm: 'normal', + tagCache, + searchableTypes: [], + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'tag: normal', + suggestedSearch: 'tag:normal', + }) + ); + }); + it('ignores leading or trailing spaces a suggestion when matching the name of a tag', () => { + const suggestions = getSuggestions({ + searchTerm: ' normal ', + tagCache, + searchableTypes: [], + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'tag: normal', + suggestedSearch: 'tag:normal', + }) + ); + }); + it('does not return suggestions when partially matching', () => { + const suggestions = getSuggestions({ + searchTerm: 'norm', + tagCache, + searchableTypes: [], + }); + + expect(suggestions).toHaveLength(0); + }); + it('ignores the case when matching the tag', () => { + const suggestions = getSuggestions({ + searchTerm: 'baR', + tagCache, + searchableTypes: [], + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'tag: BAR', + suggestedSearch: 'tag:BAR', + }) + ); + }); + it('escapes the name in the query when containing whitespaces', () => { + const suggestions = getSuggestions({ + searchTerm: 'white space', + tagCache, + searchableTypes: [], + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'tag: white space', + suggestedSearch: 'tag:"white space"', + }) + ); + }); + }); + + describe('type suggestion', () => { + it('returns a suggestion when matching a searchable type', () => { + const suggestions = getSuggestions({ + searchTerm: 'application', + tagCache, + searchableTypes, + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'type: application', + suggestedSearch: 'type:application', + }) + ); + }); + it('ignores leading or trailing spaces in the search term', () => { + const suggestions = getSuggestions({ + searchTerm: ' application ', + tagCache, + searchableTypes, + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'type: application', + suggestedSearch: 'type:application', + }) + ); + }); + it('does not return suggestions when partially matching', () => { + const suggestions = getSuggestions({ + searchTerm: 'appl', + tagCache, + searchableTypes, + }); + + expect(suggestions).toHaveLength(0); + }); + it('ignores the case when matching the type', () => { + const suggestions = getSuggestions({ + searchTerm: 'DASHboard', + tagCache, + searchableTypes, + }); + + expect(suggestions).toHaveLength(1); + expect(suggestions[0]).toEqual( + expect.objectContaining({ + label: 'type: dashboard', + suggestedSearch: 'type:dashboard', + }) + ); + }); + }); +}); diff --git a/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.ts b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.ts new file mode 100644 index 00000000000000..c097e365045af3 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { ITagsCache } from '../../../../../src/plugins/saved_objects_tagging_oss/public'; + +interface GetSuggestionOptions { + searchTerm: string; + searchableTypes: string[]; + tagCache?: ITagsCache; +} + +export interface SearchSuggestion { + key: string; + label: string; + description: string; + icon: string; + suggestedSearch: string; +} + +export const getSuggestions = ({ + searchTerm, + searchableTypes, + tagCache, +}: GetSuggestionOptions): SearchSuggestion[] => { + const results: SearchSuggestion[] = []; + const suggestionTerm = searchTerm.trim(); + + const matchingType = findIgnoreCase(searchableTypes, suggestionTerm); + if (matchingType) { + const suggestedSearch = escapeIfWhiteSpaces(matchingType); + results.push({ + key: '__type__suggestion__', + label: `type: ${matchingType}`, + icon: 'filter', + description: i18n.translate('xpack.globalSearchBar.suggestions.filterByTypeLabel', { + defaultMessage: 'Filter by type', + }), + suggestedSearch: `type:${suggestedSearch}`, + }); + } + + if (tagCache && searchTerm) { + const matchingTag = tagCache + .getState() + .find((tag) => equalsIgnoreCase(tag.name, suggestionTerm)); + if (matchingTag) { + const suggestedSearch = escapeIfWhiteSpaces(matchingTag.name); + results.push({ + key: '__tag__suggestion__', + label: `tag: ${matchingTag.name}`, + icon: 'tag', + description: i18n.translate('xpack.globalSearchBar.suggestions.filterByTagLabel', { + defaultMessage: 'Filter by tag name', + }), + suggestedSearch: `tag:${suggestedSearch}`, + }); + } + } + + return results; +}; + +const findIgnoreCase = (array: string[], target: string) => { + for (const item of array) { + if (equalsIgnoreCase(item, target)) { + return item; + } + } + return undefined; +}; + +const equalsIgnoreCase = (a: string, b: string) => a.toLowerCase() === b.toLowerCase(); + +const escapeIfWhiteSpaces = (term: string) => { + if (/\s/g.test(term)) { + return `"${term}"`; + } + return term; +}; diff --git a/x-pack/plugins/global_search_bar/public/suggestions/index.ts b/x-pack/plugins/global_search_bar/public/suggestions/index.ts new file mode 100644 index 00000000000000..aa1402a93692b4 --- /dev/null +++ b/x-pack/plugins/global_search_bar/public/suggestions/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { getSuggestions, SearchSuggestion } from './get_suggestions'; diff --git a/x-pack/plugins/global_search_providers/jest.config.js b/x-pack/plugins/global_search_providers/jest.config.js new file mode 100644 index 00000000000000..3bd70206c936c7 --- /dev/null +++ b/x-pack/plugins/global_search_providers/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/global_search_providers'], +}; diff --git a/x-pack/plugins/global_search_providers/public/providers/application.test.ts b/x-pack/plugins/global_search_providers/public/providers/application.test.ts index 8acbda5e0a6d46..dadcf626ace4ad 100644 --- a/x-pack/plugins/global_search_providers/public/providers/application.test.ts +++ b/x-pack/plugins/global_search_providers/public/providers/application.test.ts @@ -28,6 +28,7 @@ const createApp = (props: Partial = {}): PublicAppInfo => ({ status: AppStatus.accessible, navLinkStatus: AppNavLinkStatus.visible, chromeless: false, + searchDeepLinks: [], ...props, }); @@ -61,157 +62,237 @@ describe('applicationResultProvider', () => { getAppResultsMock.mockReturnValue([]); }); + afterEach(() => { + getAppResultsMock.mockReset(); + }); + it('has the correct id', () => { const provider = createApplicationResultProvider(Promise.resolve(application)); expect(provider.id).toBe('application'); }); - it('calls `getAppResults` with the term and the list of apps', async () => { - application.applications$ = of( - createAppMap([ - createApp({ id: 'app1', title: 'App 1' }), - createApp({ id: 'app2', title: 'App 2' }), - createApp({ id: 'app3', title: 'App 3' }), - ]) - ); - const provider = createApplicationResultProvider(Promise.resolve(application)); - - await provider.find('term', defaultOption).toPromise(); - - expect(getAppResultsMock).toHaveBeenCalledTimes(1); - expect(getAppResultsMock).toHaveBeenCalledWith('term', [ - expectApp('app1'), - expectApp('app2'), - expectApp('app3'), - ]); - }); + describe('#find', () => { + it('calls `getAppResults` with the term and the list of apps', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'app2', title: 'App 2' }), + createApp({ id: 'app3', title: 'App 3' }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + + await provider.find({ term: 'term' }, defaultOption).toPromise(); + + expect(getAppResultsMock).toHaveBeenCalledTimes(1); + expect(getAppResultsMock).toHaveBeenCalledWith('term', [ + expectApp('app1'), + expectApp('app2'), + expectApp('app3'), + ]); + }); - it('ignores inaccessible apps', async () => { - application.applications$ = of( - createAppMap([ - createApp({ id: 'app1', title: 'App 1' }), - createApp({ id: 'disabled', title: 'disabled', status: AppStatus.inaccessible }), - ]) - ); - const provider = createApplicationResultProvider(Promise.resolve(application)); - await provider.find('term', defaultOption).toPromise(); + it('calls `getAppResults` when filtering by type with `application` included', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'app2', title: 'App 2' }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + + await provider + .find({ term: 'term', types: ['dashboard', 'application'] }, defaultOption) + .toPromise(); + + expect(getAppResultsMock).toHaveBeenCalledTimes(1); + expect(getAppResultsMock).toHaveBeenCalledWith('term', [ + expectApp('app1'), + expectApp('app2'), + ]); + }); - expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); - }); + it('does not call `getAppResults` and return no results when filtering by type with `application` not included', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'app2', title: 'App 2' }), + createApp({ id: 'app3', title: 'App 3' }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + + const results = await provider + .find({ term: 'term', types: ['dashboard', 'map'] }, defaultOption) + .toPromise(); + + expect(getAppResultsMock).not.toHaveBeenCalled(); + expect(results).toEqual([]); + }); - it('ignores apps with non-visible navlink', async () => { - application.applications$ = of( - createAppMap([ - createApp({ id: 'app1', title: 'App 1', navLinkStatus: AppNavLinkStatus.visible }), - createApp({ id: 'disabled', title: 'disabled', navLinkStatus: AppNavLinkStatus.disabled }), - createApp({ id: 'hidden', title: 'hidden', navLinkStatus: AppNavLinkStatus.hidden }), - ]) - ); - const provider = createApplicationResultProvider(Promise.resolve(application)); - await provider.find('term', defaultOption).toPromise(); + it('does not call `getAppResults` and returns no results when filtering by tag', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'app2', title: 'App 2' }), + createApp({ id: 'app3', title: 'App 3' }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + + const results = await provider + .find({ term: 'term', tags: ['some-tag-id'] }, defaultOption) + .toPromise(); + + expect(getAppResultsMock).not.toHaveBeenCalled(); + expect(results).toEqual([]); + }); - expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); - }); + it('ignores inaccessible apps', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'disabled', title: 'disabled', status: AppStatus.inaccessible }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + await provider.find({ term: 'term' }, defaultOption).toPromise(); + + expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); + }); - it('ignores chromeless apps', async () => { - application.applications$ = of( - createAppMap([ - createApp({ id: 'app1', title: 'App 1' }), - createApp({ id: 'chromeless', title: 'chromeless', chromeless: true }), - ]) - ); + it('ignores apps with non-visible navlink', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1', navLinkStatus: AppNavLinkStatus.visible }), + createApp({ + id: 'disabled', + title: 'disabled', + navLinkStatus: AppNavLinkStatus.disabled, + }), + createApp({ id: 'hidden', title: 'hidden', navLinkStatus: AppNavLinkStatus.hidden }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + await provider.find({ term: 'term' }, defaultOption).toPromise(); + + expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); + }); - const provider = createApplicationResultProvider(Promise.resolve(application)); - await provider.find('term', defaultOption).toPromise(); + it('ignores chromeless apps', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'chromeless', title: 'chromeless', chromeless: true }), + ]) + ); - expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); - }); + const provider = createApplicationResultProvider(Promise.resolve(application)); + await provider.find({ term: 'term' }, defaultOption).toPromise(); - it('sorts the results returned by `getAppResults`', async () => { - getAppResultsMock.mockReturnValue([ - createResult({ id: 'r60', score: 60 }), - createResult({ id: 'r100', score: 100 }), - createResult({ id: 'r50', score: 50 }), - createResult({ id: 'r75', score: 75 }), - ]); + expect(getAppResultsMock).toHaveBeenCalledWith('term', [expectApp('app1')]); + }); - const provider = createApplicationResultProvider(Promise.resolve(application)); - const results = await provider.find('term', defaultOption).toPromise(); - - expect(results).toEqual([ - expectResult('r100'), - expectResult('r75'), - expectResult('r60'), - expectResult('r50'), - ]); - }); + it('sorts the results returned by `getAppResults`', async () => { + getAppResultsMock.mockReturnValue([ + createResult({ id: 'r60', score: 60 }), + createResult({ id: 'r100', score: 100 }), + createResult({ id: 'r50', score: 50 }), + createResult({ id: 'r75', score: 75 }), + ]); + + const provider = createApplicationResultProvider(Promise.resolve(application)); + const results = await provider.find({ term: 'term' }, defaultOption).toPromise(); + + expect(results).toEqual([ + expectResult('r100'), + expectResult('r75'), + expectResult('r60'), + expectResult('r50'), + ]); + }); - it('only returns the highest `maxResults` results', async () => { - getAppResultsMock.mockReturnValue([ - createResult({ id: 'r60', score: 60 }), - createResult({ id: 'r100', score: 100 }), - createResult({ id: 'r50', score: 50 }), - createResult({ id: 'r75', score: 75 }), - ]); + it('only returns the highest `maxResults` results', async () => { + getAppResultsMock.mockReturnValue([ + createResult({ id: 'r60', score: 60 }), + createResult({ id: 'r100', score: 100 }), + createResult({ id: 'r50', score: 50 }), + createResult({ id: 'r75', score: 75 }), + ]); - const provider = createApplicationResultProvider(Promise.resolve(application)); + const provider = createApplicationResultProvider(Promise.resolve(application)); - const options = { - ...defaultOption, - maxResults: 2, - }; - const results = await provider.find('term', options).toPromise(); + const options = { + ...defaultOption, + maxResults: 2, + }; + const results = await provider.find({ term: 'term' }, options).toPromise(); - expect(results).toEqual([expectResult('r100'), expectResult('r75')]); - }); + expect(results).toEqual([expectResult('r100'), expectResult('r75')]); + }); - it('only emits once, even if `application$` emits multiple times', () => { - getTestScheduler().run(({ hot, expectObservable }) => { - const appMap = createAppMap([createApp({ id: 'app1', title: 'App 1' })]); + it('only emits once, even if `application$` emits multiple times', () => { + getTestScheduler().run(({ hot, expectObservable }) => { + const appMap = createAppMap([createApp({ id: 'app1', title: 'App 1' })]); - application.applications$ = hot('--a---b', { a: appMap, b: appMap }); + application.applications$ = hot('--a---b', { a: appMap, b: appMap }); - // test scheduler doesnt play well with promises. need to workaround by passing - // an observable instead. Behavior with promise is asserted in previous tests of the suite - const applicationPromise = (hot('a', { - a: application, - }) as unknown) as Promise; + // test scheduler doesnt play well with promises. need to workaround by passing + // an observable instead. Behavior with promise is asserted in previous tests of the suite + const applicationPromise = (hot('a', { + a: application, + }) as unknown) as Promise; - const provider = createApplicationResultProvider(applicationPromise); + const provider = createApplicationResultProvider(applicationPromise); - const options = { - ...defaultOption, - aborted$: hot('|'), - }; + const options = { + ...defaultOption, + aborted$: hot('|'), + }; - const resultObs = provider.find('term', options); + const resultObs = provider.find({ term: 'term' }, options); - expectObservable(resultObs).toBe('--(a|)', { a: [] }); + expectObservable(resultObs).toBe('--(a|)', { a: [] }); + }); }); - }); - it('only emits results until `aborted$` emits', () => { - getTestScheduler().run(({ hot, expectObservable }) => { - const appMap = createAppMap([createApp({ id: 'app1', title: 'App 1' })]); + it('only emits results until `aborted$` emits', () => { + getTestScheduler().run(({ hot, expectObservable }) => { + const appMap = createAppMap([createApp({ id: 'app1', title: 'App 1' })]); - application.applications$ = hot('---a', { a: appMap, b: appMap }); + application.applications$ = hot('---a', { a: appMap, b: appMap }); - // test scheduler doesnt play well with promises. need to workaround by passing - // an observable instead. Behavior with promise is asserted in previous tests of the suite - const applicationPromise = (hot('a', { - a: application, - }) as unknown) as Promise; + // test scheduler doesnt play well with promises. need to workaround by passing + // an observable instead. Behavior with promise is asserted in previous tests of the suite + const applicationPromise = (hot('a', { + a: application, + }) as unknown) as Promise; - const provider = createApplicationResultProvider(applicationPromise); + const provider = createApplicationResultProvider(applicationPromise); - const options = { - ...defaultOption, - aborted$: hot('-(a|)', { a: undefined }), - }; + const options = { + ...defaultOption, + aborted$: hot('-(a|)', { a: undefined }), + }; + + const resultObs = provider.find({ term: 'term' }, options); - const resultObs = provider.find('term', options); + expectObservable(resultObs).toBe('-|'); + }); + }); + }); - expectObservable(resultObs).toBe('-|'); + describe('#getSearchableTypes', () => { + it('returns only the `application` type', async () => { + application.applications$ = of( + createAppMap([ + createApp({ id: 'app1', title: 'App 1' }), + createApp({ id: 'app2', title: 'App 2' }), + ]) + ); + const provider = createApplicationResultProvider(Promise.resolve(application)); + + expect(await provider.getSearchableTypes()).toEqual(['application']); }); }); }); diff --git a/x-pack/plugins/global_search_providers/public/providers/application.ts b/x-pack/plugins/global_search_providers/public/providers/application.ts index 45264a3b2c521a..5b4c58161c0aed 100644 --- a/x-pack/plugins/global_search_providers/public/providers/application.ts +++ b/x-pack/plugins/global_search_providers/public/providers/application.ts @@ -4,12 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import { from } from 'rxjs'; +import { from, of } from 'rxjs'; import { take, map, takeUntil, mergeMap, shareReplay } from 'rxjs/operators'; import { ApplicationStart } from 'src/core/public'; import { GlobalSearchResultProvider } from '../../../global_search/public'; import { getAppResults } from './get_app_results'; +const applicationType = 'application'; + export const createApplicationResultProvider = ( applicationPromise: Promise ): GlobalSearchResultProvider => { @@ -26,15 +28,19 @@ export const createApplicationResultProvider = ( return { id: 'application', - find: (term, { aborted$, maxResults }) => { + find: ({ term, types, tags }, { aborted$, maxResults }) => { + if (tags || (types && !types.includes(applicationType))) { + return of([]); + } return searchableApps$.pipe( takeUntil(aborted$), take(1), map((apps) => { - const results = getAppResults(term, [...apps.values()]); + const results = getAppResults(term ?? '', [...apps.values()]); return results.sort((a, b) => b.score - a.score).slice(0, maxResults); }) ); }, + getSearchableTypes: () => [applicationType], }; }; diff --git a/x-pack/plugins/global_search_providers/public/providers/get_app_results.test.ts b/x-pack/plugins/global_search_providers/public/providers/get_app_results.test.ts index 5ef15a8cf2ea47..33fd358f61acac 100644 --- a/x-pack/plugins/global_search_providers/public/providers/get_app_results.test.ts +++ b/x-pack/plugins/global_search_providers/public/providers/get_app_results.test.ts @@ -10,7 +10,7 @@ import { PublicAppInfo, DEFAULT_APP_CATEGORIES, } from 'src/core/public'; -import { appToResult, getAppResults, scoreApp } from './get_app_results'; +import { AppLink, appToResult, getAppResults, scoreApp } from './get_app_results'; const createApp = (props: Partial = {}): PublicAppInfo => ({ id: 'app1', @@ -19,9 +19,17 @@ const createApp = (props: Partial = {}): PublicAppInfo => ({ status: AppStatus.accessible, navLinkStatus: AppNavLinkStatus.visible, chromeless: false, + searchDeepLinks: [], ...props, }); +const createAppLink = (props: Partial = {}): AppLink => ({ + id: props.id ?? 'app1', + path: props.appRoute ?? '/app/app1', + subLinkTitles: [], + app: createApp(props), +}); + describe('getAppResults', () => { it('retrieves the matching results', () => { const apps = [ @@ -34,43 +42,82 @@ describe('getAppResults', () => { expect(results.length).toBe(1); expect(results[0]).toEqual(expect.objectContaining({ id: 'dashboard', score: 100 })); }); + + it('creates multiple links for apps with searchDeepLinks', () => { + const apps = [ + createApp({ + searchDeepLinks: [ + { id: 'sub1', title: 'Sub1', path: '/sub1', searchDeepLinks: [] }, + { + id: 'sub2', + title: 'Sub2', + path: '/sub2', + searchDeepLinks: [ + { id: 'sub2sub1', title: 'Sub2Sub1', path: '/sub2/sub1', searchDeepLinks: [] }, + ], + }, + ], + }), + ]; + + const results = getAppResults('App 1', apps); + + expect(results.length).toBe(4); + expect(results.map(({ title }) => title)).toEqual([ + 'App 1', + 'App 1 / Sub1', + 'App 1 / Sub2', + 'App 1 / Sub2 / Sub2Sub1', + ]); + }); + + it('only includes searchDeepLinks when search term is non-empty', () => { + const apps = [ + createApp({ + searchDeepLinks: [{ id: 'sub1', title: 'Sub1', path: '/sub1', searchDeepLinks: [] }], + }), + ]; + + expect(getAppResults('', apps).length).toBe(1); + expect(getAppResults('App 1', apps).length).toBe(2); + }); }); describe('scoreApp', () => { describe('when the term is included in the title', () => { it('returns 100 if the app title is an exact match', () => { - expect(scoreApp('dashboard', createApp({ title: 'dashboard' }))).toBe(100); - expect(scoreApp('dashboard', createApp({ title: 'DASHBOARD' }))).toBe(100); - expect(scoreApp('DASHBOARD', createApp({ title: 'DASHBOARD' }))).toBe(100); - expect(scoreApp('dashBOARD', createApp({ title: 'DASHboard' }))).toBe(100); + expect(scoreApp('dashboard', createAppLink({ title: 'dashboard' }))).toBe(100); + expect(scoreApp('dashboard', createAppLink({ title: 'DASHBOARD' }))).toBe(100); + expect(scoreApp('DASHBOARD', createAppLink({ title: 'DASHBOARD' }))).toBe(100); + expect(scoreApp('dashBOARD', createAppLink({ title: 'DASHboard' }))).toBe(100); }); it('returns 90 if the app title starts with the term', () => { - expect(scoreApp('dash', createApp({ title: 'dashboard' }))).toBe(90); - expect(scoreApp('DASH', createApp({ title: 'dashboard' }))).toBe(90); + expect(scoreApp('dash', createAppLink({ title: 'dashboard' }))).toBe(90); + expect(scoreApp('DASH', createAppLink({ title: 'dashboard' }))).toBe(90); }); it('returns 75 if the term in included in the app title', () => { - expect(scoreApp('board', createApp({ title: 'dashboard' }))).toBe(75); - expect(scoreApp('shboa', createApp({ title: 'dashboard' }))).toBe(75); + expect(scoreApp('board', createAppLink({ title: 'dashboard' }))).toBe(75); + expect(scoreApp('shboa', createAppLink({ title: 'dashboard' }))).toBe(75); }); }); describe('when the term is not included in the title', () => { it('returns the levenshtein ratio if superior or equal to 60', () => { - expect(scoreApp('0123456789', createApp({ title: '012345' }))).toBe(60); - expect(scoreApp('--1234567-', createApp({ title: '123456789' }))).toBe(60); + expect(scoreApp('0123456789', createAppLink({ title: '012345' }))).toBe(60); + expect(scoreApp('--1234567-', createAppLink({ title: '123456789' }))).toBe(60); }); it('returns 0 if the levenshtein ratio is inferior to 60', () => { - expect(scoreApp('0123456789', createApp({ title: '12345' }))).toBe(0); - expect(scoreApp('1-2-3-4-5', createApp({ title: '123456789' }))).toBe(0); + expect(scoreApp('0123456789', createAppLink({ title: '12345' }))).toBe(0); + expect(scoreApp('1-2-3-4-5', createAppLink({ title: '123456789' }))).toBe(0); }); }); }); describe('appToResult', () => { it('converts an app to a result', () => { - const app = createApp({ + const app = createAppLink({ id: 'foo', title: 'Foo', euiIconType: 'fooIcon', @@ -92,7 +139,7 @@ describe('appToResult', () => { }); it('converts an app without category to a result', () => { - const app = createApp({ + const app = createAppLink({ id: 'foo', title: 'Foo', euiIconType: 'fooIcon', @@ -111,4 +158,28 @@ describe('appToResult', () => { score: 42, }); }); + + it('includes the app name in sub links', () => { + const app = createApp(); + const appLink: AppLink = { + id: 'app1-sub', + app, + path: '/sub1', + subLinkTitles: ['Sub1'], + }; + + expect(appToResult(appLink, 42).title).toEqual('App 1 / Sub1'); + }); + + it('does not include the app name in sub links for Stack Management', () => { + const app = createApp({ id: 'management' }); + const appLink: AppLink = { + id: 'management-sub', + app, + path: '/sub1', + subLinkTitles: ['Sub1'], + }; + + expect(appToResult(appLink, 42).title).toEqual('Sub1'); + }); }); diff --git a/x-pack/plugins/global_search_providers/public/providers/get_app_results.ts b/x-pack/plugins/global_search_providers/public/providers/get_app_results.ts index c4e1a9532d144c..01e6e87f30c94d 100644 --- a/x-pack/plugins/global_search_providers/public/providers/get_app_results.ts +++ b/x-pack/plugins/global_search_providers/public/providers/get_app_results.ts @@ -5,22 +5,41 @@ */ import levenshtein from 'js-levenshtein'; -import { PublicAppInfo } from 'src/core/public'; +import { PublicAppInfo, PublicAppSearchDeepLinkInfo } from 'src/core/public'; import { GlobalSearchProviderResult } from '../../../global_search/public'; +/** Type used internally to represent an application unrolled into its separate searchDeepLinks */ +export interface AppLink { + id: string; + app: PublicAppInfo; + subLinkTitles: string[]; + path: string; +} + export const getAppResults = ( term: string, apps: PublicAppInfo[] ): GlobalSearchProviderResult[] => { - return apps - .map((app) => ({ app, score: scoreApp(term, app) })) - .filter(({ score }) => score > 0) - .map(({ app, score }) => appToResult(app, score)); + return ( + apps + // Unroll all searchDeepLinks, only if there is a search term + .flatMap((app) => + term.length > 0 + ? flattenDeepLinks(app) + : [{ id: app.id, app, path: app.appRoute, subLinkTitles: [] }] + ) + .map((appLink) => ({ + appLink, + score: scoreApp(term, appLink), + })) + .filter(({ score }) => score > 0) + .map(({ appLink, score }) => appToResult(appLink, score)) + ); }; -export const scoreApp = (term: string, { title }: PublicAppInfo): number => { +export const scoreApp = (term: string, appLink: AppLink): number => { term = term.toLowerCase(); - title = title.toLowerCase(); + const title = [appLink.app.title, ...appLink.subLinkTitles].join(' ').toLowerCase(); // shortcuts to avoid calculating the distance when there is an exact match somewhere. if (title === term) { @@ -43,17 +62,61 @@ export const scoreApp = (term: string, { title }: PublicAppInfo): number => { return 0; }; -export const appToResult = (app: PublicAppInfo, score: number): GlobalSearchProviderResult => { +export const appToResult = (appLink: AppLink, score: number): GlobalSearchProviderResult => { + const titleParts = + // Stack Management app should not include the app title in the concatenated link label + appLink.app.id === 'management' && appLink.subLinkTitles.length > 0 + ? appLink.subLinkTitles + : [appLink.app.title, ...appLink.subLinkTitles]; + return { - id: app.id, - title: app.title, + id: appLink.id, + // Concatenate title using slashes + title: titleParts.join(' / '), type: 'application', - icon: app.euiIconType, - url: app.appRoute, + icon: appLink.app.euiIconType, + url: appLink.path, meta: { - categoryId: app.category?.id ?? null, - categoryLabel: app.category?.label ?? null, + categoryId: appLink.app.category?.id ?? null, + categoryLabel: appLink.app.category?.label ?? null, }, score, }; }; + +const flattenDeepLinks = ( + app: PublicAppInfo, + deepLink?: PublicAppSearchDeepLinkInfo +): AppLink[] => { + if (!deepLink) { + return [ + { + id: app.id, + app, + path: app.appRoute, + subLinkTitles: [], + }, + ...app.searchDeepLinks.flatMap((appDeepLink) => flattenDeepLinks(app, appDeepLink)), + ]; + } + + return [ + ...(deepLink.path + ? [ + { + id: `${app.id}-${deepLink.id}`, + app, + subLinkTitles: [deepLink.title], + path: `${app.appRoute}${deepLink.path}`, + }, + ] + : []), + ...deepLink.searchDeepLinks + .flatMap((deepDeepLink) => flattenDeepLinks(app, deepDeepLink)) + .map((deepAppLink) => ({ + ...deepAppLink, + // shift current sublink title into array of sub-sublink titles + subLinkTitles: [deepLink.title, ...deepAppLink.subLinkTitles], + })), + ]; +}; diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts index 8798fe6694c96c..ca5dbf8026472d 100644 --- a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.test.ts @@ -42,6 +42,7 @@ describe('mapToResult', () => { name: 'dashboard', management: { defaultSearchField: 'title', + icon: 'dashboardApp', getInAppUrl: (obj) => ({ path: `/dashboard/${obj.id}`, uiCapabilitiesPath: '' }), }, }); @@ -62,6 +63,7 @@ describe('mapToResult', () => { title: 'My dashboard', type: 'dashboard', url: '/dashboard/dash1', + icon: 'dashboardApp', score: 42, }); }); diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts index 14641e1aaffff4..ec55a2a78fa9e1 100644 --- a/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/map_object_to_result.ts @@ -50,6 +50,7 @@ export const mapToResult = ( // so we are forced to cast the attributes to any to access the properties associated with it. title: (object.attributes as any)[defaultSearchField], type: object.type, + icon: type.management?.icon ?? undefined, url: getInAppUrl(object).path, score: object.score, }; diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts index b556e2785b4b4a..5d24b33f2619ef 100644 --- a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.test.ts @@ -115,69 +115,127 @@ describe('savedObjectsResultProvider', () => { expect(provider.id).toBe('savedObjects'); }); - it('calls `savedObjectClient.find` with the correct parameters', async () => { - await provider.find('term', defaultOption, context).toPromise(); - - expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); - expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ - page: 1, - perPage: defaultOption.maxResults, - search: 'term*', - preference: 'pref', - searchFields: ['title', 'description'], - type: ['typeA', 'typeB'], + describe('#find()', () => { + it('calls `savedObjectClient.find` with the correct parameters', async () => { + await provider.find({ term: 'term' }, defaultOption, context).toPromise(); + + expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); + expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ + page: 1, + perPage: defaultOption.maxResults, + search: 'term*', + preference: 'pref', + searchFields: ['title', 'description'], + type: ['typeA', 'typeB'], + }); }); - }); - it('does not call `savedObjectClient.find` if `term` is empty', async () => { - const results = await provider.find('', defaultOption, context).pipe(toArray()).toPromise(); + it('filters searchable types depending on the `types` parameter', async () => { + await provider.find({ term: 'term', types: ['typeA'] }, defaultOption, context).toPromise(); + + expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); + expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ + page: 1, + perPage: defaultOption.maxResults, + search: 'term*', + preference: 'pref', + searchFields: ['title'], + type: ['typeA'], + }); + }); - expect(context.core.savedObjects.client.find).not.toHaveBeenCalled(); - expect(results).toEqual([[]]); - }); + it('ignore the case for the `types` parameter', async () => { + await provider.find({ term: 'term', types: ['TyPEa'] }, defaultOption, context).toPromise(); + + expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); + expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ + page: 1, + perPage: defaultOption.maxResults, + search: 'term*', + preference: 'pref', + searchFields: ['title'], + type: ['typeA'], + }); + }); - it('converts the saved objects to results', async () => { - context.core.savedObjects.client.find.mockResolvedValue( - createFindResponse([ - createObject({ id: 'resultA', type: 'typeA', score: 50 }, { title: 'titleA' }), - createObject({ id: 'resultB', type: 'typeB', score: 78 }, { description: 'titleB' }), - ]) - ); + it('calls `savedObjectClient.find` with the correct references when the `tags` option is set', async () => { + await provider + .find({ term: 'term', tags: ['tag-id-1', 'tag-id-2'] }, defaultOption, context) + .toPromise(); + + expect(context.core.savedObjects.client.find).toHaveBeenCalledTimes(1); + expect(context.core.savedObjects.client.find).toHaveBeenCalledWith({ + page: 1, + perPage: defaultOption.maxResults, + search: 'term*', + preference: 'pref', + searchFields: ['title', 'description'], + hasReference: [ + { type: 'tag', id: 'tag-id-1' }, + { type: 'tag', id: 'tag-id-2' }, + ], + type: ['typeA', 'typeB'], + }); + }); - const results = await provider.find('term', defaultOption, context).toPromise(); - expect(results).toEqual([ - { - id: 'resultA', - title: 'titleA', - type: 'typeA', - url: '/type-a/resultA', - score: 50, - }, - { - id: 'resultB', - title: 'titleB', - type: 'typeB', - url: '/type-b/resultB', - score: 78, - }, - ]); - }); + it('does not call `savedObjectClient.find` if all params are empty', async () => { + const results = await provider.find({}, defaultOption, context).pipe(toArray()).toPromise(); - it('only emits results until `aborted$` emits', () => { - getTestScheduler().run(({ hot, expectObservable }) => { - // test scheduler doesnt play well with promises. need to workaround by passing - // an observable instead. Behavior with promise is asserted in previous tests of the suite - context.core.savedObjects.client.find.mockReturnValue( - hot('---a', { a: createFindResponse([]) }) as any - ); + expect(context.core.savedObjects.client.find).not.toHaveBeenCalled(); + expect(results).toEqual([[]]); + }); - const resultObs = provider.find( - 'term', - { ...defaultOption, aborted$: hot('-(a|)', { a: undefined }) }, - context + it('converts the saved objects to results', async () => { + context.core.savedObjects.client.find.mockResolvedValue( + createFindResponse([ + createObject({ id: 'resultA', type: 'typeA', score: 50 }, { title: 'titleA' }), + createObject({ id: 'resultB', type: 'typeB', score: 78 }, { description: 'titleB' }), + ]) ); - expectObservable(resultObs).toBe('-|'); + const results = await provider.find({ term: 'term' }, defaultOption, context).toPromise(); + expect(results).toEqual([ + { + id: 'resultA', + title: 'titleA', + type: 'typeA', + url: '/type-a/resultA', + score: 50, + }, + { + id: 'resultB', + title: 'titleB', + type: 'typeB', + url: '/type-b/resultB', + score: 78, + }, + ]); + }); + + it('only emits results until `aborted$` emits', () => { + getTestScheduler().run(({ hot, expectObservable }) => { + // test scheduler doesnt play well with promises. need to workaround by passing + // an observable instead. Behavior with promise is asserted in previous tests of the suite + context.core.savedObjects.client.find.mockReturnValue( + hot('---a', { a: createFindResponse([]) }) as any + ); + + const resultObs = provider.find( + { term: 'term' }, + { ...defaultOption, aborted$: hot('-(a|)', { a: undefined }) }, + context + ); + + expectObservable(resultObs).toBe('-|'); + }); + }); + }); + + describe('#getSearchableTypes', () => { + it('returns the searchable saved object types', async () => { + const types = await provider.getSearchableTypes(context); + + expect(types.sort()).toEqual(['typeA', 'typeB']); }); }); }); diff --git a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts index 3861858a536268..489e8f71c2d532 100644 --- a/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts +++ b/x-pack/plugins/global_search_providers/server/providers/saved_objects/provider.ts @@ -6,14 +6,15 @@ import { from, combineLatest, of } from 'rxjs'; import { map, takeUntil, first } from 'rxjs/operators'; +import { SavedObjectsFindOptionsReference, ISavedObjectTypeRegistry } from 'src/core/server'; import { GlobalSearchResultProvider } from '../../../../global_search/server'; import { mapToResults } from './map_object_to_result'; export const createSavedObjectsResultProvider = (): GlobalSearchResultProvider => { return { id: 'savedObjects', - find: (term, { aborted$, maxResults, preference }, { core }) => { - if (!term) { + find: ({ term, types, tags }, { aborted$, maxResults, preference }, { core }) => { + if (!term && !types && !tags) { return of([]); } @@ -22,17 +23,21 @@ export const createSavedObjectsResultProvider = (): GlobalSearchResultProvider = savedObjects: { client, typeRegistry }, } = core; - const searchableTypes = typeRegistry - .getVisibleTypes() - .filter((type) => type.management?.defaultSearchField && type.management?.getInAppUrl); + const searchableTypes = getSearchableTypes(typeRegistry, types); + const searchFields = uniq( searchableTypes.map((type) => type.management!.defaultSearchField!) ); + const references: SavedObjectsFindOptionsReference[] | undefined = tags + ? tags.map((tagId) => ({ type: 'tag', id: tagId })) + : undefined; + const responsePromise = client.find({ page: 1, perPage: maxResults, search: term ? `${term}*` : undefined, + ...(references ? { hasReference: references } : {}), preference, searchFields, type: searchableTypes.map((type) => type.name), @@ -43,7 +48,22 @@ export const createSavedObjectsResultProvider = (): GlobalSearchResultProvider = map(([res, cap]) => mapToResults(res.saved_objects, typeRegistry, cap)) ); }, + getSearchableTypes: ({ core }) => { + const { + savedObjects: { typeRegistry }, + } = core; + return getSearchableTypes(typeRegistry).map((type) => type.name); + }, }; }; +const getSearchableTypes = (typeRegistry: ISavedObjectTypeRegistry, types?: string[]) => + typeRegistry + .getVisibleTypes() + .filter(types ? (type) => includeIgnoreCase(types, type.name) : () => true) + .filter((type) => type.management?.defaultSearchField && type.management?.getInAppUrl); + const uniq = (values: T[]): T[] => [...new Set(values)]; + +const includeIgnoreCase = (list: string[], item: string) => + list.find((e) => e.toLowerCase() === item.toLowerCase()) !== undefined; diff --git a/x-pack/plugins/graph/jest.config.js b/x-pack/plugins/graph/jest.config.js new file mode 100644 index 00000000000000..da729b0fae223a --- /dev/null +++ b/x-pack/plugins/graph/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/graph'], +}; diff --git a/x-pack/plugins/graph/public/angular/graph_client_workspace.js b/x-pack/plugins/graph/public/angular/graph_client_workspace.js index 5cc06bad4c4238..785e221b798650 100644 --- a/x-pack/plugins/graph/public/angular/graph_client_workspace.js +++ b/x-pack/plugins/graph/public/angular/graph_client_workspace.js @@ -1187,7 +1187,7 @@ function GraphWorkspace(options) { // Search for connections between the selected nodes. searcher(self.options.indexName, searchReq, function (data) { - const numDocsMatched = data.hits.total; + const numDocsMatched = data.hits.total.value; const buckets = data.aggregations.matrix.buckets; const vertices = nodesForLinking.map(function (existingNode) { return { diff --git a/x-pack/plugins/graph/public/application.ts b/x-pack/plugins/graph/public/application.ts index 90e87ff4ec85e3..c7cf2554c5c606 100644 --- a/x-pack/plugins/graph/public/application.ts +++ b/x-pack/plugins/graph/public/application.ts @@ -32,7 +32,7 @@ import { // @ts-ignore import { initGraphApp } from './app'; import { Plugin as DataPlugin, IndexPatternsContract } from '../../../../src/plugins/data/public'; -import { LicensingPluginSetup } from '../../licensing/public'; +import { LicensingPluginStart } from '../../licensing/public'; import { checkLicense } from '../common/check_license'; import { NavigationPublicPluginStart as NavigationStart } from '../../../../src/plugins/navigation/public'; import { Storage } from '../../../../src/plugins/kibana_utils/public'; @@ -60,7 +60,7 @@ export interface GraphDependencies { capabilities: Record>; coreStart: AppMountContext['core']; navigation: NavigationStart; - licensing: LicensingPluginSetup; + licensing: LicensingPluginStart; chrome: ChromeStart; toastNotifications: ToastsStart; indexPatterns: IndexPatternsContract; diff --git a/x-pack/plugins/graph/public/components/settings/use_list_keys.test.tsx b/x-pack/plugins/graph/public/components/settings/use_list_keys.test.tsx index c80296feccdd41..aa17ef6153f920 100644 --- a/x-pack/plugins/graph/public/components/settings/use_list_keys.test.tsx +++ b/x-pack/plugins/graph/public/components/settings/use_list_keys.test.tsx @@ -8,6 +8,10 @@ import React from 'react'; import { mount, ReactWrapper } from 'enzyme'; import { useListKeys } from './use_list_keys'; +jest.mock('@elastic/eui/lib/services/accessibility/html_id_generator', () => ({ + htmlIdGenerator: () => () => `id-${Math.random()}`, +})); + describe('use_list_keys', () => { function ListingComponent({ items }: { items: object[] }) { const getListKey = useListKeys(items); diff --git a/x-pack/plugins/graph/public/plugin.ts b/x-pack/plugins/graph/public/plugin.ts index eb0089feaa072c..b1efdeacacc3e1 100644 --- a/x-pack/plugins/graph/public/plugin.ts +++ b/x-pack/plugins/graph/public/plugin.ts @@ -18,7 +18,7 @@ import { NavigationPublicPluginStart as NavigationStart } from '../../../../src/ import { DataPublicPluginStart } from '../../../../src/plugins/data/public'; import { toggleNavLink } from './services/toggle_nav_link'; -import { LicensingPluginSetup } from '../../licensing/public'; +import { LicensingPluginStart } from '../../licensing/public'; import { checkLicense } from '../common/check_license'; import { FeatureCatalogueCategory, @@ -30,12 +30,12 @@ import { ConfigSchema } from '../config'; import { SavedObjectsStart } from '../../../../src/plugins/saved_objects/public'; export interface GraphPluginSetupDependencies { - licensing: LicensingPluginSetup; home?: HomePublicPluginSetup; } export interface GraphPluginStartDependencies { navigation: NavigationStart; + licensing: LicensingPluginStart; data: DataPublicPluginStart; savedObjects: SavedObjectsStart; kibanaLegacy: KibanaLegacyStart; @@ -44,16 +44,9 @@ export interface GraphPluginStartDependencies { export class GraphPlugin implements Plugin { - private licensing: LicensingPluginSetup | null = null; - constructor(private initializerContext: PluginInitializerContext) {} - setup( - core: CoreSetup, - { licensing, home }: GraphPluginSetupDependencies - ) { - this.licensing = licensing; - + setup(core: CoreSetup, { home }: GraphPluginSetupDependencies) { if (home) { home.featureCatalogue.register({ id: 'graph', @@ -92,7 +85,7 @@ export class GraphPlugin return renderApp({ ...params, pluginInitializerContext: this.initializerContext, - licensing, + licensing: pluginsStart.licensing, core: coreStart, navigation: pluginsStart.navigation, data: pluginsStart.data, @@ -115,11 +108,8 @@ export class GraphPlugin }); } - start(core: CoreStart, { home }: GraphPluginStartDependencies) { - if (this.licensing === null) { - throw new Error('Start called before setup'); - } - this.licensing.license$.subscribe((license) => { + start(core: CoreStart, { home, licensing }: GraphPluginStartDependencies) { + licensing.license$.subscribe((license) => { const licenseInformation = checkLicense(license); toggleNavLink(licenseInformation, core.chrome.navLinks); if (home && !licenseInformation.enableAppLink) { diff --git a/x-pack/plugins/graph/server/routes/explore.ts b/x-pack/plugins/graph/server/routes/explore.ts index a1e24695413c96..762186d69d8191 100644 --- a/x-pack/plugins/graph/server/routes/explore.ts +++ b/x-pack/plugins/graph/server/routes/explore.ts @@ -4,12 +4,18 @@ * you may not use this file except in compliance with the Elastic License. */ +import { errors } from '@elastic/elasticsearch'; import { IRouter } from 'kibana/server'; import { schema } from '@kbn/config-schema'; import Boom from '@hapi/boom'; -import { get } from 'lodash'; import { LicenseState, verifyApiAccess } from '../lib/license_state'; +interface ErrorResponse { + error?: { + root_cause?: Array<{ type: string; reason: string }>; + }; +} + export function registerExploreRoute({ router, licenseState, @@ -31,11 +37,7 @@ export function registerExploreRoute({ async ( { core: { - elasticsearch: { - legacy: { - client: { callAsCurrentUser: callCluster }, - }, - }, + elasticsearch: { client: esClient }, }, }, request, @@ -46,32 +48,31 @@ export function registerExploreRoute({ try { return response.ok({ body: { - resp: await callCluster('transport.request', { - path: '/' + encodeURIComponent(request.body.index) + '/_graph/explore', - body: request.body.query, - method: 'POST', - query: {}, - }), + resp: ( + await esClient.asCurrentUser.transport.request({ + path: '/' + encodeURIComponent(request.body.index) + '/_graph/explore', + body: request.body.query, + method: 'POST', + }) + ).body, }, }); } catch (error) { - // Extract known reasons for bad choice of field - const relevantCause = get( - error, - 'body.error.root_cause', - [] as Array<{ type: string; reason: string }> - ).find((cause: { type: string; reason: string }) => { - return ( - cause.reason.includes('Fielddata is disabled on text fields') || - cause.reason.includes('No support for examining floating point') || - cause.reason.includes('Sample diversifying key must be a single valued-field') || - cause.reason.includes('Failed to parse query') || - cause.type === 'parsing_exception' - ); - }); + if (error instanceof errors.ResponseError) { + const errorBody: ErrorResponse = error.body; + const relevantCause = (errorBody.error?.root_cause ?? []).find((cause) => { + return ( + cause.reason.includes('Fielddata is disabled on text fields') || + cause.reason.includes('No support for examining floating point') || + cause.reason.includes('Sample diversifying key must be a single valued-field') || + cause.reason.includes('Failed to parse query') || + cause.type === 'parsing_exception' + ); + }); - if (relevantCause) { - throw Boom.badRequest(relevantCause.reason); + if (relevantCause) { + throw Boom.badRequest(relevantCause.reason); + } } return response.internalError({ diff --git a/x-pack/plugins/graph/server/routes/search.ts b/x-pack/plugins/graph/server/routes/search.ts index e1d430eeb311a5..7d05f9ab6888c2 100644 --- a/x-pack/plugins/graph/server/routes/search.ts +++ b/x-pack/plugins/graph/server/routes/search.ts @@ -31,11 +31,7 @@ export function registerSearchRoute({ { core: { uiSettings: { client: uiSettings }, - elasticsearch: { - legacy: { - client: { callAsCurrentUser: callCluster }, - }, - }, + elasticsearch: { client: esClient }, }, }, request, @@ -47,12 +43,14 @@ export function registerSearchRoute({ try { return response.ok({ body: { - resp: await callCluster('search', { - index: request.body.index, - body: request.body.body, - rest_total_hits_as_int: true, - ignore_throttled: !includeFrozen, - }), + resp: ( + await esClient.asCurrentUser.search({ + index: request.body.index, + body: request.body.body, + track_total_hits: true, + ignore_throttled: !includeFrozen, + }) + ).body, }, }); } catch (error) { diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap index 6106503566c2f3..b7c1044754b314 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap +++ b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap @@ -349,7 +349,6 @@ exports[`extend index management ilm summary extension should return extension w panelPaddingSize="m" >
    { return ( - + ); diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.helpers.tsx b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.helpers.tsx index 34c1f77daeff90..eaa3aae0f6506f 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.helpers.tsx +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.helpers.tsx @@ -9,12 +9,15 @@ import { act } from 'react-dom/test-utils'; import { registerTestBed, TestBedConfig } from '@kbn/test/jest'; +import { licensingMock } from '../../../../licensing/public/mocks'; + import { EditPolicy } from '../../../public/application/sections/edit_policy'; import { DataTierAllocationType } from '../../../public/application/sections/edit_policy/types'; import { Phases as PolicyPhases } from '../../../common/types'; import { KibanaContextProvider } from '../../../public/shared_imports'; +import { AppServicesContext } from '../../../public/types'; import { createBreadcrumbsMock } from '../../../public/application/services/breadcrumbs.mock'; type Phases = keyof PolicyPhases; @@ -53,10 +56,16 @@ const testBedConfig: TestBedConfig = { const breadcrumbService = createBreadcrumbsMock(); -const MyComponent = (props: any) => { +const MyComponent = ({ appServicesContext, ...rest }: any) => { return ( - - + + ); }; @@ -67,10 +76,10 @@ type SetupReturn = ReturnType; export type EditPolicyTestBed = SetupReturn extends Promise ? U : SetupReturn; -export const setup = async () => { - const testBed = await initTestBed(); +export const setup = async (arg?: { appServicesContext: Partial }) => { + const testBed = await initTestBed(arg); - const { find, component, form } = testBed; + const { find, component, form, exists } = testBed; const createFormToggleAction = (dataTestSubject: string) => async (checked: boolean) => { await act(async () => { @@ -128,12 +137,15 @@ export const setup = async () => { component.update(); }; - const toggleForceMerge = (phase: Phases) => createFormToggleAction(`${phase}-forceMergeSwitch`); - - const setForcemergeSegmentsCount = (phase: Phases) => - createFormSetValueAction(`${phase}-selectedForceMergeSegments`); - - const setBestCompression = (phase: Phases) => createFormToggleAction(`${phase}-bestCompression`); + const createForceMergeActions = (phase: Phases) => { + const toggleSelector = `${phase}-forceMergeSwitch`; + return { + forceMergeFieldExists: () => exists(toggleSelector), + toggleForceMerge: createFormToggleAction(toggleSelector), + setForcemergeSegmentsCount: createFormSetValueAction(`${phase}-selectedForceMergeSegments`), + setBestCompression: createFormToggleAction(`${phase}-bestCompression`), + }; + }; const setIndexPriority = (phase: Phases) => createFormSetValueAction(`${phase}-phaseIndexPriority`); @@ -180,7 +192,38 @@ export const setup = async () => { await createFormSetValueAction(`${phase}-selectedPrimaryShardCount`)(value); }; + const shrinkExists = () => exists('shrinkSwitch'); + const setFreeze = createFormToggleAction('freezeSwitch'); + const freezeExists = () => exists('freezeSwitch'); + + const createSearchableSnapshotActions = (phase: Phases) => { + const fieldSelector = `searchableSnapshotField-${phase}`; + const licenseCalloutSelector = `${fieldSelector}.searchableSnapshotDisabledDueToLicense`; + const rolloverCalloutSelector = `${fieldSelector}.searchableSnapshotFieldsNoRolloverCallout`; + const toggleSelector = `${fieldSelector}.searchableSnapshotToggle`; + + const toggleSearchableSnapshot = createFormToggleAction(toggleSelector); + return { + searchableSnapshotDisabledDueToRollover: () => exists(rolloverCalloutSelector), + searchableSnapshotDisabled: () => + exists(licenseCalloutSelector) && find(licenseCalloutSelector).props().disabled === true, + searchableSnapshotsExists: () => exists(fieldSelector), + findSearchableSnapshotToggle: () => find(toggleSelector), + searchableSnapshotDisabledDueToLicense: () => + exists(`${fieldSelector}.searchableSnapshotDisabledDueToLicense`), + toggleSearchableSnapshot, + setSearchableSnapshot: async (value: string) => { + await toggleSearchableSnapshot(true); + act(() => { + find(`searchableSnapshotField-${phase}.searchableSnapshotCombobox`).simulate('change', [ + { label: value }, + ]); + }); + component.update(); + }, + }; + }; return { ...testBed, @@ -192,11 +235,10 @@ export const setup = async () => { setMaxDocs, setMaxAge, toggleRollover, - toggleForceMerge: toggleForceMerge('hot'), - setForcemergeSegments: setForcemergeSegmentsCount('hot'), - setBestCompression: setBestCompression('hot'), + ...createForceMergeActions('hot'), setIndexPriority: setIndexPriority('hot'), setShrink: setShrink('hot'), + ...createSearchableSnapshotActions('hot'), }, warm: { enable: enable('warm'), @@ -207,9 +249,8 @@ export const setup = async () => { setSelectedNodeAttribute: setSelectedNodeAttribute('warm'), setReplicas: setReplicas('warm'), setShrink: setShrink('warm'), - toggleForceMerge: toggleForceMerge('warm'), - setForcemergeSegments: setForcemergeSegmentsCount('warm'), - setBestCompression: setBestCompression('warm'), + shrinkExists, + ...createForceMergeActions('warm'), setIndexPriority: setIndexPriority('warm'), }, cold: { @@ -220,7 +261,9 @@ export const setup = async () => { setSelectedNodeAttribute: setSelectedNodeAttribute('cold'), setReplicas: setReplicas('cold'), setFreeze, + freezeExists, setIndexPriority: setIndexPriority('cold'), + ...createSearchableSnapshotActions('cold'), }, delete: { enable: enable('delete'), diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.test.ts b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.test.ts index 0573b74003339b..41871e124e29df 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.test.ts +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/edit_policy/edit_policy.test.ts @@ -6,10 +6,11 @@ import { act } from 'react-dom/test-utils'; +import { licensingMock } from '../../../../licensing/public/mocks'; +import { API_BASE_PATH } from '../../../common/constants'; import { setupEnvironment } from '../helpers/setup_environment'; import { EditPolicyTestBed, setup } from './edit_policy.helpers'; -import { API_BASE_PATH } from '../../../common/constants'; import { DELETE_PHASE_POLICY, NEW_SNAPSHOT_POLICY_NAME, @@ -100,6 +101,11 @@ describe('', () => { describe('serialization', () => { beforeEach(async () => { httpRequestsMockHelpers.setLoadPolicies([getDefaultHotPhasePolicy('my_policy')]); + httpRequestsMockHelpers.setListNodes({ + nodesByRoles: {}, + nodesByAttributes: { test: ['123'] }, + isUsingDeprecatedDataRoleConfig: false, + }); httpRequestsMockHelpers.setLoadSnapshotPolicies([]); await act(async () => { @@ -117,7 +123,7 @@ describe('', () => { await actions.hot.setMaxDocs('123'); await actions.hot.setMaxAge('123', 'h'); await actions.hot.toggleForceMerge(true); - await actions.hot.setForcemergeSegments('123'); + await actions.hot.setForcemergeSegmentsCount('123'); await actions.hot.setBestCompression(true); await actions.hot.setShrink('2'); await actions.hot.setIndexPriority('123'); @@ -154,6 +160,19 @@ describe('', () => { `); }); + test('setting searchable snapshot', async () => { + const { actions } = testBed; + + await actions.hot.setSearchableSnapshot('my-repo'); + + await actions.savePolicy(); + const latestRequest = server.requests[server.requests.length - 1]; + const entirePolicy = JSON.parse(JSON.parse(latestRequest.requestBody).body); + expect(entirePolicy.phases.hot.actions.searchable_snapshot.snapshot_repository).toBe( + 'my-repo' + ); + }); + test('disabling rollover', async () => { const { actions } = testBed; await actions.hot.toggleRollover(true); @@ -171,6 +190,26 @@ describe('', () => { } `); }); + + test('enabling searchable snapshot should hide force merge, freeze and shrink in subsequent phases', async () => { + const { actions } = testBed; + + await actions.warm.enable(true); + await actions.cold.enable(true); + + expect(actions.warm.forceMergeFieldExists()).toBeTruthy(); + expect(actions.warm.shrinkExists()).toBeTruthy(); + expect(actions.cold.searchableSnapshotsExists()).toBeTruthy(); + expect(actions.cold.freezeExists()).toBeTruthy(); + + await actions.hot.setSearchableSnapshot('my-repo'); + + expect(actions.warm.forceMergeFieldExists()).toBeFalsy(); + expect(actions.warm.shrinkExists()).toBeFalsy(); + // searchable snapshot in cold is still visible + expect(actions.cold.searchableSnapshotsExists()).toBeTruthy(); + expect(actions.cold.freezeExists()).toBeFalsy(); + }); }); }); @@ -206,7 +245,6 @@ describe('', () => { "priority": 50, }, }, - "min_age": "0ms", } `); }); @@ -214,14 +252,12 @@ describe('', () => { test('setting all values', async () => { const { actions } = testBed; await actions.warm.enable(true); - await actions.warm.setMinAgeValue('123'); - await actions.warm.setMinAgeUnits('d'); await actions.warm.setDataAllocation('node_attrs'); await actions.warm.setSelectedNodeAttribute('test:123'); await actions.warm.setReplicas('123'); await actions.warm.setShrink('123'); await actions.warm.toggleForceMerge(true); - await actions.warm.setForcemergeSegments('123'); + await actions.warm.setForcemergeSegmentsCount('123'); await actions.warm.setBestCompression(true); await actions.warm.setIndexPriority('123'); await actions.savePolicy(); @@ -263,22 +299,23 @@ describe('', () => { "number_of_shards": 123, }, }, - "min_age": "123d", }, }, } `); }); - test('setting warm phase on rollover to "true"', async () => { + test('setting warm phase on rollover to "false"', async () => { const { actions } = testBed; await actions.warm.enable(true); - await actions.warm.warmPhaseOnRollover(true); + await actions.warm.warmPhaseOnRollover(false); + await actions.warm.setMinAgeValue('123'); + await actions.warm.setMinAgeUnits('d'); await actions.savePolicy(); const latestRequest = server.requests[server.requests.length - 1]; const warmPhaseMinAge = JSON.parse(JSON.parse(latestRequest.requestBody).body).phases.warm .min_age; - expect(warmPhaseMinAge).toBe(undefined); + expect(warmPhaseMinAge).toBe('123d'); }); }); @@ -363,7 +400,7 @@ describe('', () => { `); }); - test('setting all values', async () => { + test('setting all values, excluding searchable snapshot', async () => { const { actions } = testBed; await actions.cold.enable(true); @@ -414,6 +451,19 @@ describe('', () => { } `); }); + + // Setting searchable snapshot field disables setting replicas so we test this separately + test('setting searchable snapshot', async () => { + const { actions } = testBed; + await actions.cold.enable(true); + await actions.cold.setSearchableSnapshot('my-repo'); + await actions.savePolicy(); + const latestRequest2 = server.requests[server.requests.length - 1]; + const entirePolicy2 = JSON.parse(JSON.parse(latestRequest2.requestBody).body); + expect(entirePolicy2.phases.cold.actions.searchable_snapshot.snapshot_repository).toEqual( + 'my-repo' + ); + }); }); }); @@ -602,6 +652,7 @@ describe('', () => { `); }); }); + describe('node attr and none', () => { beforeEach(async () => { httpRequestsMockHelpers.setLoadPolicies([POLICY_WITH_NODE_ATTR_AND_OFF_ALLOCATION]); @@ -629,4 +680,103 @@ describe('', () => { }); }); }); + + describe('searchable snapshot', () => { + describe('on cloud', () => { + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPolicies([getDefaultHotPhasePolicy('my_policy')]); + httpRequestsMockHelpers.setListNodes({ + isUsingDeprecatedDataRoleConfig: false, + nodesByAttributes: { test: ['123'] }, + nodesByRoles: { data: ['123'] }, + }); + httpRequestsMockHelpers.setListSnapshotRepos({ repositories: ['found-snapshots'] }); + + await act(async () => { + testBed = await setup({ appServicesContext: { cloud: { isCloudEnabled: true } } }); + }); + + const { component } = testBed; + component.update(); + }); + + test('correctly sets snapshot repository default to "found-snapshots"', async () => { + const { actions } = testBed; + await actions.cold.enable(true); + await actions.cold.toggleSearchableSnapshot(true); + await actions.savePolicy(); + const latestRequest = server.requests[server.requests.length - 1]; + const request = JSON.parse(JSON.parse(latestRequest.requestBody).body); + expect(request.phases.cold.actions.searchable_snapshot.snapshot_repository).toEqual( + 'found-snapshots' + ); + }); + }); + describe('on non-enterprise license', () => { + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPolicies([getDefaultHotPhasePolicy('my_policy')]); + httpRequestsMockHelpers.setListNodes({ + isUsingDeprecatedDataRoleConfig: false, + nodesByAttributes: { test: ['123'] }, + nodesByRoles: { data: ['123'] }, + }); + httpRequestsMockHelpers.setListSnapshotRepos({ repositories: ['found-snapshots'] }); + + await act(async () => { + testBed = await setup({ + appServicesContext: { + license: licensingMock.createLicense({ license: { type: 'basic' } }), + }, + }); + }); + + const { component } = testBed; + component.update(); + }); + test('disable setting searchable snapshots', async () => { + const { actions } = testBed; + + expect(actions.cold.searchableSnapshotsExists()).toBeFalsy(); + expect(actions.hot.searchableSnapshotsExists()).toBeFalsy(); + + await actions.cold.enable(true); + + // Still hidden in hot + expect(actions.hot.searchableSnapshotsExists()).toBeFalsy(); + + expect(actions.cold.searchableSnapshotsExists()).toBeTruthy(); + expect(actions.cold.searchableSnapshotDisabledDueToLicense()).toBeTruthy(); + }); + }); + }); + describe('without rollover', () => { + beforeEach(async () => { + httpRequestsMockHelpers.setLoadPolicies([getDefaultHotPhasePolicy('my_policy')]); + httpRequestsMockHelpers.setListNodes({ + isUsingDeprecatedDataRoleConfig: false, + nodesByAttributes: { test: ['123'] }, + nodesByRoles: { data: ['123'] }, + }); + httpRequestsMockHelpers.setListSnapshotRepos({ repositories: ['found-snapshots'] }); + + await act(async () => { + testBed = await setup({ + appServicesContext: { + license: licensingMock.createLicense({ license: { type: 'basic' } }), + }, + }); + }); + + const { component } = testBed; + component.update(); + }); + test('hiding and disabling searchable snapshot field', async () => { + const { actions } = testBed; + await actions.hot.toggleRollover(false); + await actions.cold.enable(true); + + expect(actions.hot.searchableSnapshotsExists()).toBeFalsy(); + expect(actions.cold.searchableSnapshotDisabledDueToLicense()).toBeTruthy(); + }); + }); }); diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/http_requests.ts b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/http_requests.ts index c7a493ce80d96b..d9bb6702cb1662 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/http_requests.ts +++ b/x-pack/plugins/index_lifecycle_management/__jest__/client_integration/helpers/http_requests.ts @@ -6,7 +6,7 @@ import { fakeServer, SinonFakeServer } from 'sinon'; import { API_BASE_PATH } from '../../../common/constants'; -import { ListNodesRouteResponse } from '../../../common/types'; +import { ListNodesRouteResponse, ListSnapshotReposResponse } from '../../../common/types'; export const init = () => { const server = fakeServer.create(); @@ -47,9 +47,18 @@ const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { ]); }; + const setListSnapshotRepos = (body: ListSnapshotReposResponse) => { + server.respondWith('GET', `${API_BASE_PATH}/snapshot_repositories`, [ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify(body), + ]); + }; + return { setLoadPolicies, setLoadSnapshotPolicies, setListNodes, + setListSnapshotRepos, }; }; diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/components/README.md b/x-pack/plugins/index_lifecycle_management/__jest__/components/README.md new file mode 100644 index 00000000000000..ce1ea7aa396a62 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/__jest__/components/README.md @@ -0,0 +1,8 @@ +# Deprecated + +This test folder contains useful test coverage, mostly error states for form validation. However, it is +not in keeping with other ES UI maintained plugins. See ../client_integration for the established pattern +of tests. + +The tests here should be migrated to the above pattern and should not be added to. Any new test coverage must +be added to ../client_integration. diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.tsx b/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.tsx index ec428852cbda19..346176b9c29c3d 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.tsx +++ b/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.tsx @@ -172,6 +172,9 @@ const MyComponent = ({ existingPolicies, policyName, getUrlForApp, + license: { + canUseSearchableSnapshot: () => true, + }, }} > @@ -209,6 +212,7 @@ describe('edit policy', () => { getUrlForApp={jest.fn()} policyName="test" isCloudEnabled={false} + license={{ canUseSearchableSnapshot: () => true }} /> ); @@ -247,6 +251,7 @@ describe('edit policy', () => { existingPolicies={policies} getUrlForApp={jest.fn()} isCloudEnabled={false} + license={{ canUseSearchableSnapshot: () => true }} /> ); const rendered = mountWithIntl(component); @@ -283,6 +288,7 @@ describe('edit policy', () => { existingPolicies={policies} getUrlForApp={jest.fn()} isCloudEnabled={false} + license={{ canUseSearchableSnapshot: () => true }} /> ); @@ -318,7 +324,7 @@ describe('edit policy', () => { }); }); describe('hot phase', () => { - test('should show errors when trying to save with no max size and no max age', async () => { + test('should show errors when trying to save with no max size, no max age and no max docs', async () => { const rendered = mountWithIntl(component); expect(findTestSubject(rendered, 'rolloverSettingsRequired').exists()).toBeFalsy(); await setPolicyName(rendered, 'mypolicy'); @@ -332,6 +338,11 @@ describe('edit policy', () => { maxAgeInput.simulate('change', { target: { value: '' } }); }); waitForFormLibValidation(rendered); + const maxDocsInput = findTestSubject(rendered, 'hot-selectedMaxDocuments'); + await act(async () => { + maxDocsInput.simulate('change', { target: { value: '' } }); + }); + waitForFormLibValidation(rendered); await save(rendered); expect(findTestSubject(rendered, 'rolloverSettingsRequired').exists()).toBeTruthy(); }); @@ -827,6 +838,7 @@ describe('edit policy', () => { existingPolicies={policies} getUrlForApp={jest.fn()} isCloudEnabled={true} + license={{ canUseSearchableSnapshot: () => true }} /> ); ({ http } = editPolicyHelpers.setup()); diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/index.ts b/x-pack/plugins/index_lifecycle_management/common/constants/index.ts index 522dc6d82a4e95..7982bdb211ae73 100644 --- a/x-pack/plugins/index_lifecycle_management/common/constants/index.ts +++ b/x-pack/plugins/index_lifecycle_management/common/constants/index.ts @@ -5,18 +5,19 @@ */ import { i18n } from '@kbn/i18n'; -import { LicenseType } from '../../../licensing/common/types'; export { phaseToNodePreferenceMap } from './data_tiers'; -const basicLicense: LicenseType = 'basic'; +import { MIN_PLUGIN_LICENSE, MIN_SEARCHABLE_SNAPSHOT_LICENSE } from './license'; export const PLUGIN = { ID: 'index_lifecycle_management', - minimumLicenseType: basicLicense, + minimumLicenseType: MIN_PLUGIN_LICENSE, TITLE: i18n.translate('xpack.indexLifecycleMgmt.appTitle', { defaultMessage: 'Index Lifecycle Policies', }), }; export const API_BASE_PATH = '/api/index_lifecycle_management'; + +export { MIN_SEARCHABLE_SNAPSHOT_LICENSE, MIN_PLUGIN_LICENSE }; diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/license.ts b/x-pack/plugins/index_lifecycle_management/common/constants/license.ts new file mode 100644 index 00000000000000..ccb0a2a59a3150 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/common/constants/license.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { LicenseType } from '../../../licensing/common/types'; + +export const MIN_PLUGIN_LICENSE: LicenseType = 'basic'; + +export const MIN_SEARCHABLE_SNAPSHOT_LICENSE: LicenseType = 'enterprise'; diff --git a/x-pack/plugins/index_lifecycle_management/common/types/api.ts b/x-pack/plugins/index_lifecycle_management/common/types/api.ts index b7ca16ac46ddef..c0355daf3c62ae 100644 --- a/x-pack/plugins/index_lifecycle_management/common/types/api.ts +++ b/x-pack/plugins/index_lifecycle_management/common/types/api.ts @@ -18,3 +18,10 @@ export interface ListNodesRouteResponse { */ isUsingDeprecatedDataRoleConfig: boolean; } + +export interface ListSnapshotReposResponse { + /** + * An array of repository names + */ + repositories: string[]; +} diff --git a/x-pack/plugins/index_lifecycle_management/common/types/policies.ts b/x-pack/plugins/index_lifecycle_management/common/types/policies.ts index 0c68bda1faeb7c..1c28262a54305a 100644 --- a/x-pack/plugins/index_lifecycle_management/common/types/policies.ts +++ b/x-pack/plugins/index_lifecycle_management/common/types/policies.ts @@ -48,6 +48,15 @@ export interface SerializedActionWithAllocation { migrate?: MigrateAction; } +export interface SearchableSnapshotAction { + snapshot_repository: string; + /** + * We do not configure this value in the UI as it is an advanced setting that will + * not suit the vast majority of cases. + */ + force_merge_index?: boolean; +} + export interface SerializedHotPhase extends SerializedPhase { actions: { rollover?: { @@ -60,6 +69,10 @@ export interface SerializedHotPhase extends SerializedPhase { set_priority?: { priority: number | null; }; + /** + * Only available on enterprise license + */ + searchable_snapshot?: SearchableSnapshotAction; }; } @@ -83,6 +96,10 @@ export interface SerializedColdPhase extends SerializedPhase { priority: number | null; }; migrate?: MigrateAction; + /** + * Only available on enterprise license + */ + searchable_snapshot?: SearchableSnapshotAction; }; } @@ -92,7 +109,7 @@ export interface SerializedDeletePhase extends SerializedPhase { policy: string; }; delete?: { - delete_searchable_snapshot: boolean; + delete_searchable_snapshot?: boolean; }; }; } diff --git a/x-pack/plugins/index_lifecycle_management/jest.config.js b/x-pack/plugins/index_lifecycle_management/jest.config.js new file mode 100644 index 00000000000000..906f4ff3960ae0 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/index_lifecycle_management'], +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx index bb1a4810ba2d20..e44854985c0561 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/index.tsx @@ -9,6 +9,7 @@ import { render, unmountComponentAtNode } from 'react-dom'; import { I18nStart, ScopedHistory, ApplicationStart } from 'kibana/public'; import { UnmountCallback } from 'src/core/public'; import { CloudSetup } from '../../../cloud/public'; +import { ILicense } from '../../../licensing/public'; import { KibanaContextProvider } from '../shared_imports'; @@ -23,11 +24,12 @@ export const renderApp = ( navigateToApp: ApplicationStart['navigateToApp'], getUrlForApp: ApplicationStart['getUrlForApp'], breadcrumbService: BreadcrumbService, + license: ILicense, cloud?: CloudSetup ): UnmountCallback => { render( - + = ({ - children, - switchProps, - ...restDescribedFormProps -}) => { - return ( - - {children} - - ); -}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx new file mode 100644 index 00000000000000..98c63437659fd2 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent, useState } from 'react'; +import { + EuiDescribedFormGroup, + EuiDescribedFormGroupProps, + EuiSwitchProps, + EuiSwitch, + EuiSpacer, +} from '@elastic/eui'; + +export interface SwitchProps + extends Omit { + /** + * use initialValue to specify an uncontrolled component + */ + initialValue?: boolean; + + /** + * checked and onChange together specify a controlled component + */ + checked?: boolean; + onChange?: (nextValue: boolean) => void; +} + +export type Props = EuiDescribedFormGroupProps & { + children: (() => JSX.Element) | JSX.Element | JSX.Element[] | undefined; + + switchProps?: SwitchProps; + + /** + * Use this prop to pass down components that should be rendered below the toggle like + * warnings or notices. + */ + fieldNotices?: React.ReactNode; +}; + +export const DescribedFormRow: FunctionComponent = ({ + children, + switchProps, + description, + fieldNotices, + ...restDescribedFormProps +}) => { + if ( + switchProps && + !(typeof switchProps.checked === 'boolean' || typeof switchProps.initialValue === 'boolean') + ) { + throw new Error('Must specify controlled, uncontrolled component. See SwitchProps interface!'); + } + const [uncontrolledIsContentVisible, setUncontrolledIsContentVisible] = useState( + () => switchProps?.initialValue ?? false + ); + const isContentVisible = Boolean(switchProps?.checked ?? uncontrolledIsContentVisible); + + const renderToggle = () => { + if (!switchProps) { + return null; + } + const { onChange, checked, initialValue, ...restSwitchProps } = switchProps; + + return ( + { + const nextValue = e.target.checked; + setUncontrolledIsContentVisible(nextValue); + if (onChange) { + onChange(nextValue); + } + }} + /> + ); + }; + return ( + + {description} + + {renderToggle()} + {fieldNotices} + + } + > + {isContentVisible ? (typeof children === 'function' ? children() : children) : null} + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts new file mode 100644 index 00000000000000..89b77a213215e7 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { DescribedFormRow } from './described_form_row'; + +export { ToggleFieldWithDescribedFormRow } from './toggle_field_with_described_form_row'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx new file mode 100644 index 00000000000000..779dbe47914a11 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { FunctionComponent } from 'react'; + +import { UseField } from '../../../../../shared_imports'; + +import { + DescribedFormRow, + Props as DescribedFormRowProps, + SwitchProps, +} from './described_form_row'; + +type Props = Omit & { + switchProps: Omit & { path: string }; +}; + +export const ToggleFieldWithDescribedFormRow: FunctionComponent = ({ + switchProps, + ...passThroughProps +}) => ( + path={switchProps.path}> + {(field) => { + return ( + + ); + }} + +); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx new file mode 100644 index 00000000000000..de1a6875c29f43 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; +import { EuiCallOut, EuiSpacer, EuiButtonIcon } from '@elastic/eui'; + +interface Props { + title: React.ReactNode; + body: React.ReactNode; + resendRequest: () => void; + 'data-test-subj'?: string; + 'aria-label'?: string; +} + +export const FieldLoadingError: FunctionComponent = (props) => { + const { title, body, resendRequest } = props; + return ( + <> + + + {title} + + + + } + > + {body} + + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts index 326f6ff87dc3b8..fa550214db4770 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts @@ -9,6 +9,7 @@ export { ErrableFormRow } from './form_errors'; export { LearnMoreLink } from './learn_more_link'; export { OptionalLabel } from './optional_label'; export { PolicyJsonFlyout } from './policy_json_flyout'; -export { DescribedFormField } from './described_form_field'; +export { DescribedFormRow, ToggleFieldWithDescribedFormRow } from './described_form_row'; +export { FieldLoadingError } from './field_loading_error'; export * from './phases'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx index b87243bd1a9a18..5eeb336ad1108b 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx @@ -9,17 +9,28 @@ import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; import { get } from 'lodash'; -import { EuiDescribedFormGroup, EuiTextColor } from '@elastic/eui'; +import { EuiDescribedFormGroup, EuiTextColor, EuiAccordion } from '@elastic/eui'; import { Phases } from '../../../../../../../common/types'; import { useFormData, UseField, ToggleField, NumericField } from '../../../../../../shared_imports'; import { useEditPolicyContext } from '../../../edit_policy_context'; +import { useConfigurationIssues } from '../../../form'; -import { LearnMoreLink, ActiveBadge, DescribedFormField } from '../../'; +import { + LearnMoreLink, + ActiveBadge, + DescribedFormRow, + ToggleFieldWithDescribedFormRow, +} from '../../'; -import { MinAgeInputField, DataTierAllocationField, SetPriorityInput } from '../shared_fields'; +import { + MinAgeInputField, + DataTierAllocationField, + SetPriorityInputField, + SearchableSnapshotField, +} from '../shared_fields'; const i18nTexts = { dataTierAllocation: { @@ -34,16 +45,19 @@ const coldProperty: keyof Phases = 'cold'; const formFieldPaths = { enabled: '_meta.cold.enabled', + searchableSnapshot: 'phases.cold.actions.searchable_snapshot.snapshot_repository', }; export const ColdPhase: FunctionComponent = () => { const { policy } = useEditPolicyContext(); + const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues(); const [formData] = useFormData({ - watch: [formFieldPaths.enabled], + watch: [formFieldPaths.enabled, formFieldPaths.searchableSnapshot], }); const enabled = get(formData, formFieldPaths.enabled); + const showReplicasField = get(formData, formFieldPaths.searchableSnapshot) == null; return (
    @@ -91,83 +105,99 @@ export const ColdPhase: FunctionComponent = () => { {enabled && ( <> - {/* Data tier allocation section */} - - - {/* Replicas section */} - - {i18n.translate('xpack.indexLifecycleMgmt.coldPhase.replicasTitle', { - defaultMessage: 'Replicas', - })} -

    - } - description={i18n.translate( - 'xpack.indexLifecycleMgmt.coldPhase.numberOfReplicasDescription', + + + - - - {/* Freeze section */} - - - - } - description={ - - {' '} - - + { + /* Replicas section */ + showReplicasField && ( + + {i18n.translate('xpack.indexLifecycleMgmt.coldPhase.replicasTitle', { + defaultMessage: 'Replicas', + })} + + } + description={i18n.translate( + 'xpack.indexLifecycleMgmt.coldPhase.numberOfReplicasDescription', + { + defaultMessage: + 'Set the number of replicas. Remains the same as the previous phase by default.', + } + )} + switchProps={{ + 'data-test-subj': 'cold-setReplicasSwitch', + label: i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.coldPhase.numberOfReplicas.switchLabel', + { defaultMessage: 'Set replicas' } + ), + initialValue: + policy.phases.cold?.actions?.allocate?.number_of_replicas != null, + }} + fullWidth + > + + + ) } - fullWidth - titleSize="xs" - > - + + + } + description={ + + {' '} + + + } + fullWidth + titleSize="xs" + switchProps={{ 'data-test-subj': 'freezeSwitch', - }, - }} + path: '_meta.cold.freezeEnabled', + }} + > +
    + + )} + {/* Data tier allocation section */} + - - + + )} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx index 1e77e9b6e2d8c5..b98f829c21fb03 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { Fragment, FunctionComponent, useState } from 'react'; +import React, { FunctionComponent, useState } from 'react'; import { get } from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; @@ -14,43 +14,49 @@ import { EuiSpacer, EuiDescribedFormGroup, EuiCallOut, + EuiAccordion, + EuiTextColor, } from '@elastic/eui'; import { Phases } from '../../../../../../../common/types'; -import { - useFormData, - UseField, - SelectField, - ToggleField, - NumericField, -} from '../../../../../../shared_imports'; +import { useFormData, UseField, SelectField, NumericField } from '../../../../../../shared_imports'; import { i18nTexts } from '../../../i18n_texts'; import { ROLLOVER_EMPTY_VALIDATION } from '../../../form'; +import { useEditPolicyContext } from '../../../edit_policy_context'; + import { ROLLOVER_FORM_PATHS } from '../../../constants'; -import { LearnMoreLink, ActiveBadge } from '../../'; +import { LearnMoreLink, ActiveBadge, ToggleFieldWithDescribedFormRow } from '../../'; -import { Forcemerge, SetPriorityInput, useRolloverPath, ShrinkField } from '../shared_fields'; +import { + ForcemergeField, + SetPriorityInputField, + SearchableSnapshotField, + useRolloverPath, + ShrinkField, +} from '../shared_fields'; import { maxSizeStoredUnits, maxAgeUnits } from './constants'; const hotProperty: keyof Phases = 'hot'; export const HotPhase: FunctionComponent = () => { + const { license } = useEditPolicyContext(); const [formData] = useFormData({ watch: useRolloverPath, }); const isRolloverEnabled = get(formData, useRolloverPath); - const [showEmptyRolloverFieldsError, setShowEmptyRolloverFieldsError] = useState(false); return ( <>

    @@ -62,171 +68,180 @@ export const HotPhase: FunctionComponent = () => {

    } - titleSize="s" description={ - -

    - -

    -
    +

    + +

    } - fullWidth > - - key="_meta.hot.useRollover" - path="_meta.hot.useRollover" - component={ToggleField} - componentProps={{ - hasEmptyLabelSpace: true, - fullWidth: false, - helpText: ( - <> -

    - -

    +
    + + + + + {i18n.translate('xpack.indexLifecycleMgmt.hotPhase.rolloverFieldTitle', { + defaultMessage: 'Rollover', + })} + + } + description={ + +

    + {' '} } docPath="indices-rollover-index.html" /> - - - ), - euiFieldProps: { - 'data-test-subj': 'rolloverSwitch', - }, +

    +
    + } + switchProps={{ + path: '_meta.hot.useRollover', + 'data-test-subj': 'rolloverSwitch', }} - /> + fullWidth + > + {isRolloverEnabled && ( + <> + + {showEmptyRolloverFieldsError && ( + <> + +
    {i18nTexts.editPolicy.errors.rollOverConfigurationCallout.body}
    +
    + + + )} + + + + {(field) => { + const showErrorCallout = field.errors.some( + (e) => e.code === ROLLOVER_EMPTY_VALIDATION + ); + if (showErrorCallout !== showEmptyRolloverFieldsError) { + setShowEmptyRolloverFieldsError(showErrorCallout); + } + return ( + + ); + }} + + + + + + + + + + + + + + + + + + + + + + + )} +
    {isRolloverEnabled && ( <> - - {showEmptyRolloverFieldsError && ( - <> - -
    {i18nTexts.editPolicy.errors.rollOverConfigurationCallout.body}
    -
    - - - )} - - - - {(field) => { - const showErrorCallout = field.errors.some( - (e) => e.validationType === ROLLOVER_EMPTY_VALIDATION - ); - if (showErrorCallout !== showEmptyRolloverFieldsError) { - setShowEmptyRolloverFieldsError(showErrorCallout); - } - return ( - - ); - }} - - - - - - - - - - - - - - - - - - - - - + {} + {license.canUseSearchableSnapshot() && } + )} - - {isRolloverEnabled && ( - <> - - - - )} - + +
    ); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss new file mode 100644 index 00000000000000..8449d5ea53bdf4 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss @@ -0,0 +1,3 @@ +.ilmDataTierAllocationField { + max-width: $euiFormMaxWidth; +} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx index 73814537ff2764..0879b12ed0b289 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx @@ -8,7 +8,7 @@ import { get } from 'lodash'; import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiDescribedFormGroup, EuiFormRow, EuiSpacer } from '@elastic/eui'; +import { EuiDescribedFormGroup, EuiSpacer } from '@elastic/eui'; import { useKibana, useFormData } from '../../../../../../../shared_imports'; @@ -28,6 +28,8 @@ import { CloudDataTierCallout, } from './components'; +import './_data_tier_allocation.scss'; + const i18nTexts = { title: i18n.translate('xpack.indexLifecycleMgmt.common.dataTier.title', { defaultMessage: 'Data allocation', @@ -114,21 +116,19 @@ export const DataTierAllocationField: FunctionComponent = ({ phase, descr description={description} fullWidth > - - <> - - - {/* Data tier related warnings and call-to-action notices */} - {renderNotice()} - - +
    + + + {/* Data tier related warnings and call-to-action notices */} + {renderNotice()} +
    ); }} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx index b05d49be497cde..69121cc2d1252b 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx @@ -14,21 +14,21 @@ import { i18nTexts } from '../../../i18n_texts'; import { useEditPolicyContext } from '../../../edit_policy_context'; -import { LearnMoreLink, DescribedFormField } from '../../'; +import { LearnMoreLink, DescribedFormRow } from '../../'; interface Props { phase: 'hot' | 'warm'; } -export const Forcemerge: React.FunctionComponent = ({ phase }) => { +export const ForcemergeField: React.FunctionComponent = ({ phase }) => { const { policy } = useEditPolicyContext(); const initialToggleValue = useMemo(() => { - return Boolean(policy.phases[phase]?.actions?.forcemerge); + return policy.phases[phase]?.actions?.forcemerge != null; }, [policy, phase]); return ( - = ({ phase }) => { }} />
    - + ); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts index a88f258521c2b2..503cd65da655b1 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts @@ -8,12 +8,14 @@ export { useRolloverPath } from '../../../constants'; export { DataTierAllocationField } from './data_tier_allocation_field'; -export { Forcemerge } from './forcemerge_field'; +export { ForcemergeField } from './forcemerge_field'; -export { SetPriorityInput } from './set_priority_input'; +export { SetPriorityInputField } from './set_priority_input_field'; export { MinAgeInputField } from './min_age_input_field'; export { SnapshotPoliciesField } from './snapshot_policies_field'; export { ShrinkField } from './shrink_field'; + +export { SearchableSnapshotField } from './searchable_snapshot_field'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss new file mode 100644 index 00000000000000..04fec443a5290c --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss @@ -0,0 +1,3 @@ +.ilmSearchableSnapshotField { + max-width: $euiFormMaxWidth; +} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts new file mode 100644 index 00000000000000..2e8878004f544a --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { SearchableSnapshotField } from './searchable_snapshot_field'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx new file mode 100644 index 00000000000000..c940dc88b16c01 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { useLoadSnapshotRepositories } from '../../../../../../services/api'; + +interface Props { + children: (arg: ReturnType) => JSX.Element; +} + +export const SearchableSnapshotDataProvider = ({ children }: Props) => { + return children(useLoadSnapshotRepositories()); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx new file mode 100644 index 00000000000000..2a55cee0794c57 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx @@ -0,0 +1,358 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { get } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import React, { FunctionComponent, useState, useEffect } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { + EuiComboBoxOptionOption, + EuiTextColor, + EuiSpacer, + EuiCallOut, + EuiLink, +} from '@elastic/eui'; + +import { + UseField, + ComboBoxField, + useKibana, + fieldValidators, + useFormData, +} from '../../../../../../../shared_imports'; + +import { useEditPolicyContext } from '../../../../edit_policy_context'; +import { useConfigurationIssues } from '../../../../form'; + +import { i18nTexts } from '../../../../i18n_texts'; + +import { useRolloverPath } from '../../../../constants'; + +import { FieldLoadingError, DescribedFormRow, LearnMoreLink } from '../../../'; + +import { SearchableSnapshotDataProvider } from './searchable_snapshot_data_provider'; + +import './_searchable_snapshot_field.scss'; + +const { emptyField } = fieldValidators; + +export interface Props { + phase: 'hot' | 'cold'; +} + +/** + * This repository is provisioned by Elastic Cloud and will always + * exist as a "managed" repository. + */ +const CLOUD_DEFAULT_REPO = 'found-snapshots'; + +export const SearchableSnapshotField: FunctionComponent = ({ phase }) => { + const { + services: { cloud }, + } = useKibana(); + const { getUrlForApp, policy, license } = useEditPolicyContext(); + const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues(); + + const searchableSnapshotPath = `phases.${phase}.actions.searchable_snapshot.snapshot_repository`; + + const [formData] = useFormData({ watch: [searchableSnapshotPath, useRolloverPath] }); + const isRolloverEnabled = get(formData, useRolloverPath); + const searchableSnapshotRepo = get(formData, searchableSnapshotPath); + + const isDisabledDueToLicense = !license.canUseSearchableSnapshot(); + const isDisabledInColdDueToHotPhase = phase === 'cold' && isUsingSearchableSnapshotInHotPhase; + const isDisabledInColdDueToRollover = phase === 'cold' && !isRolloverEnabled; + + const isDisabled = + isDisabledDueToLicense || isDisabledInColdDueToHotPhase || isDisabledInColdDueToRollover; + + const [isFieldToggleChecked, setIsFieldToggleChecked] = useState(() => + Boolean(policy.phases[phase]?.actions?.searchable_snapshot?.snapshot_repository) + ); + + useEffect(() => { + if (isDisabled) { + setIsFieldToggleChecked(false); + } + }, [isDisabled]); + + const renderField = () => ( + + {({ error, isLoading, resendRequest, data }) => { + const repos = data?.repositories ?? []; + + let calloutContent: React.ReactNode | undefined; + + if (!isLoading) { + if (error) { + calloutContent = ( + + } + body={ + + } + /> + ); + } else if (repos.length === 0) { + calloutContent = ( + + + {i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.createSearchableSnapshotLink', + { + defaultMessage: 'Create a snapshot repository', + } + )} + + ), + }} + /> + + ); + } else if (searchableSnapshotRepo && !repos.includes(searchableSnapshotRepo)) { + calloutContent = ( + + + {i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.createSnapshotRepositoryLink', + { + defaultMessage: 'create a new snapshot repository', + } + )} + + ), + }} + /> + + ); + } + } + + return ( +
    + + config={{ + defaultValue: cloud?.isCloudEnabled ? CLOUD_DEFAULT_REPO : undefined, + label: i18nTexts.editPolicy.searchableSnapshotsFieldLabel, + validations: [ + { + validator: emptyField( + i18nTexts.editPolicy.errors.searchableSnapshotRepoRequired + ), + }, + ], + }} + path={searchableSnapshotPath} + > + {(field) => { + const singleSelectionArray: [selectedSnapshot?: string] = field.value + ? [field.value] + : []; + + return ( + ({ label: repo, value: repo })), + singleSelection: { asPlainText: true }, + isLoading, + noSuggestions: !!(error || repos.length === 0), + onCreateOption: (newOption: string) => { + field.setValue(newOption); + }, + onChange: (options: EuiComboBoxOptionOption[]) => { + if (options.length > 0) { + field.setValue(options[0].label); + } else { + field.setValue(''); + } + }, + }} + /> + ); + }} + + {calloutContent && ( + <> + + {calloutContent} + + )} +
    + ); + }} +
    + ); + + const renderInfoCallout = (): JSX.Element | undefined => { + let infoCallout: JSX.Element | undefined; + + if (phase === 'hot' && isUsingSearchableSnapshotInHotPhase) { + infoCallout = ( + + ); + } else if (isDisabledDueToLicense) { + infoCallout = ( + + {i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotLicenseCalloutBody', + { + defaultMessage: 'To create a searchable snapshot an enterprise license is required.', + } + )} + + ); + } else if (isDisabledInColdDueToHotPhase) { + infoCallout = ( + + ); + } else if (isDisabledInColdDueToRollover) { + infoCallout = ( + + ); + } + + return infoCallout ? ( + <> + + {infoCallout} + + + ) : undefined; + }; + + return ( + + {i18n.translate('xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotFieldTitle', { + defaultMessage: 'Searchable snapshot', + })} + + } + description={ + <> + + , + }} + /> + + + } + fieldNotices={renderInfoCallout()} + fullWidth + > + {isDisabled ?
    : renderField} + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input.tsx deleted file mode 100644 index 700a020577a437..00000000000000 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input.tsx +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { FunctionComponent } from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { EuiTextColor, EuiDescribedFormGroup } from '@elastic/eui'; - -import { Phases } from '../../../../../../../common/types'; - -import { UseField, NumericField } from '../../../../../../shared_imports'; - -import { LearnMoreLink } from '../../'; - -interface Props { - phase: keyof Phases & string; -} - -export const SetPriorityInput: FunctionComponent = ({ phase }) => { - return ( - - - - } - description={ - - {' '} - - - } - titleSize="xs" - fullWidth - > - - - ); -}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input_field.tsx new file mode 100644 index 00000000000000..e5ec1d116ec6f5 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/set_priority_input_field.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiTextColor, EuiDescribedFormGroup } from '@elastic/eui'; + +import { Phases } from '../../../../../../../common/types'; + +import { UseField, NumericField } from '../../../../../../shared_imports'; + +import { LearnMoreLink } from '../..'; + +interface Props { + phase: keyof Phases & string; +} + +export const SetPriorityInputField: FunctionComponent = ({ phase }) => { + return ( + + + + } + description={ + + {' '} + + + } + titleSize="xs" + fullWidth + > + + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx index e9f9f331e410ab..05f12f6ba61cb8 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx @@ -9,18 +9,14 @@ import { get } from 'lodash'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; -import { - EuiButtonIcon, - EuiCallOut, - EuiComboBoxOptionOption, - EuiLink, - EuiSpacer, -} from '@elastic/eui'; +import { EuiCallOut, EuiComboBoxOptionOption, EuiLink, EuiSpacer } from '@elastic/eui'; import { UseField, ComboBoxField, useFormData } from '../../../../../../shared_imports'; import { useLoadSnapshotPolicies } from '../../../../../services/api'; import { useEditPolicyContext } from '../../../edit_policy_context'; +import { FieldLoadingError } from '../../'; + const waitForSnapshotFormField = 'phases.delete.actions.wait_for_snapshot.policy'; export const SnapshotPoliciesField: React.FunctionComponent = () => { @@ -46,40 +42,28 @@ export const SnapshotPoliciesField: React.FunctionComponent = () => { let calloutContent; if (error) { calloutContent = ( - <> - - - - - - + + )} + title={ + + } + body={ - - + } + /> ); } else if (data.length === 0) { calloutContent = ( @@ -87,7 +71,6 @@ export const SnapshotPoliciesField: React.FunctionComponent = () => { { { const { policy } = useEditPolicyContext(); + const { isUsingSearchableSnapshotInHotPhase } = useConfigurationIssues(); const [formData] = useFormData({ watch: [useRolloverPath, formFieldPaths.enabled, formFieldPaths.warmPhaseOnRollover], }); @@ -71,7 +72,7 @@ export const WarmPhase: FunctionComponent = () => { } titleSize="s" description={ - + <>

    { }, }} /> - + } fullWidth > - + <> {enabled && ( - + <> {hotPhaseRolloverEnabled && ( { )} - + )} - + {enabled && ( - - {/* Data tier allocation section */} - - - + {i18n.translate('xpack.indexLifecycleMgmt.warmPhase.replicasTitle', { @@ -149,7 +153,7 @@ export const WarmPhase: FunctionComponent = () => { 'xpack.indexLifecycleMgmt.editPolicy.warmPhase.numberOfReplicas.switchLabel', { defaultMessage: 'Set replicas' } ), - initialValue: Boolean(policy.phases.warm?.actions?.allocate?.number_of_replicas), + initialValue: policy.phases.warm?.actions?.allocate?.number_of_replicas != null, }} fullWidth > @@ -164,14 +168,18 @@ export const WarmPhase: FunctionComponent = () => { }, }} /> - - - + - + {!isUsingSearchableSnapshotInHotPhase && } - - + {!isUsingSearchableSnapshotInHotPhase && } + {/* Data tier allocation section */} + + + )}

    diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/toggleable_field.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/toggleable_field.tsx deleted file mode 100644 index d188a172d746be..00000000000000 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/toggleable_field.tsx +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React, { FunctionComponent, useState } from 'react'; -import { EuiSpacer, EuiSwitch, EuiSwitchProps } from '@elastic/eui'; - -export interface Props extends Omit { - initialValue: boolean; - onChange?: (nextValue: boolean) => void; -} - -export const ToggleableField: FunctionComponent = ({ - initialValue, - onChange, - children, - ...restProps -}) => { - const [isContentVisible, setIsContentVisible] = useState(initialValue); - - return ( - <> - { - const nextValue = e.target.checked; - setIsContentVisible(nextValue); - if (onChange) { - onChange(nextValue); - } - }} - /> - - {isContentVisible ? children : null} - - ); -}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx index 4c0cc2c8957e1e..b65e1616859855 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx @@ -9,6 +9,7 @@ import { RouteComponentProps } from 'react-router-dom'; import { EuiButton, EuiEmptyPrompt, EuiLoadingSpinner } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; +import { MIN_SEARCHABLE_SNAPSHOT_LICENSE } from '../../../../common/constants'; import { useKibana, attemptToURIDecode } from '../../../shared_imports'; import { useLoadPoliciesList } from '../../services/api'; @@ -40,7 +41,7 @@ export const EditPolicy: React.FunctionComponent { const { - services: { breadcrumbService }, + services: { breadcrumbService, license }, } = useKibana(); const { error, isLoading, data: policies, resendRequest } = useLoadPoliciesList(false); @@ -100,6 +101,9 @@ export const EditPolicy: React.FunctionComponent license.hasAtLeast(MIN_SEARCHABLE_SNAPSHOT_LICENSE), + }, }} > diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx index efa9652e05d84c..fc7bb168771574 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx @@ -30,7 +30,7 @@ import { EuiTitle, } from '@elastic/eui'; -import { useForm, Form, UseField, TextField, useFormData } from '../../../shared_imports'; +import { useForm, UseField, TextField, useFormData } from '../../../shared_imports'; import { toasts } from '../../services/notification'; @@ -45,8 +45,10 @@ import { WarmPhase, } from './components'; -import { schema, deserializer, createSerializer, createPolicyNameValidations } from './form'; +import { schema, deserializer, createSerializer, createPolicyNameValidations, Form } from './form'; + import { useEditPolicyContext } from './edit_policy_context'; + import { FormInternal } from './types'; export interface Props { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx index da5f940b1b6c8e..f7b9b1af1ee3a2 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx @@ -14,6 +14,9 @@ export interface EditPolicyContextValue { policy: SerializedPolicy; existingPolicies: PolicyFromES[]; getUrlForApp: ApplicationStart['getUrlForApp']; + license: { + canUseSearchableSnapshot: () => boolean; + }; policyName?: string; } diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx new file mode 100644 index 00000000000000..2b3411e394a905 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FunctionComponent } from 'react'; + +import { Form as LibForm, FormHook } from '../../../../../shared_imports'; + +import { ConfigurationIssuesProvider } from '../configuration_issues_context'; + +interface Props { + form: FormHook; +} + +export const Form: FunctionComponent = ({ form, children }) => ( + + {children} + +); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts new file mode 100644 index 00000000000000..15d8d4ed272e5f --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { Form } from './form'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_issues_context.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_issues_context.tsx new file mode 100644 index 00000000000000..c31eb5bdaa329a --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_issues_context.tsx @@ -0,0 +1,52 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { get } from 'lodash'; +import React, { FunctionComponent, createContext, useContext } from 'react'; +import { useFormData } from '../../../../shared_imports'; + +export interface ConfigurationIssues { + isUsingForceMergeInHotPhase: boolean; + /** + * If this value is true, phases after hot cannot set shrink, forcemerge, freeze, or + * searchable_snapshot actions. + * + * See https://github.com/elastic/elasticsearch/blob/master/docs/reference/ilm/actions/ilm-searchable-snapshot.asciidoc. + */ + isUsingSearchableSnapshotInHotPhase: boolean; +} + +const ConfigurationIssuesContext = createContext(null as any); + +const pathToHotPhaseSearchableSnapshot = + 'phases.hot.actions.searchable_snapshot.snapshot_repository'; + +const pathToHotForceMerge = 'phases.hot.actions.forcemerge.max_num_segments'; + +export const ConfigurationIssuesProvider: FunctionComponent = ({ children }) => { + const [formData] = useFormData({ + watch: [pathToHotPhaseSearchableSnapshot, pathToHotForceMerge], + }); + return ( + + {children} + + ); +}; + +export const useConfigurationIssues = () => { + const ctx = useContext(ConfigurationIssuesContext); + if (!ctx) + throw new Error('Cannot use configuration issues outside of configuration issues context'); + + return ctx; +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts index df5d6e2f80c15b..04d4fbef9939e2 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts @@ -26,7 +26,7 @@ export const deserializer = (policy: SerializedPolicy): FormInternal => { }, warm: { enabled: Boolean(warm), - warmPhaseOnRollover: Boolean(warm?.min_age === '0ms'), + warmPhaseOnRollover: warm === undefined ? true : Boolean(warm.min_age === '0ms'), bestCompression: warm?.actions?.forcemerge?.index_codec === 'best_compression', dataTierAllocationType: determineDataTierAllocationType(warm?.actions), }, diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts index b379cb3956a022..20f8423ec24fc4 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts @@ -56,11 +56,17 @@ const originalPolicy: SerializedPolicy = { shrink: { number_of_shards: 12 }, allocate: { number_of_replicas: 3, + include: { + some: 'value', + }, + exclude: { + some: 'value', + }, }, set_priority: { priority: 10, }, - migrate: { enabled: false }, + migrate: { enabled: true }, }, }, cold: { @@ -76,6 +82,10 @@ const originalPolicy: SerializedPolicy = { set_priority: { priority: 12, }, + searchable_snapshot: { + snapshot_repository: 'my repo!', + force_merge_index: false, + }, }, }, delete: { @@ -92,6 +102,16 @@ const originalPolicy: SerializedPolicy = { }, }; +const originalMinimalPolicy: SerializedPolicy = { + name: 'minimalPolicy', + phases: { + hot: { min_age: '0ms', actions: {} }, + warm: { min_age: '1d', actions: {} }, + cold: { min_age: '2d', actions: {} }, + delete: { min_age: '3d', actions: {} }, + }, +}; + describe('deserializer and serializer', () => { let policy: SerializedPolicy; let serializer: ReturnType; @@ -119,7 +139,8 @@ describe('deserializer and serializer', () => { const copyOfThisTestPolicy = cloneDeep(thisTestPolicy); - expect(serializer(deserializer(thisTestPolicy))).toEqual(thisTestPolicy); + const _formInternal = deserializer(thisTestPolicy); + expect(serializer(_formInternal)).toEqual(thisTestPolicy); // Assert that the policy we passed in is unaltered after deserialization and serialization expect(thisTestPolicy).not.toBe(copyOfThisTestPolicy); @@ -198,4 +219,75 @@ describe('deserializer and serializer', () => { expect(result.phases.warm!.min_age).toBeUndefined(); }); + + it('removes snapshot_repository when it is unset', () => { + delete formInternal.phases.hot!.actions.searchable_snapshot; + delete formInternal.phases.cold!.actions.searchable_snapshot; + + const result = serializer(formInternal); + + expect(result.phases.hot!.actions.searchable_snapshot).toBeUndefined(); + expect(result.phases.cold!.actions.searchable_snapshot).toBeUndefined(); + }); + + it('correctly serializes a minimal policy', () => { + policy = cloneDeep(originalMinimalPolicy); + const formInternalPolicy = cloneDeep(originalMinimalPolicy); + serializer = createSerializer(policy); + formInternal = deserializer(formInternalPolicy); + + // Simulate no action fields being configured in the UI. _Note_, we are not disabling these phases. + // We are not setting any action field values in them so the action object will not be present. + delete (formInternal.phases.hot as any).actions; + delete (formInternal.phases.warm as any).actions; + delete (formInternal.phases.cold as any).actions; + delete (formInternal.phases.delete as any).actions; + + expect(serializer(formInternal)).toEqual({ + name: 'minimalPolicy', + phases: { + // Age is a required value for warm, cold and delete. + hot: { min_age: '0ms', actions: {} }, + warm: { min_age: '1d', actions: {} }, + cold: { min_age: '2d', actions: {} }, + delete: { min_age: '3d', actions: { delete: {} } }, + }, + }); + }); + + it('sets all known allocate options correctly', () => { + formInternal.phases.warm!.actions.allocate!.number_of_replicas = 0; + formInternal._meta.warm.dataTierAllocationType = 'node_attrs'; + formInternal._meta.warm.allocationNodeAttribute = 'some:value'; + + expect(serializer(formInternal).phases.warm!.actions.allocate).toEqual({ + number_of_replicas: 0, + require: { + some: 'value', + }, + include: { + some: 'value', + }, + exclude: { + some: 'value', + }, + }); + }); + + it('sets allocate and migrate actions when defined together', () => { + formInternal.phases.warm!.actions.allocate!.number_of_replicas = 0; + formInternal._meta.warm.dataTierAllocationType = 'none'; + // This should not be set... + formInternal._meta.warm.allocationNodeAttribute = 'some:value'; + + const result = serializer(formInternal); + + expect(result.phases.warm!.actions.allocate).toEqual({ + number_of_replicas: 0, + }); + + expect(result.phases.warm!.actions.migrate).toEqual({ + enabled: false, + }); + }); }); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts index 82fa4788325826..66fe498cbac870 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts @@ -11,3 +11,10 @@ export { createSerializer } from './serializer'; export { schema } from './schema'; export * from './validations'; + +export { Form } from './components'; + +export { + ConfigurationIssuesProvider, + useConfigurationIssues, +} from './configuration_issues_context'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts index 7676a00d1527bd..73a868c392f32b 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts @@ -8,6 +8,9 @@ import { i18n } from '@kbn/i18n'; import { FormSchema, fieldValidators } from '../../../../shared_imports'; import { defaultSetPriority, defaultPhaseIndexPriority } from '../../../constants'; +import { ROLLOVER_FORM_PATHS } from '../constants'; + +const rolloverFormPaths = Object.values(ROLLOVER_FORM_PATHS); import { FormInternal } from '../types'; @@ -127,6 +130,7 @@ export const schema: FormSchema = { validator: ifExistsNumberGreaterThanZero, }, ], + fieldsToValidateOnChange: rolloverFormPaths, }, max_docs: { label: i18n.translate('xpack.indexLifecycleMgmt.hotPhase.maximumDocumentsLabel', { @@ -141,6 +145,7 @@ export const schema: FormSchema = { }, ], serializer: serializers.stringToNumber, + fieldsToValidateOnChange: rolloverFormPaths, }, max_size: { label: i18n.translate('xpack.indexLifecycleMgmt.hotPhase.maximumIndexSizeLabel', { @@ -154,6 +159,7 @@ export const schema: FormSchema = { validator: ifExistsNumberGreaterThanZero, }, ], + fieldsToValidateOnChange: rolloverFormPaths, }, }, forcemerge: { @@ -221,7 +227,7 @@ export const schema: FormSchema = { }), validations: [ { - validator: ifExistsNumberGreaterThanZero, + validator: ifExistsNumberNonNegative, }, ], serializer: serializers.stringToNumber, @@ -292,7 +298,7 @@ export const schema: FormSchema = { }), validations: [ { - validator: ifExistsNumberGreaterThanZero, + validator: ifExistsNumberNonNegative, }, ], serializer: serializers.stringToNumber, @@ -306,6 +312,14 @@ export const schema: FormSchema = { serializer: serializers.stringToNumber, }, }, + searchable_snapshot: { + snapshot_repository: { + label: i18nTexts.editPolicy.searchableSnapshotsFieldLabel, + validations: [ + { validator: emptyField(i18nTexts.editPolicy.errors.searchableSnapshotRepoRequired) }, + ], + }, + }, }, }, delete: { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts index d18a63d34c101e..24cfec46393fc7 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts @@ -11,18 +11,33 @@ import { SerializedActionWithAllocation } from '../../../../../../common/types'; import { DataAllocationMetaFields } from '../../types'; export const serializeMigrateAndAllocateActions = ( + /** + * Form metadata about what tier allocation strategy to use and custom node + * allocation information. + */ { dataTierAllocationType, allocationNodeAttribute }: DataAllocationMetaFields, - newActions: SerializedActionWithAllocation = {}, - originalActions: SerializedActionWithAllocation = {} + /** + * The new configuration merged with old configuration to ensure we don't lose + * any fields. + */ + mergedActions: SerializedActionWithAllocation = {}, + /** + * The actions from the policy for a given phase when it was loaded. + */ + originalActions: SerializedActionWithAllocation = {}, + /** + * The number of replicas value to set in the allocate action. + */ + numberOfReplicas?: number ): SerializedActionWithAllocation => { - const { allocate, migrate, ...otherActions } = newActions; + const { allocate, migrate, ...otherActions } = mergedActions; // First copy over all non-allocate and migrate actions. const actions: SerializedActionWithAllocation = { ...otherActions }; - // The UI only knows about include, exclude and require, so copy over all other values. + // The UI only knows about include, exclude, require and number_of_replicas so copy over all other values. if (allocate) { - const { include, exclude, require, ...otherSettings } = allocate; + const { include, exclude, require, number_of_replicas: __, ...otherSettings } = allocate; if (!isEmpty(otherSettings)) { actions.allocate = { ...otherSettings }; } @@ -69,5 +84,13 @@ export const serializeMigrateAndAllocateActions = ( break; default: } + + if (numberOfReplicas != null) { + actions.allocate = { + ...actions.allocate, + number_of_replicas: numberOfReplicas, + }; + } + return actions; }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts index 694f26abafe1d0..211c7d263e47ee 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts @@ -68,19 +68,24 @@ export const createSerializer = (originalPolicy?: SerializedPolicy) => ( if (!updatedPolicy.phases.hot!.actions?.set_priority) { delete hotPhaseActions.set_priority; } + + if (!updatedPolicy.phases.hot!.actions?.searchable_snapshot) { + delete hotPhaseActions.searchable_snapshot; + } } /** * WARM PHASE SERIALIZATION */ if (_meta.warm.enabled) { + draft.phases.warm!.actions = draft.phases.warm?.actions ?? {}; const warmPhase = draft.phases.warm!; // If warm phase on rollover is enabled, delete min age field // An index lifecycle switches to warm phase when rollover occurs, so you cannot specify a warm phase time // They are mutually exclusive if ( (!_meta.hot.useRollover || !_meta.warm.warmPhaseOnRollover) && - updatedPolicy.phases.warm!.min_age + updatedPolicy.phases.warm?.min_age ) { warmPhase.min_age = `${updatedPolicy.phases.warm!.min_age}${_meta.warm.minAgeUnit}`; } else { @@ -90,20 +95,21 @@ export const createSerializer = (originalPolicy?: SerializedPolicy) => ( warmPhase.actions = serializeMigrateAndAllocateActions( _meta.warm, warmPhase.actions, - originalPolicy?.phases.warm?.actions + originalPolicy?.phases.warm?.actions, + updatedPolicy.phases.warm?.actions?.allocate?.number_of_replicas ); - if (!updatedPolicy.phases.warm!.actions?.forcemerge) { + if (!updatedPolicy.phases.warm?.actions?.forcemerge) { delete warmPhase.actions.forcemerge; } else if (_meta.warm.bestCompression) { warmPhase.actions.forcemerge!.index_codec = 'best_compression'; } - if (!updatedPolicy.phases.warm!.actions?.set_priority) { + if (!updatedPolicy.phases.warm?.actions?.set_priority) { delete warmPhase.actions.set_priority; } - if (!updatedPolicy.phases.warm!.actions?.shrink) { + if (!updatedPolicy.phases.warm?.actions?.shrink) { delete warmPhase.actions.shrink; } } else { @@ -114,16 +120,18 @@ export const createSerializer = (originalPolicy?: SerializedPolicy) => ( * COLD PHASE SERIALIZATION */ if (_meta.cold.enabled) { + draft.phases.cold!.actions = draft.phases.cold?.actions ?? {}; const coldPhase = draft.phases.cold!; - if (updatedPolicy.phases.cold!.min_age) { + if (updatedPolicy.phases.cold?.min_age) { coldPhase.min_age = `${updatedPolicy.phases.cold!.min_age}${_meta.cold.minAgeUnit}`; } coldPhase.actions = serializeMigrateAndAllocateActions( _meta.cold, coldPhase.actions, - originalPolicy?.phases.cold?.actions + originalPolicy?.phases.cold?.actions, + updatedPolicy.phases.cold?.actions?.allocate?.number_of_replicas ); if (_meta.cold.freezeEnabled) { @@ -132,9 +140,13 @@ export const createSerializer = (originalPolicy?: SerializedPolicy) => ( delete coldPhase.actions.freeze; } - if (!updatedPolicy.phases.cold!.actions?.set_priority) { + if (!updatedPolicy.phases.cold?.actions?.set_priority) { delete coldPhase.actions.set_priority; } + + if (!updatedPolicy.phases.cold?.actions?.searchable_snapshot) { + delete coldPhase.actions.searchable_snapshot; + } } else { delete draft.phases.cold; } @@ -144,14 +156,13 @@ export const createSerializer = (originalPolicy?: SerializedPolicy) => ( */ if (_meta.delete.enabled) { const deletePhase = draft.phases.delete!; - if (updatedPolicy.phases.delete!.min_age) { + deletePhase.actions = deletePhase.actions ?? {}; + deletePhase.actions.delete = deletePhase.actions.delete ?? {}; + if (updatedPolicy.phases.delete?.min_age) { deletePhase.min_age = `${updatedPolicy.phases.delete!.min_age}${_meta.delete.minAgeUnit}`; } - if ( - !updatedPolicy.phases.delete!.actions?.wait_for_snapshot && - deletePhase.actions.wait_for_snapshot - ) { + if (!updatedPolicy.phases.delete?.actions?.wait_for_snapshot) { delete deletePhase.actions.wait_for_snapshot; } } else { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts index f2e26a552efc90..a5d7d68d219156 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts @@ -56,33 +56,31 @@ export const ROLLOVER_EMPTY_VALIDATION = 'ROLLOVER_EMPTY_VALIDATION'; * This validator checks that and updates form values by setting errors states imperatively to * indicate this error state. */ -export const rolloverThresholdsValidator: ValidationFunc = ({ form }) => { +export const rolloverThresholdsValidator: ValidationFunc = ({ form, path }) => { const fields = form.getFields(); if ( !( - fields[ROLLOVER_FORM_PATHS.maxAge].value || - fields[ROLLOVER_FORM_PATHS.maxDocs].value || - fields[ROLLOVER_FORM_PATHS.maxSize].value + fields[ROLLOVER_FORM_PATHS.maxAge]?.value || + fields[ROLLOVER_FORM_PATHS.maxDocs]?.value || + fields[ROLLOVER_FORM_PATHS.maxSize]?.value ) ) { - fields[ROLLOVER_FORM_PATHS.maxAge].setErrors([ - { - validationType: ROLLOVER_EMPTY_VALIDATION, + if (path === ROLLOVER_FORM_PATHS.maxAge) { + return { + code: ROLLOVER_EMPTY_VALIDATION, message: i18nTexts.editPolicy.errors.maximumAgeRequiredMessage, - }, - ]); - fields[ROLLOVER_FORM_PATHS.maxDocs].setErrors([ - { - validationType: ROLLOVER_EMPTY_VALIDATION, + }; + } else if (path === ROLLOVER_FORM_PATHS.maxDocs) { + return { + code: ROLLOVER_EMPTY_VALIDATION, message: i18nTexts.editPolicy.errors.maximumDocumentsRequiredMessage, - }, - ]); - fields[ROLLOVER_FORM_PATHS.maxSize].setErrors([ - { - validationType: ROLLOVER_EMPTY_VALIDATION, + }; + } else { + return { + code: ROLLOVER_EMPTY_VALIDATION, message: i18nTexts.editPolicy.errors.maximumSizeRequiredMessage, - }, - ]); + }; + } } else { fields[ROLLOVER_FORM_PATHS.maxAge].clearErrors(ROLLOVER_EMPTY_VALIDATION); fields[ROLLOVER_FORM_PATHS.maxDocs].clearErrors(ROLLOVER_EMPTY_VALIDATION); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts index a2973925cf0c13..75bd3c3e217af2 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts @@ -11,6 +11,23 @@ export const i18nTexts = { shrinkLabel: i18n.translate('xpack.indexLifecycleMgmt.shrink.indexFieldLabel', { defaultMessage: 'Shrink index', }), + searchableSnapshotInHotPhase: { + searchableSnapshotDisallowed: { + calloutTitle: i18n.translate( + 'xpack.indexLifecycleMgmt.searchableSnapshot.disallowedCalloutTitle', + { + defaultMessage: 'Searchable snapshot disabled', + } + ), + calloutBody: i18n.translate( + 'xpack.indexLifecycleMgmt.searchableSnapshot.disallowedCalloutBody', + { + defaultMessage: + 'To use searchable snapshot in this phase you must disable searchable snapshot in the hot phase.', + } + ), + }, + }, forceMergeEnabledFieldLabel: i18n.translate('xpack.indexLifecycleMgmt.forcemerge.enableLabel', { defaultMessage: 'Force merge data', }), @@ -49,6 +66,12 @@ export const i18nTexts = { defaultMessage: 'Select a node attribute', } ), + searchableSnapshotsFieldLabel: i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotFieldLabel', + { + defaultMessage: 'Searchable snapshot repository', + } + ), errors: { numberRequired: i18n.translate( 'xpack.indexLifecycleMgmt.editPolicy.errors.numberRequiredErrorMessage', @@ -137,6 +160,12 @@ export const i18nTexts = { defaultMessage: 'A policy name cannot be longer than 255 bytes.', } ), + searchableSnapshotRepoRequired: i18n.translate( + 'xpack.indexLifecycleMgmt.editPolicy.searchableSnapshotRepoRequiredError', + { + defaultMessage: 'A snapshot repository name is required.', + } + ), }, }, }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts b/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts index f63c62e1fc529d..8f1a4d733887f7 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts @@ -6,7 +6,12 @@ import { METRIC_TYPE } from '@kbn/analytics'; -import { PolicyFromES, SerializedPolicy, ListNodesRouteResponse } from '../../../common/types'; +import { + PolicyFromES, + SerializedPolicy, + ListNodesRouteResponse, + ListSnapshotReposResponse, +} from '../../../common/types'; import { UIM_POLICY_DELETE, @@ -112,3 +117,10 @@ export const useLoadSnapshotPolicies = () => { initialData: [], }); }; + +export const useLoadSnapshotRepositories = () => { + return useRequest({ + path: `snapshot_repositories`, + method: 'get', + }); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts b/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts index a94c0a8b8ef59a..bcf4b6cf1da0d2 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts @@ -11,7 +11,7 @@ */ import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; -import { UiStatsMetricType } from '@kbn/analytics'; +import { UiCounterMetricType } from '@kbn/analytics'; import { UIM_APP_NAME, @@ -25,11 +25,11 @@ import { import { Phases } from '../../../common/types'; -export let trackUiMetric = (metricType: UiStatsMetricType, eventName: string | string[]) => {}; +export let trackUiMetric = (metricType: UiCounterMetricType, eventName: string | string[]) => {}; export function init(usageCollection?: UsageCollectionSetup): void { if (usageCollection) { - trackUiMetric = usageCollection.reportUiStats.bind(usageCollection, UIM_APP_NAME); + trackUiMetric = usageCollection.reportUiCounter.bind(usageCollection, UIM_APP_NAME); } } diff --git a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx b/x-pack/plugins/index_lifecycle_management/public/plugin.tsx index deef5cfe6ef2c9..e0b4ac6d848b6a 100644 --- a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/plugin.tsx @@ -3,9 +3,9 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ - +import { first } from 'rxjs/operators'; import { i18n } from '@kbn/i18n'; -import { CoreSetup, PluginInitializerContext } from 'src/core/public'; +import { CoreSetup, PluginInitializerContext, Plugin } from 'src/core/public'; import { FeatureCatalogueCategory } from '../../../../src/plugins/home/public'; import { PLUGIN } from '../common/constants'; import { init as initHttp } from './application/services/http'; @@ -14,15 +14,16 @@ import { init as initUiMetric } from './application/services/ui_metric'; import { init as initNotification } from './application/services/notification'; import { BreadcrumbService } from './application/services/breadcrumbs'; import { addAllExtensions } from './extend_index_management'; -import { ClientConfigType, SetupDependencies } from './types'; +import { ClientConfigType, SetupDependencies, StartDependencies } from './types'; import { registerUrlGenerator } from './url_generator'; -export class IndexLifecycleManagementPlugin { +export class IndexLifecycleManagementPlugin + implements Plugin { constructor(private readonly initializerContext: PluginInitializerContext) {} private breadcrumbService = new BreadcrumbService(); - public setup(coreSetup: CoreSetup, plugins: SetupDependencies) { + public setup(coreSetup: CoreSetup, plugins: SetupDependencies) { const { ui: { enabled: isIndexLifecycleManagementUiEnabled }, } = this.initializerContext.config.get(); @@ -47,7 +48,7 @@ export class IndexLifecycleManagementPlugin { title: PLUGIN.TITLE, order: 2, mount: async ({ element, history, setBreadcrumbs }) => { - const [coreStart] = await getStartServices(); + const [coreStart, { licensing }] = await getStartServices(); const { chrome: { docTitle }, i18n: { Context: I18nContext }, @@ -55,6 +56,8 @@ export class IndexLifecycleManagementPlugin { application: { navigateToApp, getUrlForApp }, } = coreStart; + const license = await licensing.license$.pipe(first()).toPromise(); + docTitle.change(PLUGIN.TITLE); this.breadcrumbService.setup(setBreadcrumbs); @@ -72,6 +75,7 @@ export class IndexLifecycleManagementPlugin { navigateToApp, getUrlForApp, this.breadcrumbService, + license, cloud ); diff --git a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts index a5844af0bf6dd0..4cb5d952394089 100644 --- a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts +++ b/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts @@ -11,6 +11,7 @@ export { useForm, useFormData, Form, + FormHook, UseField, FieldConfig, OnFormUpdateArg, diff --git a/x-pack/plugins/index_lifecycle_management/public/types.ts b/x-pack/plugins/index_lifecycle_management/public/types.ts index 1ce43957b1444b..9107dcc9f2e9a4 100644 --- a/x-pack/plugins/index_lifecycle_management/public/types.ts +++ b/x-pack/plugins/index_lifecycle_management/public/types.ts @@ -8,18 +8,23 @@ import { HomePublicPluginSetup } from '../../../../src/plugins/home/public'; import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/public'; import { ManagementSetup } from '../../../../src/plugins/management/public'; import { IndexManagementPluginSetup } from '../../index_management/public'; -import { CloudSetup } from '../../cloud/public'; import { SharePluginSetup } from '../../../../src/plugins/share/public'; +import { CloudSetup } from '../../cloud/public'; +import { LicensingPluginStart, ILicense } from '../../licensing/public'; + import { BreadcrumbService } from './application/services/breadcrumbs'; export interface SetupDependencies { usageCollection?: UsageCollectionSetup; management: ManagementSetup; - cloud?: CloudSetup; indexManagement?: IndexManagementPluginSetup; - home?: HomePublicPluginSetup; share: SharePluginSetup; + cloud?: CloudSetup; + home?: HomePublicPluginSetup; +} +export interface StartDependencies { + licensing: LicensingPluginStart; } export interface ClientConfigType { @@ -30,5 +35,6 @@ export interface ClientConfigType { export interface AppServicesContext { breadcrumbService: BreadcrumbService; + license: ILicense; cloud?: CloudSetup; } diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts b/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts index 97bce90eddf348..8d21b1f164541b 100644 --- a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts +++ b/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts @@ -23,115 +23,20 @@ async function createPolicy(client: ElasticsearchClient, name: string, phases: a return client.ilm.putLifecycle({ policy: name, body }, options); } -const minAgeSchema = schema.maybe(schema.string()); - -const setPrioritySchema = schema.maybe( - schema.object({ - priority: schema.nullable(schema.number()), - }) -); - -const unfollowSchema = schema.maybe(schema.object({})); // Unfollow has no options - -const migrateSchema = schema.maybe(schema.object({ enabled: schema.literal(false) })); - -const allocateNodeSchema = schema.maybe(schema.recordOf(schema.string(), schema.string())); -const allocateSchema = schema.maybe( - schema.object({ - number_of_replicas: schema.maybe(schema.number()), - include: allocateNodeSchema, - exclude: allocateNodeSchema, - require: allocateNodeSchema, - }) -); - -const shrinkActionSchema = schema.object({ - number_of_shards: schema.number(), -}); - -const forcemergeSchema = schema.maybe( - schema.object({ - max_num_segments: schema.number(), - index_codec: schema.maybe(schema.literal('best_compression')), - }) -); - -const hotPhaseSchema = schema.object({ - min_age: minAgeSchema, - actions: schema.object({ - set_priority: setPrioritySchema, - unfollow: unfollowSchema, - rollover: schema.maybe( - schema.object({ - max_age: schema.maybe(schema.string()), - max_size: schema.maybe(schema.string()), - max_docs: schema.maybe(schema.number()), - }) - ), - forcemerge: forcemergeSchema, - shrink: schema.maybe(shrinkActionSchema), - }), -}); - -const warmPhaseSchema = schema.maybe( - schema.object({ - min_age: minAgeSchema, - actions: schema.object({ - migrate: migrateSchema, - set_priority: setPrioritySchema, - unfollow: unfollowSchema, - readonly: schema.maybe(schema.object({})), // Readonly has no options - allocate: allocateSchema, - shrink: schema.maybe(shrinkActionSchema), - forcemerge: forcemergeSchema, - }), - }) -); - -const coldPhaseSchema = schema.maybe( - schema.object({ - min_age: minAgeSchema, - actions: schema.object({ - migrate: migrateSchema, - set_priority: setPrioritySchema, - unfollow: unfollowSchema, - allocate: allocateSchema, - freeze: schema.maybe(schema.object({})), // Freeze has no options - searchable_snapshot: schema.maybe( - schema.object({ - snapshot_repository: schema.string(), - }) - ), - }), - }) -); - -const deletePhaseSchema = schema.maybe( - schema.object({ - min_age: minAgeSchema, - actions: schema.object({ - wait_for_snapshot: schema.maybe( - schema.object({ - policy: schema.string(), - }) - ), - delete: schema.maybe( - schema.object({ - delete_searchable_snapshot: schema.maybe(schema.boolean()), - }) - ), - }), - }) -); - -// Per https://www.elastic.co/guide/en/elasticsearch/reference/current/_actions.html +/** + * We intentionally do not deeply validate the posted policy object to avoid erroring on valid ES + * policy configuration Kibana UI does not know or should not know about. For instance, the + * `force_merge_index` setting of the `searchable_snapshot` action. + * + * We only specify a rough structure based on https://www.elastic.co/guide/en/elasticsearch/reference/current/_actions.html. + */ const bodySchema = schema.object({ name: schema.string(), phases: schema.object({ - hot: hotPhaseSchema, - warm: warmPhaseSchema, - cold: coldPhaseSchema, - delete: deletePhaseSchema, + hot: schema.any(), + warm: schema.maybe(schema.any()), + cold: schema.maybe(schema.any()), + delete: schema.maybe(schema.any()), }), }); diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts b/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts new file mode 100644 index 00000000000000..d61b30a4e0ebe9 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { registerFetchRoute } from './register_fetch_route'; +import { RouteDependencies } from '../../../types'; + +export const registerSnapshotRepositoriesRoutes = (deps: RouteDependencies) => { + registerFetchRoute(deps); +}; diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts b/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts new file mode 100644 index 00000000000000..f3097f1f39ec95 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; + +import { MIN_SEARCHABLE_SNAPSHOT_LICENSE } from '../../../../common/constants'; +import { ListSnapshotReposResponse } from '../../../../common/types'; + +import { RouteDependencies } from '../../../types'; +import { addBasePath } from '../../../services'; +import { handleEsError } from '../../../shared_imports'; + +export const registerFetchRoute = ({ router, license }: RouteDependencies) => { + router.get( + { path: addBasePath('/snapshot_repositories'), validate: false }, + async (ctx, request, response) => { + if (!license.isCurrentLicenseAtLeast(MIN_SEARCHABLE_SNAPSHOT_LICENSE)) { + return response.forbidden({ + body: i18n.translate('xpack.indexLifecycleMgmt.searchSnapshotlicenseCheckErrorMessage', { + defaultMessage: + 'Use of searchable snapshots requires at least an enterprise level license.', + }), + }); + } + + try { + const esResult = await ctx.core.elasticsearch.client.asCurrentUser.snapshot.getRepository({ + repository: '*', + }); + const repos: ListSnapshotReposResponse = { + repositories: Object.keys(esResult.body), + }; + return response.ok({ body: repos }); + } catch (e) { + // If ES responds with 404 when looking up all snapshots we return an empty array + if (e?.statusCode === 404) { + const repos: ListSnapshotReposResponse = { + repositories: [], + }; + return response.ok({ body: repos }); + } + return handleEsError({ error: e, response }); + } + } + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/index.ts b/x-pack/plugins/index_lifecycle_management/server/routes/index.ts index f7390debbe1773..6c450ea0d3c717 100644 --- a/x-pack/plugins/index_lifecycle_management/server/routes/index.ts +++ b/x-pack/plugins/index_lifecycle_management/server/routes/index.ts @@ -11,6 +11,7 @@ import { registerNodesRoutes } from './api/nodes'; import { registerPoliciesRoutes } from './api/policies'; import { registerTemplatesRoutes } from './api/templates'; import { registerSnapshotPoliciesRoutes } from './api/snapshot_policies'; +import { registerSnapshotRepositoriesRoutes } from './api/snapshot_repositories'; export function registerApiRoutes(dependencies: RouteDependencies) { registerIndexRoutes(dependencies); @@ -18,4 +19,5 @@ export function registerApiRoutes(dependencies: RouteDependencies) { registerPoliciesRoutes(dependencies); registerTemplatesRoutes(dependencies); registerSnapshotPoliciesRoutes(dependencies); + registerSnapshotRepositoriesRoutes(dependencies); } diff --git a/x-pack/plugins/index_lifecycle_management/server/services/license.ts b/x-pack/plugins/index_lifecycle_management/server/services/license.ts index 2d863e283d4407..e7e05f480a21fb 100644 --- a/x-pack/plugins/index_lifecycle_management/server/services/license.ts +++ b/x-pack/plugins/index_lifecycle_management/server/services/license.ts @@ -12,7 +12,7 @@ import { } from 'kibana/server'; import { LicensingPluginSetup } from '../../../licensing/server'; -import { LicenseType } from '../../../licensing/common/types'; +import { LicenseType, ILicense } from '../shared_imports'; export interface LicenseStatus { isValid: boolean; @@ -26,6 +26,7 @@ interface SetupSettings { } export class License { + private currentLicense: ILicense | undefined; private licenseStatus: LicenseStatus = { isValid: false, message: 'Invalid License', @@ -36,6 +37,7 @@ export class License { { licensing, logger }: { licensing: LicensingPluginSetup; logger: Logger } ) { licensing.license$.subscribe((license) => { + this.currentLicense = license; const { state, message } = license.check(pluginId, minimumLicenseType); const hasRequiredLicense = state === 'valid'; @@ -76,6 +78,13 @@ export class License { }; } + isCurrentLicenseAtLeast(type: LicenseType): boolean { + if (!this.currentLicense) { + return false; + } + return this.currentLicense.hasAtLeast(type); + } + getStatus() { return this.licenseStatus; } diff --git a/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts b/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts index 068cddcee4c86a..18740d91a179ce 100644 --- a/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts +++ b/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts @@ -5,3 +5,4 @@ */ export { handleEsError } from '../../../../src/plugins/es_ui_shared/server'; +export { ILicense, LicenseType } from '../../licensing/common/types'; diff --git a/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx index e221c3d421e023..87e16b0d7bfe01 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx +++ b/x-pack/plugins/index_management/__jest__/client_integration/helpers/setup_environment.tsx @@ -39,7 +39,7 @@ export const services = { uiMetricService: new UiMetricService('index_management'), }; -services.uiMetricService.setup({ reportUiStats() {} } as any); +services.uiMetricService.setup({ reportUiCounter() {} } as any); setExtensionsService(services.extensionsService); setUiMetricService(services.uiMetricService); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts b/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts index 04843cae6a57e8..e8105ac2937c02 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/helpers/test_subjects.ts @@ -13,6 +13,8 @@ export type TestSubjects = | 'createTemplateButton' | 'dataStreamsEmptyPromptTemplateLink' | 'dataStreamTable' + | 'deleteDataStreamsButton' + | 'deleteDataStreamButton' | 'deleteSystemTemplateCallOut' | 'deleteTemplateButton' | 'deleteTemplatesConfirmation' diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts index 4e0486e55720db..9c92af30097a21 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.helpers.ts @@ -24,6 +24,7 @@ export interface DataStreamsTabTestBed extends TestBed { clickNameAt: (index: number) => void; clickIndicesAt: (index: number) => void; clickDeleteActionAt: (index: number) => void; + selectDataStream: (name: string, selected: boolean) => void; clickConfirmDelete: () => void; clickDeleteDataStreamButton: () => void; clickDetailPanelIndexTemplateLink: () => void; @@ -125,6 +126,13 @@ export const setup = async (overridingDependencies: any = {}): Promise { + const { + form: { selectCheckBox }, + } = testBed; + selectCheckBox(`checkboxSelectRow-${name}`, selected); + }; + const findDeleteConfirmationModal = () => { const { find } = testBed; return find('deleteDataStreamsConfirmation'); @@ -194,6 +202,7 @@ export const setup = async (overridingDependencies: any = {}): Promise): DataSt indexTemplateName: 'indexTemplate', storageSize: '1b', maxTimeStamp: 420, + privileges: { + delete_index: true, + }, ...dataStream, }); diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts index 8ce307c103f4c3..91502621d50c5e 100644 --- a/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts +++ b/x-pack/plugins/index_management/__jest__/client_integration/home/data_streams_tab.test.ts @@ -449,4 +449,77 @@ describe('Data Streams tab', () => { expect(tableCellsValues).toEqual([['', 'non-managed-data-stream', 'green', '1', 'Delete']]); }); }); + + describe('data stream privileges', () => { + describe('delete', () => { + const { setLoadDataStreamsResponse, setLoadDataStreamResponse } = httpRequestsMockHelpers; + + const dataStreamWithDelete = createDataStreamPayload({ + name: 'dataStreamWithDelete', + privileges: { delete_index: true }, + }); + const dataStreamNoDelete = createDataStreamPayload({ + name: 'dataStreamNoDelete', + privileges: { delete_index: false }, + }); + + beforeEach(async () => { + setLoadDataStreamsResponse([dataStreamWithDelete, dataStreamNoDelete]); + + testBed = await setup({ history: createMemoryHistory() }); + await act(async () => { + testBed.actions.goToDataStreamsList(); + }); + testBed.component.update(); + }); + + test('displays/hides delete button depending on data streams privileges', async () => { + const { table } = testBed; + const { tableCellsValues } = table.getMetaData('dataStreamTable'); + + expect(tableCellsValues).toEqual([ + ['', 'dataStreamNoDelete', 'green', '1', ''], + ['', 'dataStreamWithDelete', 'green', '1', 'Delete'], + ]); + }); + + test('displays/hides delete action depending on data streams privileges', async () => { + const { + actions: { selectDataStream }, + find, + } = testBed; + + selectDataStream('dataStreamNoDelete', true); + expect(find('deleteDataStreamsButton').exists()).toBeFalsy(); + + selectDataStream('dataStreamWithDelete', true); + expect(find('deleteDataStreamsButton').exists()).toBeFalsy(); + + selectDataStream('dataStreamNoDelete', false); + expect(find('deleteDataStreamsButton').exists()).toBeTruthy(); + }); + + test('displays delete button in detail panel', async () => { + const { + actions: { clickNameAt }, + find, + } = testBed; + setLoadDataStreamResponse(dataStreamWithDelete); + await clickNameAt(1); + + expect(find('deleteDataStreamButton').exists()).toBeTruthy(); + }); + + test('hides delete button in detail panel', async () => { + const { + actions: { clickNameAt }, + find, + } = testBed; + setLoadDataStreamResponse(dataStreamNoDelete); + await clickNameAt(0); + + expect(find('deleteDataStreamButton').exists()).toBeFalsy(); + }); + }); + }); }); diff --git a/x-pack/plugins/index_management/__jest__/components/index_table.test.js b/x-pack/plugins/index_management/__jest__/components/index_table.test.js index 67623b18930c86..b2526d6b4db5e1 100644 --- a/x-pack/plugins/index_management/__jest__/components/index_table.test.js +++ b/x-pack/plugins/index_management/__jest__/components/index_table.test.js @@ -119,7 +119,7 @@ describe('index table', () => { extensionsService: new ExtensionsService(), uiMetricService: new UiMetricService('index_management'), }; - services.uiMetricService.setup({ reportUiStats() {} }); + services.uiMetricService.setup({ reportUiCounter() {} }); setExtensionsService(services.extensionsService); setUiMetricService(services.uiMetricService); diff --git a/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts b/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts index 2d8e038d2a60f5..fe7db99c98db1f 100644 --- a/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts +++ b/x-pack/plugins/index_management/common/lib/data_stream_serialization.ts @@ -18,6 +18,7 @@ export function deserializeDataStream(dataStreamFromEs: DataStreamFromEs): DataS store_size: storageSize, maximum_timestamp: maxTimeStamp, _meta, + privileges, } = dataStreamFromEs; return { @@ -37,6 +38,7 @@ export function deserializeDataStream(dataStreamFromEs: DataStreamFromEs): DataS storageSize, maxTimeStamp, _meta, + privileges, }; } diff --git a/x-pack/plugins/index_management/common/types/data_streams.ts b/x-pack/plugins/index_management/common/types/data_streams.ts index adb7104043fbbd..fdfe6278eb9859 100644 --- a/x-pack/plugins/index_management/common/types/data_streams.ts +++ b/x-pack/plugins/index_management/common/types/data_streams.ts @@ -10,13 +10,19 @@ interface TimestampFieldFromEs { type TimestampField = TimestampFieldFromEs; -interface MetaFieldFromEs { +interface MetaFromEs { managed_by: string; package: any; managed: boolean; } -type MetaField = MetaFieldFromEs; +type Meta = MetaFromEs; + +interface PrivilegesFromEs { + delete_index: boolean; +} + +type Privileges = PrivilegesFromEs; export type HealthFromEs = 'GREEN' | 'YELLOW' | 'RED'; @@ -25,12 +31,13 @@ export interface DataStreamFromEs { timestamp_field: TimestampFieldFromEs; indices: DataStreamIndexFromEs[]; generation: number; - _meta?: MetaFieldFromEs; + _meta?: MetaFromEs; status: HealthFromEs; template: string; ilm_policy?: string; store_size?: string; maximum_timestamp?: number; + privileges: PrivilegesFromEs; } export interface DataStreamIndexFromEs { @@ -50,7 +57,8 @@ export interface DataStream { ilmPolicyName?: string; storageSize?: string; maxTimeStamp?: number; - _meta?: MetaField; + _meta?: Meta; + privileges: Privileges; } export interface DataStreamIndex { diff --git a/x-pack/plugins/index_management/jest.config.js b/x-pack/plugins/index_management/jest.config.js new file mode 100644 index 00000000000000..d389a91675210c --- /dev/null +++ b/x-pack/plugins/index_management/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/index_management'], +}; diff --git a/x-pack/plugins/index_management/public/application/app.tsx b/x-pack/plugins/index_management/public/application/app.tsx index 8d78995a94e2f5..e2bdc1b9d7d087 100644 --- a/x-pack/plugins/index_management/public/application/app.tsx +++ b/x-pack/plugins/index_management/public/application/app.tsx @@ -6,6 +6,7 @@ import React, { useEffect } from 'react'; +import { METRIC_TYPE } from '@kbn/analytics'; import { Router, Switch, Route, Redirect } from 'react-router-dom'; import { ScopedHistory } from 'kibana/public'; @@ -14,7 +15,6 @@ import { IndexManagementHome, homeSections } from './sections/home'; import { TemplateCreate } from './sections/template_create'; import { TemplateClone } from './sections/template_clone'; import { TemplateEdit } from './sections/template_edit'; - import { useServices } from './app_context'; import { ComponentTemplateCreate, @@ -24,7 +24,7 @@ import { export const App = ({ history }: { history: ScopedHistory }) => { const { uiMetricService } = useServices(); - useEffect(() => uiMetricService.trackMetric('loaded', UIM_APP_LOAD), [uiMetricService]); + useEffect(() => uiMetricService.trackMetric(METRIC_TYPE.LOADED, UIM_APP_LOAD), [uiMetricService]); return ( diff --git a/x-pack/plugins/index_management/public/application/app_context.tsx b/x-pack/plugins/index_management/public/application/app_context.tsx index c9337767365fa2..91bcfe5ed55c04 100644 --- a/x-pack/plugins/index_management/public/application/app_context.tsx +++ b/x-pack/plugins/index_management/public/application/app_context.tsx @@ -11,7 +11,6 @@ import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import { CoreSetup, CoreStart } from '../../../../../src/core/public'; import { FleetSetup } from '../../../fleet/public'; -import { IndexMgmtMetricsType } from '../types'; import { UiMetricService, NotificationService, HttpService } from './services'; import { ExtensionsService } from '../services'; import { SharePluginStart } from '../../../../../src/plugins/share/public'; @@ -28,7 +27,7 @@ export interface AppDependencies { fleet?: FleetSetup; }; services: { - uiMetricService: UiMetricService; + uiMetricService: UiMetricService; extensionsService: ExtensionsService; httpService: HttpService; notificationService: NotificationService; @@ -37,6 +36,7 @@ export interface AppDependencies { setBreadcrumbs: ManagementAppMountParams['setBreadcrumbs']; uiSettings: CoreSetup['uiSettings']; urlGenerators: SharePluginStart['urlGenerators']; + docLinks: CoreStart['docLinks']; } export const AppContextProvider = ({ diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx index 114cafe9defde6..5f1f5230a3ef7d 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/component_template_edit.test.tsx @@ -81,7 +81,8 @@ describe('', () => { expect(nameInput.props().disabled).toEqual(true); }); - describe('form payload', () => { + // FLAKY: https://github.com/elastic/kibana/issues/84906 + describe.skip('form payload', () => { it('should send the correct payload with changed values', async () => { const { actions, component, form } = testBed; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/index.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/index.ts index 4e03adcbcbb441..10b5805a7ad2fa 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/index.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/index.ts @@ -9,7 +9,7 @@ import { setup as componentTemplateDetailsSetup } from './component_template_det export { nextTick, getRandomString, findTestSubject } from '@kbn/test/jest'; -export { setupEnvironment, appDependencies } from './setup_environment'; +export { setupEnvironment, componentTemplatesDependencies } from './setup_environment'; export const pageHelpers = { componentTemplateList: { setup: componentTemplatesListSetup }, diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/setup_environment.tsx index ac748e1b7dc2c9..38832e6beb5f5a 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/setup_environment.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/client_integration/helpers/setup_environment.tsx @@ -15,6 +15,7 @@ import { } from '../../../../../../../../../../src/core/public/mocks'; import { GlobalFlyout } from '../../../../../../../../../../src/plugins/es_ui_shared/public'; +import { AppContextProvider } from '../../../../../app_context'; import { MappingsEditorProvider } from '../../../../mappings_editor'; import { ComponentTemplatesProvider } from '../../../component_templates_context'; @@ -24,7 +25,12 @@ import { API_BASE_PATH } from './constants'; const mockHttpClient = axios.create({ adapter: axiosXhrAdapter }); const { GlobalFlyoutProvider } = GlobalFlyout; -export const appDependencies = { +// We provide the minimum deps required to make the tests pass +const appDependencies = { + docLinks: {} as any, +} as any; + +export const componentTemplatesDependencies = { httpClient: (mockHttpClient as unknown) as HttpSetup, apiBasePath: API_BASE_PATH, trackMetric: () => {}, @@ -44,11 +50,14 @@ export const setupEnvironment = () => { }; export const WithAppDependencies = (Comp: any) => (props: any) => ( - - - - - - - + + + + + + + + + / + ); diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/index.ts b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/index.ts index ebd2cd93925688..a0cafbb6d42172 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/index.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/__jest__/index.ts @@ -4,4 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { appDependencies as componentTemplatesMockDependencies } from './client_integration/helpers'; +export { componentTemplatesDependencies as componentTemplatesMockDependencies } from './client_integration/helpers'; diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx index e8424ae46c6d25..2a78dc36fcc88c 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/component_template_list.tsx @@ -7,6 +7,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; +import { METRIC_TYPE } from '@kbn/analytics'; import { FormattedMessage } from '@kbn/i18n/react'; import { ScopedHistory } from 'kibana/public'; import { EuiLink, EuiText, EuiSpacer } from '@elastic/eui'; @@ -72,7 +73,7 @@ export const ComponentTemplateList: React.FunctionComponent = ({ // Track component loaded useEffect(() => { - trackMetric('loaded', UIM_COMPONENT_TEMPLATE_LIST_LOAD); + trackMetric(METRIC_TYPE.LOADED, UIM_COMPONENT_TEMPLATE_LIST_LOAD); }, [trackMetric]); useEffect(() => { diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/table.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/table.tsx index fc86609f1217d0..fab6d221163f95 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/table.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_list/table.tsx @@ -5,6 +5,7 @@ */ import React, { FunctionComponent, useState } from 'react'; import { i18n } from '@kbn/i18n'; +import { METRIC_TYPE } from '@kbn/analytics'; import { FormattedMessage } from '@kbn/i18n/react'; import { EuiInMemoryTable, @@ -160,7 +161,7 @@ export const ComponentTable: FunctionComponent = ({ { pathname: encodeURI(`/component_templates/${encodeURIComponent(name)}`), }, - () => trackMetric('click', UIM_COMPONENT_TEMPLATE_DETAILS) + () => trackMetric(METRIC_TYPE.CLICK, UIM_COMPONENT_TEMPLATE_DETAILS) )} data-test-subj="templateDetailsLink" > diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx index 7be0618481a694..2d1de5a06c88bc 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_templates_context.tsx @@ -5,8 +5,9 @@ */ import React, { createContext, useContext } from 'react'; -import { HttpSetup, DocLinksStart, NotificationsSetup, CoreStart } from 'src/core/public'; +import { UiCounterMetricType } from '@kbn/analytics'; +import { HttpSetup, DocLinksStart, NotificationsSetup, CoreStart } from 'src/core/public'; import { ManagementAppMountParams } from 'src/plugins/management/public'; import { getApi, getUseRequest, getSendRequest, getDocumentation, getBreadcrumbs } from './lib'; @@ -15,7 +16,7 @@ const ComponentTemplatesContext = createContext(undefined); interface Props { httpClient: HttpSetup; apiBasePath: string; - trackMetric: (type: 'loaded' | 'click' | 'count', eventName: string) => void; + trackMetric: (type: UiCounterMetricType, eventName: string) => void; docLinks: DocLinksStart; toasts: NotificationsSetup['toasts']; setBreadcrumbs: ManagementAppMountParams['setBreadcrumbs']; @@ -28,7 +29,7 @@ interface Context { api: ReturnType; documentation: ReturnType; breadcrumbs: ReturnType; - trackMetric: (type: 'loaded' | 'click' | 'count', eventName: string) => void; + trackMetric: (type: UiCounterMetricType, eventName: string) => void; toasts: NotificationsSetup['toasts']; getUrlForApp: CoreStart['application']['getUrlForApp']; } diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts b/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts index 87f6767f14d5c3..58da4c89e64948 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts +++ b/x-pack/plugins/index_management/public/application/components/component_templates/lib/api.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { METRIC_TYPE, UiCounterMetricType } from '@kbn/analytics'; import { ComponentTemplateListItem, ComponentTemplateDeserialized, @@ -17,12 +18,11 @@ import { UIM_COMPONENT_TEMPLATE_UPDATE, } from '../constants'; import { UseRequestHook, SendRequestHook } from './request'; - export const getApi = ( useRequest: UseRequestHook, sendRequest: SendRequestHook, apiBasePath: string, - trackMetric: (type: 'loaded' | 'click' | 'count', eventName: string) => void + trackMetric: (type: UiCounterMetricType, eventName: string) => void ) => { function useLoadComponentTemplates() { return useRequest({ @@ -40,7 +40,7 @@ export const getApi = ( }); trackMetric( - 'count', + METRIC_TYPE.COUNT, names.length > 1 ? UIM_COMPONENT_TEMPLATE_DELETE_MANY : UIM_COMPONENT_TEMPLATE_DELETE ); @@ -61,7 +61,7 @@ export const getApi = ( body: JSON.stringify(componentTemplate), }); - trackMetric('count', UIM_COMPONENT_TEMPLATE_CREATE); + trackMetric(METRIC_TYPE.COUNT, UIM_COMPONENT_TEMPLATE_CREATE); return result; } @@ -74,7 +74,7 @@ export const getApi = ( body: JSON.stringify(componentTemplate), }); - trackMetric('count', UIM_COMPONENT_TEMPLATE_UPDATE); + trackMetric(METRIC_TYPE.COUNT, UIM_COMPONENT_TEMPLATE_UPDATE); return result; } diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/mappings_editor.helpers.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/mappings_editor.helpers.tsx index 9302e080028cc9..14252fc34c4e51 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/mappings_editor.helpers.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/mappings_editor.helpers.tsx @@ -3,57 +3,16 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; + import { act } from 'react-dom/test-utils'; import { ReactWrapper } from 'enzyme'; +import { registerTestBed, TestBed, findTestSubject } from '@kbn/test/jest'; -import { registerTestBed, TestBed } from '@kbn/test/jest'; -import { GlobalFlyout } from '../../../../../../../../../../src/plugins/es_ui_shared/public'; +// This import needs to come first as it sets the jest.mock calls +import { WithAppDependencies } from './setup_environment'; import { getChildFieldsName } from '../../../lib'; +import { RuntimeField } from '../../../shared_imports'; import { MappingsEditor } from '../../../mappings_editor'; -import { MappingsEditorProvider } from '../../../mappings_editor_context'; - -jest.mock('@elastic/eui', () => { - const original = jest.requireActual('@elastic/eui'); - - return { - ...original, - // Mocking EuiComboBox, as it utilizes "react-virtualized" for rendering search suggestions, - // which does not produce a valid component wrapper - EuiComboBox: (props: any) => ( - { - props.onChange([syntheticEvent['0']]); - }} - /> - ), - // Mocking EuiCodeEditor, which uses React Ace under the hood - EuiCodeEditor: (props: any) => ( - { - props.onChange(e.jsonContent); - }} - /> - ), - // Mocking EuiSuperSelect to be able to easily change its value - // with a `myWrapper.simulate('change', { target: { value: 'someValue' } })` - EuiSuperSelect: (props: any) => ( - { - props.onChange(e.target.value); - }} - /> - ), - }; -}); - -const { GlobalFlyoutProvider } = GlobalFlyout; export interface DomFields { [key: string]: { @@ -64,8 +23,9 @@ export interface DomFields { } const createActions = (testBed: TestBed) => { - const { find, form, component } = testBed; + const { find, exists, form, component } = testBed; + // --- Mapped fields --- const getFieldInfo = (testSubjectField: string): { name: string; type: string } => { const name = find(`${testSubjectField}-fieldName` as TestSubjects).text(); const type = find(`${testSubjectField}-datatype` as TestSubjects).props()['data-type-value']; @@ -206,8 +166,102 @@ const createActions = (testBed: TestBed) => { component.update(); }; - const selectTab = async (tab: 'fields' | 'templates' | 'advanced') => { - const index = ['fields', 'templates', 'advanced'].indexOf(tab); + // --- Runtime fields --- + const openRuntimeFieldEditor = () => { + find('createRuntimeFieldButton').simulate('click'); + component.update(); + }; + + const updateRuntimeFieldForm = async (field: RuntimeField) => { + const valueToLabelMap = { + keyword: 'Keyword', + date: 'Date', + ip: 'IP', + long: 'Long', + double: 'Double', + boolean: 'Boolean', + }; + + if (!exists('runtimeFieldEditor')) { + throw new Error(`Can't update runtime field form as the editor is not opened.`); + } + + await act(async () => { + form.setInputValue('runtimeFieldEditor.nameField.input', field.name); + form.setInputValue('runtimeFieldEditor.scriptField', field.script.source); + find('typeField').simulate('change', [ + { + label: valueToLabelMap[field.type], + value: field.type, + }, + ]); + }); + }; + + const getRuntimeFieldsList = () => { + const fields = find('runtimeFieldsListItem').map((wrapper) => wrapper); + return fields.map((field) => { + return { + reactWrapper: field, + name: findTestSubject(field, 'fieldName').text(), + type: findTestSubject(field, 'fieldType').text(), + }; + }); + }; + + /** + * Open the editor, fill the form and close the editor + * @param field the field to add + */ + const addRuntimeField = async (field: RuntimeField) => { + openRuntimeFieldEditor(); + + await updateRuntimeFieldForm(field); + + await act(async () => { + find('runtimeFieldEditor.saveFieldButton').simulate('click'); + }); + component.update(); + }; + + const deleteRuntimeField = async (name: string) => { + const runtimeField = getRuntimeFieldsList().find((field) => field.name === name); + + if (!runtimeField) { + throw new Error(`Runtime field "${name}" to delete not found.`); + } + + await act(async () => { + findTestSubject(runtimeField.reactWrapper, 'removeFieldButton').simulate('click'); + }); + component.update(); + + // Modal is opened, confirm deletion + const modal = find('runtimeFieldDeleteConfirmModal'); + + act(() => { + findTestSubject(modal, 'confirmModalConfirmButton').simulate('click'); + }); + + component.update(); + }; + + const startEditRuntimeField = async (name: string) => { + const runtimeField = getRuntimeFieldsList().find((field) => field.name === name); + + if (!runtimeField) { + throw new Error(`Runtime field "${name}" to edit not found.`); + } + + await act(async () => { + findTestSubject(runtimeField.reactWrapper, 'editFieldButton').simulate('click'); + }); + component.update(); + }; + + // --- Other --- + const selectTab = async (tab: 'fields' | 'runtimeFields' | 'templates' | 'advanced') => { + const index = ['fields', 'runtimeFields', 'templates', 'advanced'].indexOf(tab); const tabElement = find('formTab').at(index); if (tabElement.length === 0) { @@ -268,19 +322,17 @@ const createActions = (testBed: TestBed) => { getToggleValue, getCheckboxValue, toggleFormRow, + openRuntimeFieldEditor, + getRuntimeFieldsList, + updateRuntimeFieldForm, + addRuntimeField, + deleteRuntimeField, + startEditRuntimeField, }; }; export const setup = (props: any = { onUpdate() {} }): MappingsEditorTestBed => { - const ComponentToTest = (propsOverride: { [key: string]: any }) => ( - - - - - - ); - - const setupTestBed = registerTestBed(ComponentToTest, { + const setupTestBed = registerTestBed(WithAppDependencies(MappingsEditor), { memoryRouter: { wrapComponent: false, }, @@ -312,10 +364,12 @@ export const getMappingsEditorDataFactory = (onChangeHandler: jest.MockedFunctio const [arg] = mockCalls[mockCalls.length - 1]; const { isValid, validate, getData } = arg; - let isMappingsValid = isValid; + let isMappingsValid: boolean = isValid; if (isMappingsValid === undefined) { - isMappingsValid = await act(validate); + await act(async () => { + isMappingsValid = await validate(); + }); component.update(); } diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/setup_environment.tsx new file mode 100644 index 00000000000000..f5fab4263e9b1e --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/helpers/setup_environment.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import { GlobalFlyout } from '../../../../../../../../../../src/plugins/es_ui_shared/public'; +import { uiSettingsServiceMock } from '../../../../../../../../../../src/core/public/mocks'; +import { MappingsEditorProvider } from '../../../mappings_editor_context'; +import { createKibanaReactContext } from '../../../shared_imports'; + +jest.mock('@elastic/eui', () => { + const original = jest.requireActual('@elastic/eui'); + + return { + ...original, + // Mocking EuiComboBox, as it utilizes "react-virtualized" for rendering search suggestions, + // which does not produce a valid component wrapper + EuiComboBox: (props: any) => ( + { + props.onChange([syntheticEvent['0']]); + }} + /> + ), + // Mocking EuiCodeEditor, which uses React Ace under the hood + EuiCodeEditor: (props: any) => ( + { + props.onChange(e.jsonContent); + }} + /> + ), + // Mocking EuiSuperSelect to be able to easily change its value + // with a `myWrapper.simulate('change', { target: { value: 'someValue' } })` + EuiSuperSelect: (props: any) => ( + { + props.onChange(e.target.value); + }} + /> + ), + }; +}); + +jest.mock('../../../../../../../../../../src/plugins/kibana_react/public', () => { + const original = jest.requireActual( + '../../../../../../../../../../src/plugins/kibana_react/public' + ); + + const CodeEditorMock = (props: any) => ( + ) => { + props.onChange(e.target.value); + }} + /> + ); + + return { + ...original, + CodeEditor: CodeEditorMock, + }; +}); + +const { GlobalFlyoutProvider } = GlobalFlyout; + +const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ + uiSettings: uiSettingsServiceMock.createSetupContract(), +}); + +const defaultProps = { + docLinks: { + DOC_LINK_VERSION: 'master', + ELASTIC_WEBSITE_URL: 'https://jest.elastic.co', + }, +}; + +export const WithAppDependencies = (Comp: any) => (props: any) => ( + + + + + + + +); diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mapped_fields.test.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mapped_fields.test.tsx index 8e5a3a314c6f6a..d6dcc317e67efb 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mapped_fields.test.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mapped_fields.test.tsx @@ -25,7 +25,7 @@ describe('Mappings editor: mapped fields', () => { describe('', () => { let testBed: MappingsEditorTestBed; - const defaultMappings = { + let defaultMappings = { properties: { myField: { type: 'text', @@ -72,6 +72,50 @@ describe('Mappings editor: mapped fields', () => { expect(domTreeMetadata).toEqual(defaultMappings.properties); }); + test('should indicate when a field is shadowed by a runtime field', async () => { + defaultMappings = { + properties: { + // myField is shadowed by runtime field with same name + myField: { + type: 'text', + fields: { + // Same name but is not root so not shadowed + myField: { + type: 'text', + }, + }, + }, + myObject: { + type: 'object', + properties: { + // Object properties are also non root fields so not shadowed + myField: { + type: 'object', + }, + }, + }, + }, + runtime: { + myField: { + type: 'boolean', + script: { + source: 'emit("hello")', + }, + }, + }, + } as any; + + const { actions, find } = setup({ + value: defaultMappings, + onChange: onChangeHandler, + }); + + await actions.expandAllFieldsAndReturnMetadata(); + + expect(find('fieldsListItem').length).toBe(4); // 2 for text and 2 for object + expect(find('fieldsListItem.isShadowedIndicator').length).toBe(1); // only root level text field + }); + test('should allow to be controlled by parent component and update on prop change', async () => { testBed = setup({ value: defaultMappings, diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mappings_editor.test.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mappings_editor.test.tsx index f5fcff9f962543..ead4fef5506e51 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mappings_editor.test.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/mappings_editor.test.tsx @@ -129,6 +129,18 @@ describe('Mappings editor: core', () => { testBed.component.update(); }); + test('should have 4 tabs (fields, runtime, template, advanced settings)', () => { + const { find } = testBed; + const tabs = find('formTab').map((wrapper) => wrapper.text()); + + expect(tabs).toEqual([ + 'Mapped fields', + 'Runtime fields', + 'Dynamic templates', + 'Advanced options', + ]); + }); + test('should keep the changes when switching tabs', async () => { const { actions: { addField, selectTab, updateJsonEditor, getJsonEditorValue, getToggleValue }, @@ -196,7 +208,6 @@ describe('Mappings editor: core', () => { isNumericDetectionVisible = exists('advancedConfiguration.numericDetection'); expect(isNumericDetectionVisible).toBe(false); - // await act(() => promise); // ---------------------------------------------------------------------------- // Go back to dynamic templates tab and make sure our changes are still there // ---------------------------------------------------------------------------- diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/runtime_fields.test.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/runtime_fields.test.tsx new file mode 100644 index 00000000000000..dc7859c24fb9e2 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/__jest__/client_integration/runtime_fields.test.tsx @@ -0,0 +1,246 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { act } from 'react-dom/test-utils'; + +import { componentHelpers, MappingsEditorTestBed } from './helpers'; + +const { setup, getMappingsEditorDataFactory } = componentHelpers.mappingsEditor; + +describe('Mappings editor: runtime fields', () => { + /** + * Variable to store the mappings data forwarded to the consumer component + */ + let data: any; + let onChangeHandler: jest.Mock = jest.fn(); + let getMappingsEditorData = getMappingsEditorDataFactory(onChangeHandler); + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + onChangeHandler = jest.fn(); + getMappingsEditorData = getMappingsEditorDataFactory(onChangeHandler); + }); + + describe('', () => { + let testBed: MappingsEditorTestBed; + + describe('when there are no runtime fields', () => { + const defaultMappings = {}; + + beforeEach(async () => { + testBed = setup({ + value: defaultMappings, + onChange: onChangeHandler, + }); + + await testBed.actions.selectTab('runtimeFields'); + }); + + test('should display an empty prompt', () => { + const { exists, find } = testBed; + + expect(exists('emptyList')).toBe(true); + expect(find('emptyList').text()).toContain('Start by creating a runtime field'); + }); + + test('should have a button to create a field and a link that points to the docs', () => { + const { exists, find, actions } = testBed; + + expect(exists('emptyList.learnMoreLink')).toBe(true); + expect(exists('emptyList.createRuntimeFieldButton')).toBe(true); + expect(find('createRuntimeFieldButton').text()).toBe('Create runtime field'); + + expect(exists('runtimeFieldEditor')).toBe(false); + actions.openRuntimeFieldEditor(); + expect(exists('runtimeFieldEditor')).toBe(true); + }); + }); + + describe('when there are runtime fields', () => { + const defaultMappings = { + runtime: { + day_of_week: { + type: 'date', + script: { + source: 'emit("hello Kibana")', + }, + }, + }, + }; + + beforeEach(async () => { + testBed = setup({ + value: defaultMappings, + onChange: onChangeHandler, + }); + + await testBed.actions.selectTab('runtimeFields'); + }); + + test('should list the fields', async () => { + const { find, actions } = testBed; + + const fields = actions.getRuntimeFieldsList(); + expect(fields.length).toBe(1); + + const [field] = fields; + expect(field.name).toBe('day_of_week'); + expect(field.type).toBe('Date'); + + await actions.startEditRuntimeField('day_of_week'); + expect(find('runtimeFieldEditor.scriptField').props().value).toBe('emit("hello Kibana")'); + }); + + test('should have a button to create fields', () => { + const { actions, exists } = testBed; + + expect(exists('createRuntimeFieldButton')).toBe(true); + + actions.openRuntimeFieldEditor(); + expect(exists('runtimeFieldEditor')).toBe(true); + }); + + test('should close the runtime editor when switching tab', async () => { + const { exists, actions } = testBed; + expect(exists('runtimeFieldEditor')).toBe(false); // closed + + actions.openRuntimeFieldEditor(); + expect(exists('runtimeFieldEditor')).toBe(true); // opened + + // Navigate away + await testBed.actions.selectTab('templates'); + expect(exists('runtimeFieldEditor')).toBe(false); // closed + + // Back to runtime fields + await testBed.actions.selectTab('runtimeFields'); + expect(exists('runtimeFieldEditor')).toBe(false); // still closed + }); + }); + + describe('Create / edit / delete runtime fields', () => { + const defaultMappings = {}; + + beforeEach(async () => { + testBed = setup({ + value: defaultMappings, + onChange: onChangeHandler, + }); + + await testBed.actions.selectTab('runtimeFields'); + }); + + test('should add the runtime field to the list and remove the empty prompt', async () => { + const { exists, actions, component } = testBed; + + await actions.addRuntimeField({ + name: 'myField', + script: { source: 'emit("hello")' }, + type: 'boolean', + }); + + // Make sure editor is closed and the field is in the list + expect(exists('runtimeFieldEditor')).toBe(false); + expect(exists('emptyList')).toBe(false); + + const fields = actions.getRuntimeFieldsList(); + expect(fields.length).toBe(1); + + const [field] = fields; + expect(field.name).toBe('myField'); + expect(field.type).toBe('Boolean'); + + // Make sure the field has been added to forwarded data + ({ data } = await getMappingsEditorData(component)); + + expect(data).toEqual({ + runtime: { + myField: { + type: 'boolean', + script: { + source: 'emit("hello")', + }, + }, + }, + }); + }); + + test('should remove the runtime field from the list', async () => { + const { actions, component } = testBed; + + await actions.addRuntimeField({ + name: 'myField', + script: { source: 'emit("hello")' }, + type: 'boolean', + }); + + let fields = actions.getRuntimeFieldsList(); + expect(fields.length).toBe(1); + ({ data } = await getMappingsEditorData(component)); + expect(data).toBeDefined(); + expect(data.runtime).toBeDefined(); + + await actions.deleteRuntimeField('myField'); + + fields = actions.getRuntimeFieldsList(); + expect(fields.length).toBe(0); + + ({ data } = await getMappingsEditorData(component)); + + expect(data).toBeUndefined(); + }); + + test('should edit the runtime field', async () => { + const { find, component, actions } = testBed; + + await actions.addRuntimeField({ + name: 'myField', + script: { source: 'emit("hello")' }, + type: 'boolean', + }); + + let fields = actions.getRuntimeFieldsList(); + expect(fields.length).toBe(1); + + await actions.startEditRuntimeField('myField'); + await actions.updateRuntimeFieldForm({ + name: 'updatedName', + script: { source: 'new script' }, + type: 'date', + }); + + await act(async () => { + find('runtimeFieldEditor.saveFieldButton').simulate('click'); + }); + component.update(); + + fields = actions.getRuntimeFieldsList(); + const [field] = fields; + + expect(field.name).toBe('updatedName'); + expect(field.type).toBe('Date'); + + ({ data } = await getMappingsEditorData(component)); + + expect(data).toEqual({ + runtime: { + updatedName: { + type: 'date', + script: { + source: 'new script', + }, + }, + }, + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/document_fields_header.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/document_fields_header.tsx index 56c01510376be4..84c4bf491cef57 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/document_fields_header.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/document_fields_header.tsx @@ -25,7 +25,7 @@ export const DocumentFieldsHeader = React.memo(({ searchValue, onSearchChange }: defaultMessage="Define the fields for your indexed documents. {docsLink}" values={{ docsLink: ( - + {i18n.translate('xpack.idxMgmt.mappingsEditor.documentFieldsDocumentationLink', { defaultMessage: 'Learn more.', })} diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/analyzer_parameter.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/analyzer_parameter.tsx index 1457c4583aa0e8..c613ddf282f0ad 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/analyzer_parameter.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/analyzer_parameter.tsx @@ -16,7 +16,7 @@ import { SelectOption, SuperSelectOption, } from '../../../types'; -import { useIndexSettings } from '../../../index_settings_context'; +import { useConfig } from '../../../config_context'; import { AnalyzerParameterSelects } from './analyzer_parameter_selects'; interface Props { @@ -71,7 +71,9 @@ export const AnalyzerParameter = ({ allowsIndexDefaultOption = true, 'data-test-subj': dataTestSubj, }: Props) => { - const { value: indexSettings } = useIndexSettings(); + const { + value: { indexSettings }, + } = useConfig(); const customAnalyzers = getCustomAnalyzers(indexSettings); const analyzerOptions = allowsIndexDefaultOption ? ANALYZER_OPTIONS diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/index.ts index c47ea4a884111f..b3bf0719489562 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/index.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/index.ts @@ -73,10 +73,6 @@ export * from './meta_parameter'; export * from './ignore_above_parameter'; -export { RuntimeTypeParameter } from './runtime_type_parameter'; - -export { PainlessScriptParameter } from './painless_script_parameter'; - export const PARAMETER_SERIALIZERS = [relationsSerializer, dynamicSerializer]; export const PARAMETER_DESERIALIZERS = [relationsDeserializer, dynamicDeserializer]; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/painless_script_parameter.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/painless_script_parameter.tsx deleted file mode 100644 index 9042e7f6ee328a..00000000000000 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/painless_script_parameter.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { PainlessLang } from '@kbn/monaco'; -import { EuiFormRow, EuiDescribedFormGroup } from '@elastic/eui'; - -import { CodeEditor, UseField } from '../../../shared_imports'; -import { getFieldConfig } from '../../../lib'; -import { EditFieldFormRow } from '../fields/edit_field'; - -interface Props { - stack?: boolean; -} - -export const PainlessScriptParameter = ({ stack }: Props) => { - return ( - path="script.source" config={getFieldConfig('script')}> - {(scriptField) => { - const error = scriptField.getErrorsMessages(); - const isInvalid = error ? Boolean(error.length) : false; - - const field = ( - - - - ); - - const fieldTitle = i18n.translate('xpack.idxMgmt.mappingsEditor.painlessScript.title', { - defaultMessage: 'Emitted value', - }); - - const fieldDescription = i18n.translate( - 'xpack.idxMgmt.mappingsEditor.painlessScript.description', - { - defaultMessage: 'Use emit() to define the value of this runtime field.', - } - ); - - if (stack) { - return ( - - {field} - - ); - } - - return ( - {fieldTitle}} - description={fieldDescription} - fullWidth={true} - > - {field} - - ); - }} -
    - ); -}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/runtime_type_parameter.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/runtime_type_parameter.tsx deleted file mode 100644 index 95a6c5364ac4d3..00000000000000 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/field_parameters/runtime_type_parameter.tsx +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { - EuiFormRow, - EuiComboBox, - EuiComboBoxOptionOption, - EuiDescribedFormGroup, - EuiSpacer, -} from '@elastic/eui'; - -import { UseField, RUNTIME_FIELD_OPTIONS } from '../../../shared_imports'; -import { DataType } from '../../../types'; -import { getFieldConfig } from '../../../lib'; -import { TYPE_DEFINITION } from '../../../constants'; -import { EditFieldFormRow, FieldDescriptionSection } from '../fields/edit_field'; - -interface Props { - stack?: boolean; -} - -export const RuntimeTypeParameter = ({ stack }: Props) => { - return ( - - path="runtime_type" - config={getFieldConfig('runtime_type')} - > - {(runtimeTypeField) => { - const { label, value, setValue } = runtimeTypeField; - const typeDefinition = - TYPE_DEFINITION[(value as EuiComboBoxOptionOption[])[0]!.value as DataType]; - - const field = ( - <> - - { - if (newValue.length === 0) { - // Don't allow clearing the type. One must always be selected - return; - } - setValue(newValue); - }} - isClearable={false} - fullWidth - /> - - - - - {/* Field description */} - {typeDefinition && ( - - {typeDefinition.description?.() as JSX.Element} - - )} - - ); - - const fieldTitle = i18n.translate('xpack.idxMgmt.mappingsEditor.runtimeType.title', { - defaultMessage: 'Emitted type', - }); - - const fieldDescription = i18n.translate( - 'xpack.idxMgmt.mappingsEditor.runtimeType.description', - { - defaultMessage: 'Select the type of value emitted by the runtime field.', - } - ); - - if (stack) { - return ( - - {field} - - ); - } - - return ( - {fieldTitle}} - description={fieldDescription} - fullWidth={true} - > - {field} - - ); - }} -
    - ); -}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/index.ts index 5c04b2fbb336c5..ccd1312ed48962 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/index.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/index.ts @@ -11,7 +11,6 @@ import { AliasTypeRequiredParameters } from './alias_type'; import { TokenCountTypeRequiredParameters } from './token_count_type'; import { ScaledFloatTypeRequiredParameters } from './scaled_float_type'; import { DenseVectorRequiredParameters } from './dense_vector_type'; -import { RuntimeTypeRequiredParameters } from './runtime_type'; export interface ComponentProps { allFields: NormalizedFields['byId']; @@ -22,7 +21,6 @@ const typeToParametersFormMap: { [key in DataType]?: ComponentType } = { token_count: TokenCountTypeRequiredParameters, scaled_float: ScaledFloatTypeRequiredParameters, dense_vector: DenseVectorRequiredParameters, - runtime: RuntimeTypeRequiredParameters, }; export const getRequiredParametersFormForType = ( diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/runtime_type.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/runtime_type.tsx deleted file mode 100644 index 54907295f8a157..00000000000000 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/create_field/required_parameters_forms/runtime_type.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; - -import { RuntimeTypeParameter, PainlessScriptParameter } from '../../../field_parameters'; - -export const RuntimeTypeRequiredParameters = () => { - return ( - <> - - - - ); -}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/index.ts index d135d1b81419cf..0f9308aa434489 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/index.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/index.ts @@ -31,7 +31,6 @@ import { JoinType } from './join_type'; import { HistogramType } from './histogram_type'; import { ConstantKeywordType } from './constant_keyword_type'; import { RankFeatureType } from './rank_feature_type'; -import { RuntimeType } from './runtime_type'; import { WildcardType } from './wildcard_type'; import { PointType } from './point_type'; import { VersionType } from './version_type'; @@ -62,7 +61,6 @@ const typeToParametersFormMap: { [key in DataType]?: ComponentType } = { histogram: HistogramType, constant_keyword: ConstantKeywordType, rank_feature: RankFeatureType, - runtime: RuntimeType, wildcard: WildcardType, point: PointType, version: VersionType, diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/runtime_type.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/runtime_type.tsx deleted file mode 100644 index dcf5a74e0e304d..00000000000000 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/field_types/runtime_type.tsx +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; - -import { RuntimeTypeParameter, PainlessScriptParameter } from '../../field_parameters'; -import { BasicParametersSection } from '../edit_field'; - -export const RuntimeType = () => { - return ( - - - - - ); -}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item.tsx index 1939f09fa6762b..22898a7b2b92e4 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item.tsx @@ -23,6 +23,27 @@ import { FieldsList } from './fields_list'; import { CreateField } from './create_field'; import { DeleteFieldProvider } from './delete_field_provider'; +const i18nTexts = { + addMultiFieldButtonLabel: i18n.translate( + 'xpack.idxMgmt.mappingsEditor.addMultiFieldTooltipLabel', + { + defaultMessage: 'Add a multi-field to index the same field in different ways.', + } + ), + addPropertyButtonLabel: i18n.translate('xpack.idxMgmt.mappingsEditor.addPropertyButtonLabel', { + defaultMessage: 'Add property', + }), + editButtonLabel: i18n.translate('xpack.idxMgmt.mappingsEditor.editFieldButtonLabel', { + defaultMessage: 'Edit', + }), + deleteButtonLabel: i18n.translate('xpack.idxMgmt.mappingsEditor.removeFieldButtonLabel', { + defaultMessage: 'Remove', + }), + fieldIsShadowedLabel: i18n.translate('xpack.idxMgmt.mappingsEditor.fieldIsShadowedLabel', { + defaultMessage: 'Field shadowed by a runtime field with the same name.', + }), +}; + interface Props { field: NormalizedField; allFields: NormalizedFields['byId']; @@ -31,6 +52,7 @@ interface Props { isHighlighted: boolean; isDimmed: boolean; isLastItem: boolean; + isShadowed?: boolean; childFieldsArray: NormalizedField[]; maxNestedDepth: number; addField(): void; @@ -48,6 +70,7 @@ function FieldListItemComponent( isCreateFieldFormVisible, areActionButtonsVisible, isLastItem, + isShadowed = false, childFieldsArray, maxNestedDepth, addField, @@ -106,30 +129,12 @@ function FieldListItemComponent( return null; } - const addMultiFieldButtonLabel = i18n.translate( - 'xpack.idxMgmt.mappingsEditor.addMultiFieldTooltipLabel', - { - defaultMessage: 'Add a multi-field to index the same field in different ways.', - } - ); - - const addPropertyButtonLabel = i18n.translate( - 'xpack.idxMgmt.mappingsEditor.addPropertyButtonLabel', - { - defaultMessage: 'Add property', - } - ); - - const editButtonLabel = i18n.translate('xpack.idxMgmt.mappingsEditor.editFieldButtonLabel', { - defaultMessage: 'Edit', - }); - - const deleteButtonLabel = i18n.translate( - 'xpack.idxMgmt.mappingsEditor.removeFieldButtonLabel', - { - defaultMessage: 'Remove', - } - ); + const { + addMultiFieldButtonLabel, + addPropertyButtonLabel, + editButtonLabel, + deleteButtonLabel, + } = i18nTexts; return ( @@ -288,6 +293,18 @@ function FieldListItemComponent( + {isShadowed && ( + + + + {i18n.translate('xpack.idxMgmt.mappingsEditor.shadowedBadgeLabel', { + defaultMessage: 'Shadowed', + })} + + + + )} + {renderActionButtons()}
    diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item_container.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item_container.tsx index 7d9ad3bc6aaec4..02d915ee349b06 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item_container.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item_container.tsx @@ -20,10 +20,12 @@ export const FieldsListItemContainer = ({ fieldId, treeDepth, isLastItem }: Prop const listElement = useRef(null); const { documentFields: { status, fieldToAddFieldTo, fieldToEdit }, - fields: { byId, maxNestedDepth }, + fields: { byId, maxNestedDepth, rootLevelFields }, + runtimeFields, } = useMappingsState(); const getField = useCallback((id: string) => byId[id], [byId]); + const runtimeFieldNames = Object.values(runtimeFields).map((field) => field.source.name); const field: NormalizedField = getField(fieldId); const { childFields } = field; @@ -35,6 +37,10 @@ export const FieldsListItemContainer = ({ fieldId, treeDepth, isLastItem }: Prop () => (childFields !== undefined ? childFields.map(getField) : []), [childFields, getField] ); + // Indicate if the field is shadowed by a runtime field with the same name + // Currently this can only occur for **root level** fields. + const isShadowed = + rootLevelFields.includes(fieldId) && runtimeFieldNames.includes(field.source.name); const addField = useCallback(() => { dispatch({ @@ -62,6 +68,7 @@ export const FieldsListItemContainer = ({ fieldId, treeDepth, isLastItem }: Prop treeDepth={treeDepth} isHighlighted={isHighlighted} isDimmed={isDimmed} + isShadowed={isShadowed} isCreateFieldFormVisible={isCreateFieldFormVisible} areActionButtonsVisible={areActionButtonsVisible} isLastItem={isLastItem} diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/index.ts index 2958ecd75910f3..2a19ccb3f5d1cf 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/index.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/index.ts @@ -8,6 +8,8 @@ export * from './configuration_form'; export * from './document_fields'; +export * from './runtime_fields'; + export * from './templates_form'; export * from './multiple_mappings_warning'; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/delete_field_provider.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/delete_field_provider.tsx new file mode 100644 index 00000000000000..17daf7d671c5da --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/delete_field_provider.tsx @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiConfirmModal, EuiOverlayMask } from '@elastic/eui'; + +import { useDispatch } from '../../mappings_state_context'; +import { NormalizedRuntimeField } from '../../types'; + +type DeleteFieldFunc = (property: NormalizedRuntimeField) => void; + +interface Props { + children: (deleteProperty: DeleteFieldFunc) => React.ReactNode; +} + +interface State { + isModalOpen: boolean; + field?: NormalizedRuntimeField; +} + +export const DeleteRuntimeFieldProvider = ({ children }: Props) => { + const [state, setState] = useState({ isModalOpen: false }); + const dispatch = useDispatch(); + + const confirmButtonText = i18n.translate( + 'xpack.idxMgmt.mappingsEditor.deleteRuntimeField.confirmationModal.removeButtonLabel', + { + defaultMessage: 'Remove', + } + ); + + let modalTitle: string | undefined; + + if (state.field) { + const { source } = state.field; + + modalTitle = i18n.translate( + 'xpack.idxMgmt.mappingsEditor.deleteRuntimeField.confirmationModal.title', + { + defaultMessage: "Remove runtime field '{fieldName}'?", + values: { + fieldName: source.name, + }, + } + ); + } + + const deleteField: DeleteFieldFunc = (field) => { + setState({ isModalOpen: true, field }); + }; + + const closeModal = () => { + setState({ isModalOpen: false }); + }; + + const confirmDelete = () => { + dispatch({ type: 'runtimeField.remove', value: state.field!.id }); + closeModal(); + }; + + return ( + <> + {children(deleteField)} + + {state.isModalOpen && ( + + + + )} + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/empty_prompt.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/empty_prompt.tsx new file mode 100644 index 00000000000000..7fb2b9d7df9678 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/empty_prompt.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { FunctionComponent } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiEmptyPrompt, EuiLink, EuiButton } from '@elastic/eui'; + +interface Props { + createField: () => void; + runtimeFieldsDocsUri: string; +} + +export const EmptyPrompt: FunctionComponent = ({ createField, runtimeFieldsDocsUri }) => { + return ( + + {i18n.translate('xpack.idxMgmt.mappingsEditor.runtimeFields.emptyPromptTitle', { + defaultMessage: 'Start by creating a runtime field', + })} + + } + body={ +

    + +
    + + {i18n.translate( + 'xpack.idxMgmt.mappingsEditor.runtimeFields.emptyPromptDocumentionLink', + { + defaultMessage: 'Learn more.', + } + )} + +

    + } + actions={ + createField()} + iconType="plusInCircle" + data-test-subj="createRuntimeFieldButton" + fill + > + {i18n.translate('xpack.idxMgmt.mappingsEditor.runtimeFields.emptyPromptButtonLabel', { + defaultMessage: 'Create runtime field', + })} + + } + /> + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/index.ts new file mode 100644 index 00000000000000..e5928ebb07ddcf --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { RuntimeFieldsList } from './runtime_fields_list'; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtime_fields_list.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtime_fields_list.tsx new file mode 100644 index 00000000000000..4033c0f2fe456c --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtime_fields_list.tsx @@ -0,0 +1,154 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useCallback, useEffect } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n/react'; +import { EuiSpacer, EuiButtonEmpty, EuiText, EuiLink } from '@elastic/eui'; + +import { useMappingsState, useDispatch } from '../../mappings_state_context'; +import { + documentationService, + GlobalFlyout, + RuntimeField, + RuntimeFieldEditorFlyoutContent, + RuntimeFieldEditorFlyoutContentProps, +} from '../../shared_imports'; +import { useConfig } from '../../config_context'; +import { EmptyPrompt } from './empty_prompt'; +import { RuntimeFieldsListItemContainer } from './runtimefields_list_item_container'; + +const { useGlobalFlyout } = GlobalFlyout; + +export const RuntimeFieldsList = () => { + const runtimeFieldsDocsUri = documentationService.getRuntimeFields(); + const { + runtimeFields, + runtimeFieldsList: { status, fieldToEdit }, + fields, + } = useMappingsState(); + + const dispatch = useDispatch(); + + const { + addContent: addContentToGlobalFlyout, + removeContent: removeContentFromGlobalFlyout, + } = useGlobalFlyout(); + + const { + value: { docLinks }, + } = useConfig(); + + const createField = useCallback(() => { + dispatch({ type: 'runtimeFieldsList.createField' }); + }, [dispatch]); + + const exitEdit = useCallback(() => { + dispatch({ type: 'runtimeFieldsList.closeRuntimeFieldEditor' }); + }, [dispatch]); + + const saveRuntimeField = useCallback( + (field: RuntimeField) => { + if (fieldToEdit) { + dispatch({ + type: 'runtimeField.edit', + value: { + id: fieldToEdit, + source: field, + }, + }); + } else { + dispatch({ type: 'runtimeField.add', value: field }); + } + }, + [dispatch, fieldToEdit] + ); + + useEffect(() => { + if (status === 'creatingField' || status === 'editingField') { + addContentToGlobalFlyout({ + id: 'runtimeFieldEditor', + Component: RuntimeFieldEditorFlyoutContent, + props: { + onSave: saveRuntimeField, + onCancel: exitEdit, + defaultValue: fieldToEdit ? runtimeFields[fieldToEdit]?.source : undefined, + docLinks: docLinks!, + ctx: { + namesNotAllowed: Object.values(runtimeFields).map((field) => field.source.name), + existingConcreteFields: Object.values(fields.byId).map((field) => ({ + name: field.source.name, + type: field.source.type, + })), + }, + }, + flyoutProps: { + 'data-test-subj': 'runtimeFieldEditor', + 'aria-labelledby': 'runtimeFieldEditorEditTitle', + maxWidth: 720, + onClose: exitEdit, + }, + cleanUpFunc: exitEdit, + }); + } else if (status === 'idle') { + removeContentFromGlobalFlyout('runtimeFieldEditor'); + } + }, [ + status, + fieldToEdit, + runtimeFields, + fields, + docLinks, + addContentToGlobalFlyout, + removeContentFromGlobalFlyout, + saveRuntimeField, + exitEdit, + ]); + + const fieldsToArray = Object.entries(runtimeFields); + const isEmpty = fieldsToArray.length === 0; + const isCreateFieldDisabled = status !== 'idle'; + + return isEmpty ? ( + + ) : ( + <> + + + {i18n.translate('xpack.idxMgmt.mappingsEditor.runtimeFieldsDocumentationLink', { + defaultMessage: 'Learn more.', + })} + + ), + }} + /> + + +
      + {fieldsToArray.map(([fieldId]) => ( + + ))} +
    + + + + + {i18n.translate('xpack.idxMgmt.mappingsEditor.addRuntimeFieldButtonLabel', { + defaultMessage: 'Add field', + })} + + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item.tsx new file mode 100644 index 00000000000000..754004ae0c6225 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item.tsx @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React from 'react'; +import classNames from 'classnames'; +import { EuiFlexGroup, EuiFlexItem, EuiBadge, EuiButtonIcon, EuiToolTip } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { NormalizedRuntimeField } from '../../types'; +import { getTypeLabelFromField } from '../../lib'; + +import { DeleteRuntimeFieldProvider } from './delete_field_provider'; + +interface Props { + field: NormalizedRuntimeField; + areActionButtonsVisible: boolean; + isHighlighted: boolean; + isDimmed: boolean; + editField(): void; +} + +function RuntimeFieldsListItemComponent( + { field, areActionButtonsVisible, isHighlighted, isDimmed, editField }: Props, + ref: React.Ref +) { + const { source } = field; + + const renderActionButtons = () => { + if (!areActionButtonsVisible) { + return null; + } + + const editButtonLabel = i18n.translate( + 'xpack.idxMgmt.mappingsEditor.editRuntimeFieldButtonLabel', + { + defaultMessage: 'Edit', + } + ); + + const deleteButtonLabel = i18n.translate( + 'xpack.idxMgmt.mappingsEditor.removeRuntimeFieldButtonLabel', + { + defaultMessage: 'Remove', + } + ); + + return ( + + + + + + + + + + {(deleteField) => ( + + deleteField(field)} + data-test-subj="removeFieldButton" + aria-label={deleteButtonLabel} + /> + + )} + + + + ); + }; + + return ( +
  • +
    +
    + + + {source.name} + + + + + {getTypeLabelFromField(source)} + + + + {renderActionButtons()} + +
    +
    +
  • + ); +} + +export const RuntimeFieldsListItem = React.memo( + RuntimeFieldsListItemComponent +) as typeof RuntimeFieldsListItemComponent; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item_container.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item_container.tsx new file mode 100644 index 00000000000000..90008193fa056c --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/components/runtime_fields/runtimefields_list_item_container.tsx @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { useCallback } from 'react'; + +import { useMappingsState, useDispatch } from '../../mappings_state_context'; +import { NormalizedRuntimeField } from '../../types'; +import { RuntimeFieldsListItem } from './runtimefields_list_item'; + +interface Props { + fieldId: string; +} + +export const RuntimeFieldsListItemContainer = ({ fieldId }: Props) => { + const dispatch = useDispatch(); + const { + runtimeFieldsList: { status, fieldToEdit }, + runtimeFields, + } = useMappingsState(); + + const getField = useCallback((id: string) => runtimeFields[id], [runtimeFields]); + + const field: NormalizedRuntimeField = getField(fieldId); + const isHighlighted = fieldToEdit === fieldId; + const isDimmed = status === 'editingField' && fieldToEdit !== fieldId; + const areActionButtonsVisible = status === 'idle'; + + const editField = useCallback(() => { + dispatch({ + type: 'runtimeFieldsList.editField', + value: fieldId, + }); + }, [fieldId, dispatch]); + + return ( + + ); +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/config_context.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/config_context.tsx new file mode 100644 index 00000000000000..84b42508f904a2 --- /dev/null +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/config_context.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import React, { createContext, useContext, useState } from 'react'; + +import { DocLinksStart } from './shared_imports'; +import { IndexSettings } from './types'; + +interface ContextState { + indexSettings: IndexSettings; + docLinks?: DocLinksStart; +} + +interface Context { + value: ContextState; + update: (value: ContextState) => void; +} + +const ConfigContext = createContext(undefined); + +interface Props { + children: React.ReactNode; +} + +export const ConfigProvider = ({ children }: Props) => { + const [state, setState] = useState({ + indexSettings: {}, + }); + + return ( + + {children} + + ); +}; + +export const useConfig = () => { + const ctx = useContext(ConfigContext); + if (ctx === undefined) { + throw new Error('useConfig must be used within a '); + } + return ctx; +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/data_types_definition.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/data_types_definition.tsx index 07ca0a69afefb3..66be208fbb66be 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/data_types_definition.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/data_types_definition.tsx @@ -13,25 +13,6 @@ import { documentationService } from '../../../services/documentation'; import { MainType, SubType, DataType, DataTypeDefinition } from '../types'; export const TYPE_DEFINITION: { [key in DataType]: DataTypeDefinition } = { - runtime: { - value: 'runtime', - isBeta: true, - label: i18n.translate('xpack.idxMgmt.mappingsEditor.dataType.runtimeFieldDescription', { - defaultMessage: 'Runtime', - }), - // TODO: Add this once the page exists. - // documentation: { - // main: '/runtime_field.html', - // }, - description: () => ( -

    - -

    - ), - }, text: { value: 'text', label: i18n.translate('xpack.idxMgmt.mappingsEditor.dataType.textDescription', { @@ -944,7 +925,6 @@ export const MAIN_TYPES: MainType[] = [ 'range', 'rank_feature', 'rank_features', - 'runtime', 'search_as_you_type', 'shape', 'text', diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx index 46292b7b2d3575..d16bf68b80e5d8 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx @@ -18,7 +18,6 @@ export const TYPE_NOT_ALLOWED_MULTIFIELD: DataType[] = [ 'object', 'nested', 'alias', - 'runtime', ]; export const FIELD_TYPES_OPTIONS = Object.entries(MAIN_DATA_TYPE_DEFINITION).map( diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/parameters_definition.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/parameters_definition.tsx index 64f84ee2611a0d..281b14a25fcb6c 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/parameters_definition.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/parameters_definition.tsx @@ -16,8 +16,6 @@ import { ValidationFuncArg, fieldFormatters, FieldConfig, - RUNTIME_FIELD_OPTIONS, - RuntimeType, } from '../shared_imports'; import { AliasOption, @@ -187,52 +185,6 @@ export const PARAMETERS_DEFINITION: { [key in ParameterName]: ParameterDefinitio }, schema: t.string, }, - runtime_type: { - fieldConfig: { - type: FIELD_TYPES.COMBO_BOX, - label: i18n.translate('xpack.idxMgmt.mappingsEditor.parameters.runtimeTypeLabel', { - defaultMessage: 'Type', - }), - defaultValue: 'keyword', - deserializer: (fieldType: RuntimeType | undefined) => { - if (typeof fieldType === 'string' && Boolean(fieldType)) { - const label = - RUNTIME_FIELD_OPTIONS.find(({ value }) => value === fieldType)?.label ?? fieldType; - return [ - { - label, - value: fieldType, - }, - ]; - } - return []; - }, - serializer: (value: ComboBoxOption[]) => (value.length === 0 ? '' : value[0].value), - }, - schema: t.string, - }, - script: { - fieldConfig: { - defaultValue: '', - type: FIELD_TYPES.TEXT, - label: i18n.translate('xpack.idxMgmt.mappingsEditor.parameters.painlessScriptLabel', { - defaultMessage: 'Script', - }), - validations: [ - { - validator: emptyField( - i18n.translate( - 'xpack.idxMgmt.mappingsEditor.parameters.validations.scriptIsRequiredErrorMessage', - { - defaultMessage: 'Script must emit() a value.', - } - ) - ), - }, - ], - }, - schema: t.string, - }, store: { fieldConfig: { type: FIELD_TYPES.CHECKBOX, diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/index_settings_context.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/index_settings_context.tsx deleted file mode 100644 index bd84c3a905ec8d..00000000000000 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/index_settings_context.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ -import React, { createContext, useContext, useState } from 'react'; - -import { IndexSettings } from './types'; - -const IndexSettingsContext = createContext< - { value: IndexSettings; update: (value: IndexSettings) => void } | undefined ->(undefined); - -interface Props { - children: React.ReactNode; -} - -export const IndexSettingsProvider = ({ children }: Props) => { - const [state, setState] = useState({}); - - return ( - - {children} - - ); -}; - -export const useIndexSettings = () => { - const ctx = useContext(IndexSettingsContext); - if (ctx === undefined) { - throw new Error('useIndexSettings must be used within a '); - } - return ctx; -}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/extract_mappings_definition.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/extract_mappings_definition.ts index 1fd8329ae4b40c..c32c0d43632191 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/extract_mappings_definition.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/extract_mappings_definition.ts @@ -15,16 +15,22 @@ const isMappingDefinition = (obj: GenericObject): boolean => { return false; } - const { properties, dynamic_templates: dynamicTemplates, ...mappingsConfiguration } = obj; + const { + properties, + dynamic_templates: dynamicTemplates, + runtime, + ...mappingsConfiguration + } = obj; const { errors } = validateMappingsConfiguration(mappingsConfiguration); const isConfigurationValid = errors.length === 0; const isPropertiesValid = properties === undefined || isPlainObject(properties); const isDynamicTemplatesValid = dynamicTemplates === undefined || Array.isArray(dynamicTemplates); + const isRuntimeValid = runtime === undefined || isPlainObject(runtime); - // If the configuration, the properties and the dynamic templates are valid + // If the configuration, the properties, the dynamic templates and runtime are valid // we can assume that the mapping is declared at root level (no types) - return isConfigurationValid && isPropertiesValid && isDynamicTemplatesValid; + return isConfigurationValid && isPropertiesValid && isDynamicTemplatesValid && isRuntimeValid; }; /** diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/index.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/index.ts index 0a59cafdcef47c..2a0b39c4e2c9c5 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/index.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/index.ts @@ -24,6 +24,8 @@ export { shouldDeleteChildFieldsAfterTypeChange, canUseMappingsEditor, stripUndefinedValues, + normalizeRuntimeFields, + deNormalizeRuntimeFields, } from './utils'; export * from './serializers'; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/mappings_validator.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/mappings_validator.ts index f0d90be9472f66..4d1ae627bc9102 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/mappings_validator.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/mappings_validator.ts @@ -303,4 +303,5 @@ export const VALID_MAPPINGS_PARAMETERS = [ ...mappingsConfigurationSchemaKeys, 'dynamic_templates', 'properties', + 'runtime', ]; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.test.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.test.ts index e1988c071314ee..41ec4887a7abd4 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.test.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.test.ts @@ -58,10 +58,9 @@ describe('utils', () => { }); describe('getTypeLabelFromField()', () => { - test('returns an unprocessed label for non-runtime fields', () => { + test('returns label for fields', () => { expect( getTypeLabelFromField({ - name: 'testField', type: 'keyword', }) ).toBe('Keyword'); @@ -76,26 +75,5 @@ describe('utils', () => { }) ).toBe('Other: hyperdrive'); }); - - test("returns a label prepended with 'Runtime' for runtime fields", () => { - expect( - getTypeLabelFromField({ - name: 'testField', - type: 'runtime', - runtime_type: 'keyword', - }) - ).toBe('Runtime Keyword'); - }); - - test("returns a label prepended with 'Runtime Other' for unrecognized runtime fields", () => { - expect( - getTypeLabelFromField({ - name: 'testField', - type: 'runtime', - // @ts-ignore - runtime_type: 'hyperdrive', - }) - ).toBe('Runtime Other: hyperdrive'); - }); }); }); diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.ts index fd7aa416385052..283ca83c54bb0c 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/lib/utils.ts @@ -18,6 +18,8 @@ import { ParameterName, ComboBoxOption, GenericObject, + RuntimeFields, + NormalizedRuntimeFields, } from '../types'; import { @@ -77,15 +79,10 @@ const getTypeLabel = (type?: DataType): string => { : `${TYPE_DEFINITION.other.label}: ${type}`; }; -export const getTypeLabelFromField = (field: Field) => { - const { type, runtime_type: runtimeType } = field; +export const getTypeLabelFromField = (field: { type: DataType }) => { + const { type } = field; const typeLabel = getTypeLabel(type); - if (type === 'runtime') { - const runtimeTypeLabel = getTypeLabel(runtimeType); - return `${typeLabel} ${runtimeTypeLabel}`; - } - return typeLabel; }; @@ -566,3 +563,29 @@ export const stripUndefinedValues = (obj: GenericObject, recu ? { ...acc, [key]: stripUndefinedValues(value, recursive) } : { ...acc, [key]: value }; }, {} as T); + +export const normalizeRuntimeFields = (fields: RuntimeFields = {}): NormalizedRuntimeFields => { + return Object.entries(fields).reduce((acc, [name, field]) => { + const id = getUniqueId(); + return { + ...acc, + [id]: { + id, + source: { + name, + ...field, + }, + }, + }; + }, {} as NormalizedRuntimeFields); +}; + +export const deNormalizeRuntimeFields = (fields: NormalizedRuntimeFields): RuntimeFields => { + return Object.values(fields).reduce((acc, { source }) => { + const { name, ...rest } = source; + return { + ...acc, + [name]: rest, + }; + }, {} as RuntimeFields); +}; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor.tsx index 3902337f28ad23..3af9f24f48ed2c 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor.tsx @@ -9,9 +9,10 @@ import { i18n } from '@kbn/i18n'; import { EuiSpacer, EuiTabs, EuiTab } from '@elastic/eui'; import { - ConfigurationForm, DocumentFields, + RuntimeFieldsList, TemplatesForm, + ConfigurationForm, MultipleMappingsWarning, } from './components'; import { @@ -21,19 +22,22 @@ import { Mappings, MappingsConfiguration, MappingsTemplates, + RuntimeFields, } from './types'; import { extractMappingsDefinition } from './lib'; import { useMappingsState } from './mappings_state_context'; import { useMappingsStateListener } from './use_state_listener'; -import { useIndexSettings } from './index_settings_context'; +import { useConfig } from './config_context'; +import { DocLinksStart } from './shared_imports'; -type TabName = 'fields' | 'advanced' | 'templates'; +type TabName = 'fields' | 'runtimeFields' | 'advanced' | 'templates'; interface MappingsEditorParsedMetadata { parsedDefaultValue?: { configuration: MappingsConfiguration; fields: { [key: string]: Field }; templates: MappingsTemplates; + runtime: RuntimeFields; }; multipleMappingsDeclared: boolean; } @@ -42,9 +46,10 @@ interface Props { onChange: OnUpdateHandler; value?: { [key: string]: any }; indexSettings?: IndexSettings; + docLinks: DocLinksStart; } -export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Props) => { +export const MappingsEditor = React.memo(({ onChange, value, docLinks, indexSettings }: Props) => { const { parsedDefaultValue, multipleMappingsDeclared, @@ -60,11 +65,12 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr _meta, _routing, dynamic, + properties, + runtime, /* eslint-disable @typescript-eslint/naming-convention */ numeric_detection, date_detection, dynamic_date_formats, - properties, dynamic_templates, /* eslint-enable @typescript-eslint/naming-convention */ } = mappingsDefinition; @@ -83,6 +89,7 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr templates: { dynamic_templates, }, + runtime, }; return { parsedDefaultValue: parsed, multipleMappingsDeclared: false }; @@ -95,12 +102,7 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr */ useMappingsStateListener({ onChange, value: parsedDefaultValue }); - // Update the Index settings context so it is available in the Global flyout - const { update: updateIndexSettings } = useIndexSettings(); - if (indexSettings !== undefined) { - updateIndexSettings(indexSettings); - } - + const { update: updateConfig } = useConfig(); const state = useMappingsState(); const [selectedTab, selectTab] = useState('fields'); @@ -115,6 +117,14 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr } }, [multipleMappingsDeclared, onChange, value]); + useEffect(() => { + // Update the the config context so it is available globally (e.g in our Global flyout) + updateConfig({ + docLinks, + indexSettings: indexSettings ?? {}, + }); + }, [updateConfig, docLinks, indexSettings]); + const changeTab = async (tab: TabName) => { if (selectedTab === 'advanced') { // When we navigate away we need to submit the form to validate if there are any errors. @@ -139,6 +149,7 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr const tabToContentMap = { fields: , + runtimeFields: , templates: , advanced: , }; @@ -159,6 +170,15 @@ export const MappingsEditor = React.memo(({ onChange, value, indexSettings }: Pr defaultMessage: 'Mapped fields', })} + changeTab('runtimeFields')} + isSelected={selectedTab === 'runtimeFields'} + data-test-subj="formTab" + > + {i18n.translate('xpack.idxMgmt.mappingsEditor.runtimeFieldsTabLabel', { + defaultMessage: 'Runtime fields', + })} + changeTab('templates')} isSelected={selectedTab === 'templates'} diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor_context.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor_context.tsx index 8e30d07c2262f2..f4d827b631dd15 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor_context.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_editor_context.tsx @@ -6,12 +6,12 @@ import React from 'react'; import { StateProvider } from './mappings_state_context'; -import { IndexSettingsProvider } from './index_settings_context'; +import { ConfigProvider } from './config_context'; export const MappingsEditorProvider: React.FC = ({ children }) => { return ( - {children} + {children} ); }; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_state_context.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_state_context.tsx index 4912b0963bc121..57c326b1211414 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_state_context.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/mappings_state_context.tsx @@ -41,6 +41,10 @@ export const StateProvider: React.FC = ({ children }) => { status: 'idle', editor: 'default', }, + runtimeFields: {}, + runtimeFieldsList: { + status: 'idle', + }, fieldsJsonEditor: { format: () => ({}), isValid: true, diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/reducer.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/reducer.ts index 47e9d5200ea084..b76541479f68ca 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/reducer.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/reducer.ts @@ -195,6 +195,10 @@ export const reducer = (state: State, action: Action): State => { fieldToAddFieldTo: undefined, fieldToEdit: undefined, }, + runtimeFields: action.value.runtimeFields, + runtimeFieldsList: { + status: 'idle', + }, search: { term: '', result: [], @@ -482,6 +486,80 @@ export const reducer = (state: State, action: Action): State => { }, }; } + case 'runtimeFieldsList.createField': { + return { + ...state, + runtimeFieldsList: { + ...state.runtimeFieldsList, + status: 'creatingField', + }, + }; + } + case 'runtimeFieldsList.editField': { + return { + ...state, + runtimeFieldsList: { + ...state.runtimeFieldsList, + status: 'editingField', + fieldToEdit: action.value, + }, + }; + } + case 'runtimeField.add': { + const id = getUniqueId(); + const normalizedField = { + id, + source: action.value, + }; + + return { + ...state, + runtimeFields: { + ...state.runtimeFields, + [id]: normalizedField, + }, + runtimeFieldsList: { + ...state.runtimeFieldsList, + status: 'idle', + }, + }; + } + case 'runtimeField.edit': { + const fieldToEdit = state.runtimeFieldsList.fieldToEdit!; + + return { + ...state, + runtimeFields: { + ...state.runtimeFields, + [fieldToEdit]: action.value, + }, + runtimeFieldsList: { + ...state.runtimeFieldsList, + status: 'idle', + }, + }; + } + case 'runtimeField.remove': { + const field = state.runtimeFields[action.value]; + const { id } = field; + + const updatedFields = { ...state.runtimeFields }; + delete updatedFields[id]; + + return { + ...state, + runtimeFields: updatedFields, + }; + } + case 'runtimeFieldsList.closeRuntimeFieldEditor': + return { + ...state, + runtimeFieldsList: { + ...state.runtimeFieldsList, + status: 'idle', + fieldToEdit: undefined, + }, + }; case 'fieldsJsonEditor.update': { const nextState = { ...state, diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/shared_imports.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/shared_imports.ts index 68b40e876f6552..36f7fecbcff21b 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/shared_imports.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/shared_imports.ts @@ -52,6 +52,14 @@ export { GlobalFlyout, } from '../../../../../../../src/plugins/es_ui_shared/public'; -export { CodeEditor } from '../../../../../../../src/plugins/kibana_react/public'; +export { documentationService } from '../../services/documentation'; -export { RUNTIME_FIELD_OPTIONS, RuntimeType } from '../../../../../runtime_fields/public'; +export { + RuntimeField, + RuntimeFieldEditorFlyoutContent, + RuntimeFieldEditorFlyoutContentProps, +} from '../../../../../runtime_fields/public'; + +export { createKibanaReactContext } from '../../../../../../../src/plugins/kibana_react/public'; + +export { DocLinksStart } from '../../../../../../../src/core/public'; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/types/document_fields.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/types/document_fields.ts index b143eedd4f9d4f..b5c61594e5cb0b 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/types/document_fields.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/types/document_fields.ts @@ -7,7 +7,7 @@ import { ReactNode } from 'react'; import { GenericObject } from './mappings_editor'; -import { FieldConfig } from '../shared_imports'; +import { FieldConfig, RuntimeField } from '../shared_imports'; import { PARAMETERS_DEFINITION } from '../constants'; export interface DataTypeDefinition { @@ -36,7 +36,6 @@ export interface ParameterDefinition { } export type MainType = - | 'runtime' | 'text' | 'keyword' | 'numeric' @@ -154,8 +153,6 @@ export type ParameterName = | 'depth_limit' | 'relations' | 'max_shingle_size' - | 'runtime_type' - | 'script' | 'value' | 'meta'; @@ -173,7 +170,6 @@ export interface Fields { interface FieldBasic { name: string; type: DataType; - runtime_type?: DataType; subType?: SubType; properties?: { [key: string]: Omit }; fields?: { [key: string]: Omit }; @@ -223,3 +219,16 @@ export interface AliasOption { id: string; label: string; } + +export interface RuntimeFields { + [name: string]: Omit; +} + +export interface NormalizedRuntimeField { + id: string; + source: RuntimeField; +} + +export interface NormalizedRuntimeFields { + [id: string]: NormalizedRuntimeField; +} diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/types/state.ts b/x-pack/plugins/index_management/public/application/components/mappings_editor/types/state.ts index 34df70374aa88d..7371e348fd51cf 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/types/state.ts +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/types/state.ts @@ -4,8 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ -import { FormHook, OnFormUpdateArg } from '../shared_imports'; -import { Field, NormalizedFields } from './document_fields'; +import { FormHook, OnFormUpdateArg, RuntimeField } from '../shared_imports'; +import { + Field, + NormalizedFields, + NormalizedRuntimeField, + NormalizedRuntimeFields, +} from './document_fields'; import { FieldsEditor, SearchResult } from './mappings_editor'; export type Mappings = MappingsTemplates & @@ -58,6 +63,11 @@ export interface DocumentFieldsState { fieldToAddFieldTo?: string; } +interface RuntimeFieldsListState { + status: DocumentFieldsStatus; + fieldToEdit?: string; +} + export interface ConfigurationFormState extends OnFormUpdateArg { defaultValue: MappingsConfiguration; submitForm?: FormHook['submit']; @@ -72,7 +82,9 @@ export interface State { isValid: boolean | undefined; configuration: ConfigurationFormState; documentFields: DocumentFieldsState; + runtimeFieldsList: RuntimeFieldsListState; fields: NormalizedFields; + runtimeFields: NormalizedRuntimeFields; fieldForm?: OnFormUpdateArg; fieldsJsonEditor: { format(): MappingsFields; @@ -100,6 +112,12 @@ export type Action = | { type: 'documentField.editField'; value: string } | { type: 'documentField.changeStatus'; value: DocumentFieldsStatus } | { type: 'documentField.changeEditor'; value: FieldsEditor } + | { type: 'runtimeFieldsList.createField' } + | { type: 'runtimeFieldsList.editField'; value: string } + | { type: 'runtimeFieldsList.closeRuntimeFieldEditor' } + | { type: 'runtimeField.add'; value: RuntimeField } + | { type: 'runtimeField.remove'; value: string } + | { type: 'runtimeField.edit'; value: NormalizedRuntimeField } | { type: 'fieldsJsonEditor.update'; value: { json: { [key: string]: any }; isValid: boolean } } | { type: 'search:update'; value: string } | { type: 'validity:update'; value: boolean }; diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/use_state_listener.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/use_state_listener.tsx index 8d039475f9cf8f..79dec9cedaf7a3 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/use_state_listener.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/use_state_listener.tsx @@ -11,8 +11,15 @@ import { MappingsConfiguration, MappingsTemplates, OnUpdateHandler, + RuntimeFields, } from './types'; -import { normalize, deNormalize, stripUndefinedValues } from './lib'; +import { + normalize, + deNormalize, + stripUndefinedValues, + normalizeRuntimeFields, + deNormalizeRuntimeFields, +} from './lib'; import { useMappingsState, useDispatch } from './mappings_state_context'; interface Args { @@ -21,6 +28,7 @@ interface Args { templates: MappingsTemplates; configuration: MappingsConfiguration; fields: { [key: string]: Field }; + runtime: RuntimeFields; }; } @@ -28,7 +36,13 @@ export const useMappingsStateListener = ({ onChange, value }: Args) => { const state = useMappingsState(); const dispatch = useDispatch(); - const parsedFieldsDefaultValue = useMemo(() => normalize(value?.fields), [value?.fields]); + const { fields: mappedFields, runtime: runtimeFields } = value ?? {}; + + const parsedFieldsDefaultValue = useMemo(() => normalize(mappedFields), [mappedFields]); + const parsedRuntimeFieldsDefaultValue = useMemo(() => normalizeRuntimeFields(runtimeFields), [ + runtimeFields, + ]); + useEffect(() => { // If we are creating a new field, but haven't entered any name // it is valid and we can byPass its form validation (that requires a "name" to be defined) @@ -50,6 +64,9 @@ export const useMappingsStateListener = ({ onChange, value }: Args) => { ? state.fieldsJsonEditor.format() : deNormalize(state.fields); + // Get the runtime fields + const runtime = deNormalizeRuntimeFields(state.runtimeFields); + const configurationData = state.configuration.data.format(); const templatesData = state.templates.data.format(); @@ -60,10 +77,16 @@ export const useMappingsStateListener = ({ onChange, value }: Args) => { }), }; + // Mapped fields if (fields && Object.keys(fields).length > 0) { output.properties = fields; } + // Runtime fields + if (runtime && Object.keys(runtime).length > 0) { + output.runtime = runtime; + } + return Object.keys(output).length > 0 ? (output as Mappings) : undefined; }, validate: async () => { @@ -118,7 +141,8 @@ export const useMappingsStateListener = ({ onChange, value }: Args) => { status: parsedFieldsDefaultValue.rootLevelFields.length === 0 ? 'creatingField' : 'idle', editor: 'default', }, + runtimeFields: parsedRuntimeFieldsDefaultValue, }, }); - }, [value, parsedFieldsDefaultValue, dispatch]); + }, [value, parsedFieldsDefaultValue, dispatch, parsedRuntimeFieldsDefaultValue]); }; diff --git a/x-pack/plugins/index_management/public/application/components/section_error.tsx b/x-pack/plugins/index_management/public/application/components/section_error.tsx index f807ef45559f1b..86acb7bf7419ac 100644 --- a/x-pack/plugins/index_management/public/application/components/section_error.tsx +++ b/x-pack/plugins/index_management/public/application/components/section_error.tsx @@ -11,6 +11,9 @@ export interface Error { cause?: string[]; message?: string; statusText?: string; + attributes?: { + cause: string[]; + }; } interface Props { @@ -20,11 +23,14 @@ interface Props { export const SectionError: React.FunctionComponent = ({ title, error, ...rest }) => { const { - cause, // wrapEsError() on the server adds a "cause" array + cause: causeRoot, // wrapEsError() on the server adds a "cause" array message, statusText, + attributes: { cause: causeAttributes } = {}, } = error; + const cause = causeAttributes ?? causeRoot; + return (
    {message || statusText}
    diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx index bbf7a04080a28a..aeb4eb793cde85 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/wizard_steps/step_mappings.tsx @@ -16,6 +16,7 @@ import { } from '@elastic/eui'; import { Forms } from '../../../../../shared_imports'; +import { useAppContext } from '../../../../app_context'; import { MappingsEditor, OnUpdateHandler, @@ -33,6 +34,7 @@ interface Props { export const StepMappings: React.FunctionComponent = React.memo( ({ defaultValue = {}, onChange, indexSettings, esDocsBase }) => { const [mappings, setMappings] = useState(defaultValue); + const { docLinks } = useAppContext(); const onMappingsEditorUpdate = useCallback( ({ isValid, getData, validate }) => { @@ -107,6 +109,7 @@ export const StepMappings: React.FunctionComponent = React.memo( value={mappings} onChange={onMappingsEditorUpdate} indexSettings={indexSettings} + docLinks={docLinks} /> diff --git a/x-pack/plugins/index_management/public/application/mount_management_section.ts b/x-pack/plugins/index_management/public/application/mount_management_section.ts index 13e25f6d29a14a..ff7fc03ef7ae60 100644 --- a/x-pack/plugins/index_management/public/application/mount_management_section.ts +++ b/x-pack/plugins/index_management/public/application/mount_management_section.ts @@ -12,7 +12,7 @@ import { UsageCollectionSetup } from 'src/plugins/usage_collection/public'; import { FleetSetup } from '../../../fleet/public'; import { PLUGIN } from '../../common/constants'; import { ExtensionsService } from '../services'; -import { IndexMgmtMetricsType, StartDependencies } from '../types'; +import { StartDependencies } from '../types'; import { AppDependencies } from './app_context'; import { breadcrumbService } from './services/breadcrumbs'; import { documentationService } from './services/documentation'; @@ -23,7 +23,7 @@ import { renderApp } from '.'; interface InternalServices { httpService: HttpService; notificationService: NotificationService; - uiMetricService: UiMetricService; + uiMetricService: UiMetricService; extensionsService: ExtensionsService; } @@ -64,6 +64,7 @@ export async function mountManagementSection( setBreadcrumbs, uiSettings, urlGenerators, + docLinks, }; const unmountAppCallback = renderApp(element, { core, dependencies: appDependencies }); diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx index 05d7e97745b9e5..ec47b2c062aa99 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_detail_panel/data_stream_detail_panel.tsx @@ -290,7 +290,7 @@ export const DataStreamDetailPanel: React.FunctionComponent = ({ - {!isLoading && !error ? ( + {!isLoading && !error && dataStream?.privileges.delete_index ? ( { const { isDeepLink } = extractQueryParams(search); + const decodedDataStreamName = attemptToURIDecode(dataStreamName); const { core: { getUrlForApp }, @@ -241,8 +242,8 @@ export const DataStreamList: React.FunctionComponent { history.push(`/${Section.DataStreams}`); diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx index c1fd33a39569cf..7a3e719d013c84 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/data_stream_table/data_stream_table.tsx @@ -162,6 +162,7 @@ export const DataStreamTable: React.FunctionComponent = ({ }, isPrimary: true, 'data-test-subj': 'deleteDataStream', + available: ({ privileges: { delete_index: deleteIndex } }: DataStream) => deleteIndex, }, ], }); @@ -188,9 +189,10 @@ export const DataStreamTable: React.FunctionComponent = ({ incremental: true, }, toolsLeft: - selection.length > 0 ? ( + selection.length > 0 && + selection.every((dataStream: DataStream) => dataStream.privileges.delete_index) ? ( setDataStreamsToDelete(selection.map(({ name }: DataStream) => name))} color="danger" > diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js index 7b09f20091110a..9e3cf1b6ed339d 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/index_table/index_table.js @@ -6,6 +6,7 @@ import React, { Component, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; +import { METRIC_TYPE } from '@kbn/analytics'; import { FormattedMessage } from '@kbn/i18n/react'; import { Route } from 'react-router-dom'; import qs from 'query-string'; @@ -265,7 +266,7 @@ export class IndexTable extends Component { { - appServices.uiMetricService.trackMetric('click', UIM_SHOW_DETAILS_CLICK); + appServices.uiMetricService.trackMetric(METRIC_TYPE.CLICK, UIM_SHOW_DETAILS_CLICK); openDetailPanel(value); }} > diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx index 29b841f3bdc7a5..a1b6da479b31eb 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/legacy_templates/template_table/template_table.tsx @@ -7,6 +7,7 @@ import React, { useState, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { METRIC_TYPE } from '@kbn/analytics'; import { EuiInMemoryTable, EuiButton, EuiLink, EuiBasicTableColumn } from '@elastic/eui'; import { ScopedHistory } from 'kibana/public'; import { UseRequestResponse, reactRouterNavigate } from '../../../../../../shared_imports'; @@ -54,7 +55,8 @@ export const LegacyTemplateTable: React.FunctionComponent = ({ {...reactRouterNavigate( history, getTemplateDetailsLink(name, Boolean(item._kbnMeta.isLegacy)), - () => uiMetricService.trackMetric('click', UIM_TEMPLATE_SHOW_DETAILS_CLICK) + () => + uiMetricService.trackMetric(METRIC_TYPE.CLICK, UIM_TEMPLATE_SHOW_DETAILS_CLICK) )} data-test-subj="templateDetailsLink" > diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx index 1b1b9ad013c375..9e8af1ebe8d317 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx @@ -7,6 +7,7 @@ import React, { useState } from 'react'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; +import { METRIC_TYPE } from '@kbn/analytics'; import { EuiCallOut, EuiFlyoutHeader, @@ -203,7 +204,7 @@ export const TemplateDetailsContent = ({ }).map((tab) => ( { - uiMetricService.trackMetric('click', tabToUiMetricMap[tab.id]); + uiMetricService.trackMetric(METRIC_TYPE.CLICK, tabToUiMetricMap[tab.id]); setActiveTab(tab.id); }} isSelected={tab.id === activeTab} diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx index 3689a875e28b25..266003c5f89495 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_list.tsx @@ -8,6 +8,7 @@ import React, { Fragment, useState, useEffect, useMemo } from 'react'; import { RouteComponentProps } from 'react-router-dom'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; +import { METRIC_TYPE } from '@kbn/analytics'; import { ScopedHistory } from 'kibana/public'; import { EuiEmptyPrompt, @@ -260,7 +261,7 @@ export const TemplateList: React.FunctionComponent { - uiMetricService.trackMetric('loaded', UIM_TEMPLATE_LIST_LOAD); + uiMetricService.trackMetric(METRIC_TYPE.LOADED, UIM_TEMPLATE_LIST_LOAD); }, [uiMetricService]); return ( diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx index 324fdc78d6e61e..4278f4f2bb9585 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_table/template_table.tsx @@ -7,6 +7,7 @@ import React, { useState, Fragment } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { METRIC_TYPE } from '@kbn/analytics'; import { EuiInMemoryTable, EuiBasicTableColumn, EuiButton, EuiLink, EuiIcon } from '@elastic/eui'; import { ScopedHistory } from 'kibana/public'; @@ -53,7 +54,7 @@ export const TemplateTable: React.FunctionComponent = ({ <> - uiMetricService.trackMetric('click', UIM_TEMPLATE_SHOW_DETAILS_CLICK) + uiMetricService.trackMetric(METRIC_TYPE.CLICK, UIM_TEMPLATE_SHOW_DETAILS_CLICK) )} data-test-subj="templateDetailsLink" > diff --git a/x-pack/plugins/index_management/public/application/services/api.ts b/x-pack/plugins/index_management/public/application/services/api.ts index 35ded3ea73d916..6df53334f7b399 100644 --- a/x-pack/plugins/index_management/public/application/services/api.ts +++ b/x-pack/plugins/index_management/public/application/services/api.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import { METRIC_TYPE } from '@kbn/analytics'; import { API_BASE_PATH, UIM_UPDATE_SETTINGS, @@ -33,7 +34,6 @@ import { UIM_TEMPLATE_SIMULATE, } from '../../../common/constants'; import { TemplateDeserialized, TemplateListItem, DataStream } from '../../../common'; -import { IndexMgmtMetricsType } from '../../types'; import { TAB_SETTINGS, TAB_MAPPING, TAB_STATS } from '../constants'; import { useRequest, sendRequest } from './use_request'; import { httpService } from './http'; @@ -41,8 +41,8 @@ import { UiMetricService } from './ui_metric'; // Temporary hack to provide the uiMetricService instance to this file. // TODO: Refactor and export an ApiService instance through the app dependencies context -let uiMetricService: UiMetricService; -export const setUiMetricService = (_uiMetricService: UiMetricService) => { +let uiMetricService: UiMetricService; +export const setUiMetricService = (_uiMetricService: UiMetricService) => { uiMetricService = _uiMetricService; }; // End hack @@ -92,7 +92,7 @@ export async function closeIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/close`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_CLOSE_MANY : UIM_INDEX_CLOSE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -103,7 +103,7 @@ export async function deleteIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/delete`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_DELETE_MANY : UIM_INDEX_DELETE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -114,7 +114,7 @@ export async function openIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/open`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_OPEN_MANY : UIM_INDEX_OPEN; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -125,7 +125,7 @@ export async function refreshIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/refresh`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_REFRESH_MANY : UIM_INDEX_REFRESH; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -136,7 +136,7 @@ export async function flushIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/flush`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_FLUSH_MANY : UIM_INDEX_FLUSH; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -150,7 +150,7 @@ export async function forcemergeIndices(indices: string[], maxNumSegments: strin }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_FORCE_MERGE_MANY : UIM_INDEX_FORCE_MERGE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -163,7 +163,7 @@ export async function clearCacheIndices(indices: string[]) { }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_CLEAR_CACHE_MANY : UIM_INDEX_CLEAR_CACHE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } export async function freezeIndices(indices: string[]) { @@ -173,7 +173,7 @@ export async function freezeIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/freeze`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_FREEZE_MANY : UIM_INDEX_FREEZE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } export async function unfreezeIndices(indices: string[]) { @@ -183,7 +183,7 @@ export async function unfreezeIndices(indices: string[]) { const response = await httpService.httpClient.post(`${API_BASE_PATH}/indices/unfreeze`, { body }); // Only track successful requests. const eventName = indices.length > 1 ? UIM_INDEX_UNFREEZE_MANY : UIM_INDEX_UNFREEZE; - uiMetricService.trackMetric('count', eventName); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, eventName); return response; } @@ -202,7 +202,7 @@ export async function updateIndexSettings(indexName: string, body: object) { } ); // Only track successful requests. - uiMetricService.trackMetric('count', UIM_UPDATE_SETTINGS); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, UIM_UPDATE_SETTINGS); return response; } @@ -249,7 +249,7 @@ export async function deleteTemplates(templates: Array<{ name: string; isLegacy? const uimActionType = templates.length > 1 ? UIM_TEMPLATE_DELETE_MANY : UIM_TEMPLATE_DELETE; - uiMetricService.trackMetric('count', uimActionType); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, uimActionType); return result; } @@ -273,7 +273,7 @@ export async function saveTemplate(template: TemplateDeserialized, isClone?: boo const uimActionType = isClone ? UIM_TEMPLATE_CLONE : UIM_TEMPLATE_CREATE; - uiMetricService.trackMetric('count', uimActionType); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, uimActionType); return result; } @@ -286,7 +286,7 @@ export async function updateTemplate(template: TemplateDeserialized) { body: JSON.stringify(template), }); - uiMetricService.trackMetric('count', UIM_TEMPLATE_UPDATE); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, UIM_TEMPLATE_UPDATE); return result; } @@ -297,7 +297,7 @@ export function simulateIndexTemplate(template: { [key: string]: any }) { method: 'post', body: JSON.stringify(template), }).then((result) => { - uiMetricService.trackMetric('count', UIM_TEMPLATE_SIMULATE); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, UIM_TEMPLATE_SIMULATE); return result; }); } diff --git a/x-pack/plugins/index_management/public/application/services/documentation.ts b/x-pack/plugins/index_management/public/application/services/documentation.ts index c52b958d94ae18..e0aac742499be0 100644 --- a/x-pack/plugins/index_management/public/application/services/documentation.ts +++ b/x-pack/plugins/index_management/public/application/services/documentation.ts @@ -211,6 +211,10 @@ class DocumentationService { return `${this.esDocsBase}/enabled.html`; } + public getRuntimeFields() { + return `${this.esDocsBase}/runtime.html`; + } + public getWellKnownTextLink() { return 'http://docs.opengeospatial.org/is/12-063r5/12-063r5.html'; } diff --git a/x-pack/plugins/index_management/public/application/services/ui_metric.ts b/x-pack/plugins/index_management/public/application/services/ui_metric.ts index 73d2ef5aced861..4f4176e279e076 100644 --- a/x-pack/plugins/index_management/public/application/services/ui_metric.ts +++ b/x-pack/plugins/index_management/public/application/services/ui_metric.ts @@ -3,14 +3,12 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { UiStatsMetricType } from '@kbn/analytics'; - +import { UiCounterMetricType } from '@kbn/analytics'; import { UsageCollectionSetup } from '../../../../../../src/plugins/usage_collection/public'; -import { IndexMgmtMetricsType } from '../../types'; -let uiMetricService: UiMetricService; +let uiMetricService: UiMetricService; -export class UiMetricService { +export class UiMetricService { private appName: string; private usageCollection: UsageCollectionSetup | undefined; @@ -22,16 +20,12 @@ export class UiMetricService { this.usageCollection = usageCollection; } - private track(type: T, name: string) { + public trackMetric(type: UiCounterMetricType, eventName: string) { if (!this.usageCollection) { // Usage collection might have been disabled in Kibana config. return; } - this.usageCollection.reportUiStats(this.appName, type as UiStatsMetricType, name); - } - - public trackMetric(type: T, eventName: string) { - return this.track(type, eventName); + return this.usageCollection.reportUiCounter(this.appName, type, eventName); } } @@ -42,7 +36,7 @@ export class UiMetricService { * TODO: Refactor the api.ts (convert it to a class with setup()) and detail_panel.ts (reducer) to explicitely declare their dependency on the UiMetricService * @param instance UiMetricService instance from our plugin.ts setup() */ -export const setUiMetricServiceInstance = (instance: UiMetricService) => { +export const setUiMetricServiceInstance = (instance: UiMetricService) => { uiMetricService = instance; }; diff --git a/x-pack/plugins/index_management/public/application/store/reducers/detail_panel.js b/x-pack/plugins/index_management/public/application/store/reducers/detail_panel.js index d28623636f5a82..d073b962b4775e 100644 --- a/x-pack/plugins/index_management/public/application/store/reducers/detail_panel.js +++ b/x-pack/plugins/index_management/public/application/store/reducers/detail_panel.js @@ -26,6 +26,7 @@ import { updateIndexSettingsError, } from '../actions/update_index_settings'; import { deleteIndicesSuccess } from '../actions/delete_indices'; +import { METRIC_TYPE } from '@kbn/analytics'; const defaultState = {}; @@ -53,7 +54,7 @@ export const getDetailPanelReducer = (uiMetricService) => }; if (panelTypeToUiMetricMap[panelType]) { - uiMetricService.trackMetric('count', panelTypeToUiMetricMap[panelType]); + uiMetricService.trackMetric(METRIC_TYPE.COUNT, panelTypeToUiMetricMap[panelType]); } return { diff --git a/x-pack/plugins/index_management/public/plugin.ts b/x-pack/plugins/index_management/public/plugin.ts index 58103688e6103f..9eeeaa9d3c723e 100644 --- a/x-pack/plugins/index_management/public/plugin.ts +++ b/x-pack/plugins/index_management/public/plugin.ts @@ -16,16 +16,11 @@ import { UiMetricService } from './application/services/ui_metric'; import { setExtensionsService } from './application/store/selectors'; import { setUiMetricService } from './application/services/api'; -import { - IndexManagementPluginSetup, - IndexMgmtMetricsType, - SetupDependencies, - StartDependencies, -} from './types'; +import { IndexManagementPluginSetup, SetupDependencies, StartDependencies } from './types'; import { ExtensionsService } from './services'; export class IndexMgmtUIPlugin { - private uiMetricService = new UiMetricService(UIM_APP_NAME); + private uiMetricService = new UiMetricService(UIM_APP_NAME); private extensionsService = new ExtensionsService(); constructor() { diff --git a/x-pack/plugins/index_management/public/types.ts b/x-pack/plugins/index_management/public/types.ts index ee763ac83697c9..90ecbd76fe008f 100644 --- a/x-pack/plugins/index_management/public/types.ts +++ b/x-pack/plugins/index_management/public/types.ts @@ -10,8 +10,6 @@ import { UsageCollectionSetup } from '../../../../src/plugins/usage_collection/p import { ManagementSetup } from '../../../../src/plugins/management/public'; import { SharePluginStart } from '../../../../src/plugins/share/public'; -export type IndexMgmtMetricsType = 'loaded' | 'click' | 'count'; - export interface IndexManagementPluginSetup { extensionsService: ExtensionsSetup; } diff --git a/x-pack/plugins/index_management/server/client/elasticsearch.ts b/x-pack/plugins/index_management/server/client/elasticsearch.ts index ed5ede07479ca5..8b7749335131ea 100644 --- a/x-pack/plugins/index_management/server/client/elasticsearch.ts +++ b/x-pack/plugins/index_management/server/client/elasticsearch.ts @@ -11,28 +11,6 @@ export const elasticsearchJsPlugin = (Client: any, config: any, components: any) const dataManagement = Client.prototype.dataManagement.prototype; // Data streams - dataManagement.getDataStreams = ca({ - urls: [ - { - fmt: '/_data_stream', - }, - ], - method: 'GET', - }); - - dataManagement.getDataStream = ca({ - urls: [ - { - fmt: '/_data_stream/<%=name%>', - req: { - name: { - type: 'string', - }, - }, - }, - ], - method: 'GET', - }); // We don't allow the user to create a data stream in the UI or API. We're just adding this here // to enable the API integration tests. diff --git a/x-pack/plugins/index_management/server/plugin.ts b/x-pack/plugins/index_management/server/plugin.ts index ae9633f3e22b98..99facacacfe4cd 100644 --- a/x-pack/plugins/index_management/server/plugin.ts +++ b/x-pack/plugins/index_management/server/plugin.ts @@ -24,7 +24,7 @@ import { PLUGIN } from '../common'; import { Dependencies } from './types'; import { ApiRoutes } from './routes'; import { License, IndexDataEnricher } from './services'; -import { isEsError } from './shared_imports'; +import { isEsError, handleEsError, parseEsError } from './shared_imports'; import { elasticsearchJsPlugin } from './client/elasticsearch'; export interface DataManagementContext { @@ -110,6 +110,8 @@ export class IndexMgmtServerPlugin implements Plugin { indexDataEnricher: mockedIndexDataEnricher, lib: { isEsError: jest.fn(), + parseEsError: jest.fn(), + handleEsError: jest.fn(), }, }); @@ -123,6 +125,8 @@ describe('GET privileges', () => { indexDataEnricher: mockedIndexDataEnricher, lib: { isEsError: jest.fn(), + parseEsError: jest.fn(), + handleEsError: jest.fn(), }, }); diff --git a/x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts b/x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts index fa93d9bd0c563b..d19383d892cbd4 100644 --- a/x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts @@ -6,122 +6,189 @@ import { schema, TypeOf } from '@kbn/config-schema'; +import { ElasticsearchClient } from 'kibana/server'; import { deserializeDataStream, deserializeDataStreamList } from '../../../../common/lib'; +import { DataStreamFromEs } from '../../../../common/types'; import { RouteDependencies } from '../../../types'; import { addBasePath } from '../index'; -const querySchema = schema.object({ - includeStats: schema.maybe(schema.oneOf([schema.literal('true'), schema.literal('false')])), -}); +interface PrivilegesFromEs { + username: string; + has_all_requested: boolean; + cluster: Record; + index: Record>; + application: Record; +} + +interface StatsFromEs { + data_stream: string; + store_size: string; + maximum_timestamp: number; +} -export function registerGetAllRoute({ router, license, lib: { isEsError } }: RouteDependencies) { +const enhanceDataStreams = ({ + dataStreams, + dataStreamsStats, + dataStreamsPrivileges, +}: { + dataStreams: DataStreamFromEs[]; + dataStreamsStats?: StatsFromEs[]; + dataStreamsPrivileges?: PrivilegesFromEs; +}): DataStreamFromEs[] => { + return dataStreams.map((dataStream: DataStreamFromEs) => { + let enhancedDataStream = { ...dataStream }; + + if (dataStreamsStats) { + // eslint-disable-next-line @typescript-eslint/naming-convention + const { store_size, maximum_timestamp } = + dataStreamsStats.find( + ({ data_stream: statsName }: { data_stream: string }) => statsName === dataStream.name + ) || {}; + + enhancedDataStream = { + ...enhancedDataStream, + store_size, + maximum_timestamp, + }; + } + + enhancedDataStream = { + ...enhancedDataStream, + privileges: { + delete_index: dataStreamsPrivileges + ? dataStreamsPrivileges.index[dataStream.name].delete_index + : true, + }, + }; + + return enhancedDataStream; + }); +}; + +const getDataStreamsStats = (client: ElasticsearchClient, name = '*') => { + return client.transport.request({ + path: `/_data_stream/${encodeURIComponent(name)}/_stats`, + method: 'GET', + querystring: { + human: true, + }, + }); +}; + +const getDataStreamsPrivileges = (client: ElasticsearchClient, names: string[]) => { + return client.security.hasPrivileges({ + body: { + index: [ + { + names, + privileges: ['delete_index'], + }, + ], + }, + }); +}; + +export function registerGetAllRoute({ + router, + license, + lib: { handleEsError }, + config, +}: RouteDependencies) { + const querySchema = schema.object({ + includeStats: schema.maybe(schema.oneOf([schema.literal('true'), schema.literal('false')])), + }); router.get( { path: addBasePath('/data_streams'), validate: { query: querySchema } }, - license.guardApiRoute(async (ctx, req, res) => { - const { callAsCurrentUser } = ctx.dataManagement!.client; + license.guardApiRoute(async (ctx, req, response) => { + const { asCurrentUser } = ctx.core.elasticsearch.client; const includeStats = (req.query as TypeOf).includeStats === 'true'; try { - const { data_streams: dataStreams } = await callAsCurrentUser( - 'dataManagement.getDataStreams' - ); - - if (includeStats) { - const { - data_streams: dataStreamsStats, - } = await ctx.core.elasticsearch.legacy.client.callAsCurrentUser('transport.request', { - path: '/_data_stream/*/_stats', - method: 'GET', - query: { - human: true, - }, - }); + let { + body: { data_streams: dataStreams }, + } = await asCurrentUser.indices.getDataStream(); - // Merge stats into data streams. - for (let i = 0; i < dataStreams.length; i++) { - const dataStream = dataStreams[i]; + let dataStreamsStats; + let dataStreamsPrivileges; - // eslint-disable-next-line @typescript-eslint/naming-convention - const { store_size, maximum_timestamp } = dataStreamsStats.find( - ({ data_stream: statsName }: { data_stream: string }) => statsName === dataStream.name - ); - - dataStreams[i] = { - ...dataStream, - store_size, - maximum_timestamp, - }; - } + if (includeStats) { + ({ + body: { data_streams: dataStreamsStats }, + } = await getDataStreamsStats(asCurrentUser)); } - return res.ok({ body: deserializeDataStreamList(dataStreams) }); - } catch (error) { - if (isEsError(error)) { - return res.customError({ - statusCode: error.statusCode, - body: error, - }); + if (config.isSecurityEnabled() && dataStreams.length > 0) { + ({ body: dataStreamsPrivileges } = await getDataStreamsPrivileges( + asCurrentUser, + dataStreams.map((dataStream: DataStreamFromEs) => dataStream.name) + )); } - return res.internalError({ body: error }); + dataStreams = enhanceDataStreams({ + dataStreams, + dataStreamsStats, + dataStreamsPrivileges, + }); + + return response.ok({ body: deserializeDataStreamList(dataStreams) }); + } catch (error) { + return handleEsError({ error, response }); } }) ); } -export function registerGetOneRoute({ router, license, lib: { isEsError } }: RouteDependencies) { +export function registerGetOneRoute({ + router, + license, + lib: { handleEsError }, + config, +}: RouteDependencies) { const paramsSchema = schema.object({ name: schema.string(), }); - router.get( { path: addBasePath('/data_streams/{name}'), validate: { params: paramsSchema }, }, - license.guardApiRoute(async (ctx, req, res) => { + license.guardApiRoute(async (ctx, req, response) => { const { name } = req.params as TypeOf; - const { callAsCurrentUser } = ctx.dataManagement!.client; + const { asCurrentUser } = ctx.core.elasticsearch.client; try { const [ - { data_streams: dataStream }, - { data_streams: dataStreamsStats }, + { + body: { data_streams: dataStreams }, + }, + { + body: { data_streams: dataStreamsStats }, + }, ] = await Promise.all([ - callAsCurrentUser('dataManagement.getDataStream', { - name, - }), - ctx.core.elasticsearch.legacy.client.callAsCurrentUser('transport.request', { - path: `/_data_stream/${encodeURIComponent(name)}/_stats`, - method: 'GET', - query: { - human: true, - }, - }), + asCurrentUser.indices.getDataStream({ name }), + getDataStreamsStats(asCurrentUser, name), ]); - if (dataStream[0]) { - // eslint-disable-next-line @typescript-eslint/naming-convention - const { store_size, maximum_timestamp } = dataStreamsStats[0]; - dataStream[0] = { - ...dataStream[0], - store_size, - maximum_timestamp, - }; - const body = deserializeDataStream(dataStream[0]); - return res.ok({ body }); - } + if (dataStreams[0]) { + let dataStreamsPrivileges; + if (config.isSecurityEnabled()) { + ({ body: dataStreamsPrivileges } = await getDataStreamsPrivileges(asCurrentUser, [ + dataStreams[0].name, + ])); + } - return res.notFound(); - } catch (e) { - if (isEsError(e)) { - return res.customError({ - statusCode: e.statusCode, - body: e, + const enhancedDataStreams = enhanceDataStreams({ + dataStreams, + dataStreamsStats, + dataStreamsPrivileges, }); + const body = deserializeDataStream(enhancedDataStreams[0]); + return response.ok({ body }); } - // Case: default - return res.internalError({ body: e }); + + return response.notFound(); + } catch (error) { + return handleEsError({ error, response }); } }) ); diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts index 4b735c941be709..46004c64d158dc 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts @@ -51,9 +51,13 @@ export function registerCreateRoute({ router, license, lib }: RouteDependencies) return res.ok({ body: response }); } catch (e) { if (lib.isEsError(e)) { + const error = lib.parseEsError(e.response); return res.customError({ statusCode: e.statusCode, - body: e, + body: { + message: error.message, + attributes: error, + }, }); } // Case: default diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts index 9d078e135fd52e..322f15914b7351 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts @@ -29,9 +29,13 @@ export function registerSimulateRoute({ router, license, lib }: RouteDependencie return res.ok({ body: templatePreview }); } catch (e) { if (lib.isEsError(e)) { + const error = lib.parseEsError(e.response); return res.customError({ statusCode: e.statusCode, - body: e, + body: { + message: error.message, + attributes: error, + }, }); } // Case: default diff --git a/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts b/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts index 3055321d6b5942..9ad751023db919 100644 --- a/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts +++ b/x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts @@ -44,9 +44,13 @@ export function registerUpdateRoute({ router, license, lib }: RouteDependencies) return res.ok({ body: response }); } catch (e) { if (lib.isEsError(e)) { + const error = lib.parseEsError(e.response); return res.customError({ statusCode: e.statusCode, - body: e, + body: { + message: error.message, + attributes: error, + }, }); } // Case: default diff --git a/x-pack/plugins/index_management/server/shared_imports.ts b/x-pack/plugins/index_management/server/shared_imports.ts index 454beda5394c71..f7b513a8a240c6 100644 --- a/x-pack/plugins/index_management/server/shared_imports.ts +++ b/x-pack/plugins/index_management/server/shared_imports.ts @@ -4,4 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -export { isEsError } from '../../../../src/plugins/es_ui_shared/server'; +export { + isEsError, + parseEsError, + handleEsError, +} from '../../../../src/plugins/es_ui_shared/server'; diff --git a/x-pack/plugins/index_management/server/types.ts b/x-pack/plugins/index_management/server/types.ts index 7aa91629f0a470..16a6b43af85123 100644 --- a/x-pack/plugins/index_management/server/types.ts +++ b/x-pack/plugins/index_management/server/types.ts @@ -8,7 +8,7 @@ import { PluginSetupContract as FeaturesPluginSetup } from '../../features/serve import { LicensingPluginSetup } from '../../licensing/server'; import { SecurityPluginSetup } from '../../security/server'; import { License, IndexDataEnricher } from './services'; -import { isEsError } from './shared_imports'; +import { isEsError, parseEsError, handleEsError } from './shared_imports'; export interface Dependencies { security: SecurityPluginSetup; @@ -25,6 +25,8 @@ export interface RouteDependencies { indexDataEnricher: IndexDataEnricher; lib: { isEsError: typeof isEsError; + parseEsError: typeof parseEsError; + handleEsError: typeof handleEsError; }; } diff --git a/x-pack/plugins/infra/common/http_api/host_details/process_list.ts b/x-pack/plugins/infra/common/http_api/host_details/process_list.ts index 4b4a0a54b9d130..3141d100307c42 100644 --- a/x-pack/plugins/infra/common/http_api/host_details/process_list.ts +++ b/x-pack/plugins/infra/common/http_api/host_details/process_list.ts @@ -5,16 +5,139 @@ */ import * as rt from 'io-ts'; -import { MetricsAPITimerangeRT, MetricsAPISeriesRT } from '../metrics_api'; +import { MetricsAPISeriesRT, MetricsAPIRow } from '../metrics_api'; + +const AggValueRT = rt.type({ + value: rt.number, +}); export const ProcessListAPIRequestRT = rt.type({ hostTerm: rt.record(rt.string, rt.string), - timerange: MetricsAPITimerangeRT, + timefield: rt.string, indexPattern: rt.string, + to: rt.number, + sortBy: rt.type({ + name: rt.string, + isAscending: rt.boolean, + }), + searchFilter: rt.array(rt.record(rt.string, rt.record(rt.string, rt.unknown))), }); -export const ProcessListAPIResponseRT = rt.array(MetricsAPISeriesRT); +export const ProcessListAPIQueryAggregationRT = rt.type({ + summaryEvent: rt.type({ + summary: rt.type({ + hits: rt.type({ + hits: rt.array( + rt.type({ + _source: rt.type({ + system: rt.type({ + process: rt.type({ + summary: rt.record(rt.string, rt.number), + }), + }), + }), + }) + ), + }), + }), + }), + processes: rt.type({ + filteredProcs: rt.type({ + buckets: rt.array( + rt.type({ + key: rt.string, + cpu: AggValueRT, + memory: AggValueRT, + startTime: rt.type({ + value_as_string: rt.string, + }), + meta: rt.type({ + hits: rt.type({ + hits: rt.array( + rt.type({ + _source: rt.type({ + process: rt.type({ + pid: rt.number, + }), + system: rt.type({ + process: rt.type({ + state: rt.string, + }), + }), + user: rt.type({ + name: rt.string, + }), + }), + }) + ), + }), + }), + }) + ), + }), + }), +}); + +export const ProcessListAPIResponseRT = rt.type({ + processList: rt.array( + rt.type({ + cpu: rt.number, + memory: rt.number, + startTime: rt.number, + pid: rt.number, + state: rt.string, + user: rt.string, + command: rt.string, + }) + ), + summary: rt.record(rt.string, rt.number), +}); + +export type ProcessListAPIQueryAggregation = rt.TypeOf; export type ProcessListAPIRequest = rt.TypeOf; export type ProcessListAPIResponse = rt.TypeOf; + +export const ProcessListAPIChartRequestRT = rt.type({ + hostTerm: rt.record(rt.string, rt.string), + timefield: rt.string, + indexPattern: rt.string, + to: rt.number, + command: rt.string, +}); + +export const ProcessListAPIChartQueryAggregationRT = rt.type({ + process: rt.type({ + filteredProc: rt.type({ + buckets: rt.array( + rt.type({ + timeseries: rt.type({ + buckets: rt.array( + rt.type({ + key: rt.number, + memory: AggValueRT, + cpu: AggValueRT, + }) + ), + }), + }) + ), + }), + }), +}); + +export const ProcessListAPIChartResponseRT = rt.type({ + cpu: MetricsAPISeriesRT, + memory: MetricsAPISeriesRT, +}); + +export type ProcessListAPIChartQueryAggregation = rt.TypeOf< + typeof ProcessListAPIChartQueryAggregationRT +>; + +export type ProcessListAPIChartRequest = rt.TypeOf; + +export type ProcessListAPIChartResponse = rt.TypeOf; + +export type ProcessListAPIRow = MetricsAPIRow; diff --git a/x-pack/plugins/infra/common/http_api/log_entries/common.ts b/x-pack/plugins/infra/common/http_api/log_entries/common.ts deleted file mode 100644 index 0b312223220071..00000000000000 --- a/x-pack/plugins/infra/common/http_api/log_entries/common.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import * as rt from 'io-ts'; - -export const logEntriesCursorRT = rt.type({ - time: rt.number, - tiebreaker: rt.number, -}); -export type LogEntriesCursor = rt.TypeOf; diff --git a/x-pack/plugins/infra/common/http_api/log_entries/entries.ts b/x-pack/plugins/infra/common/http_api/log_entries/entries.ts index 48790c3faca529..31bc62f48791a5 100644 --- a/x-pack/plugins/infra/common/http_api/log_entries/entries.ts +++ b/x-pack/plugins/infra/common/http_api/log_entries/entries.ts @@ -5,8 +5,9 @@ */ import * as rt from 'io-ts'; +import { logEntryCursorRT } from '../../log_entry'; import { jsonArrayRT } from '../../typed_json'; -import { logEntriesCursorRT } from './common'; +import { logSourceColumnConfigurationRT } from '../log_sources'; export const LOG_ENTRIES_PATH = '/api/log_entries/entries'; @@ -19,22 +20,23 @@ export const logEntriesBaseRequestRT = rt.intersection([ rt.partial({ query: rt.union([rt.string, rt.null]), size: rt.number, + columns: rt.array(logSourceColumnConfigurationRT), }), ]); export const logEntriesBeforeRequestRT = rt.intersection([ logEntriesBaseRequestRT, - rt.type({ before: rt.union([logEntriesCursorRT, rt.literal('last')]) }), + rt.type({ before: rt.union([logEntryCursorRT, rt.literal('last')]) }), ]); export const logEntriesAfterRequestRT = rt.intersection([ logEntriesBaseRequestRT, - rt.type({ after: rt.union([logEntriesCursorRT, rt.literal('first')]) }), + rt.type({ after: rt.union([logEntryCursorRT, rt.literal('first')]) }), ]); export const logEntriesCenteredRequestRT = rt.intersection([ logEntriesBaseRequestRT, - rt.type({ center: logEntriesCursorRT }), + rt.type({ center: logEntryCursorRT }), ]); export const logEntriesRequestRT = rt.union([ @@ -83,7 +85,7 @@ export const logEntryContextRT = rt.union([ export const logEntryRT = rt.type({ id: rt.string, - cursor: logEntriesCursorRT, + cursor: logEntryCursorRT, columns: rt.array(logColumnRT), context: logEntryContextRT, }); @@ -102,8 +104,8 @@ export const logEntriesResponseRT = rt.type({ data: rt.intersection([ rt.type({ entries: rt.array(logEntryRT), - topCursor: rt.union([logEntriesCursorRT, rt.null]), - bottomCursor: rt.union([logEntriesCursorRT, rt.null]), + topCursor: rt.union([logEntryCursorRT, rt.null]), + bottomCursor: rt.union([logEntryCursorRT, rt.null]), }), rt.partial({ hasMoreBefore: rt.boolean, diff --git a/x-pack/plugins/infra/common/http_api/log_entries/highlights.ts b/x-pack/plugins/infra/common/http_api/log_entries/highlights.ts index 811cf85db88833..648da43134a276 100644 --- a/x-pack/plugins/infra/common/http_api/log_entries/highlights.ts +++ b/x-pack/plugins/infra/common/http_api/log_entries/highlights.ts @@ -5,6 +5,7 @@ */ import * as rt from 'io-ts'; +import { logEntryCursorRT } from '../../log_entry'; import { logEntriesBaseRequestRT, logEntriesBeforeRequestRT, @@ -12,7 +13,6 @@ import { logEntriesCenteredRequestRT, logEntryRT, } from './entries'; -import { logEntriesCursorRT } from './common'; export const LOG_ENTRIES_HIGHLIGHTS_PATH = '/api/log_entries/highlights'; @@ -58,8 +58,8 @@ export const logEntriesHighlightsResponseRT = rt.type({ entries: rt.array(logEntryRT), }), rt.type({ - topCursor: logEntriesCursorRT, - bottomCursor: logEntriesCursorRT, + topCursor: logEntryCursorRT, + bottomCursor: logEntryCursorRT, entries: rt.array(logEntryRT), }), ]) diff --git a/x-pack/plugins/infra/common/http_api/log_entries/index.ts b/x-pack/plugins/infra/common/http_api/log_entries/index.ts index 490f295cbff68d..9e34c1fc911997 100644 --- a/x-pack/plugins/infra/common/http_api/log_entries/index.ts +++ b/x-pack/plugins/infra/common/http_api/log_entries/index.ts @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -export * from './common'; export * from './entries'; export * from './highlights'; -export * from './item'; export * from './summary'; export * from './summary_highlights'; diff --git a/x-pack/plugins/infra/common/http_api/log_entries/item.ts b/x-pack/plugins/infra/common/http_api/log_entries/item.ts deleted file mode 100644 index 5f9457b8228aca..00000000000000 --- a/x-pack/plugins/infra/common/http_api/log_entries/item.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import * as rt from 'io-ts'; -import { logEntriesCursorRT } from './common'; - -export const LOG_ENTRIES_ITEM_PATH = '/api/log_entries/item'; - -export const logEntriesItemRequestRT = rt.type({ - sourceId: rt.string, - id: rt.string, -}); - -export type LogEntriesItemRequest = rt.TypeOf; - -const logEntriesItemFieldRT = rt.type({ field: rt.string, value: rt.array(rt.string) }); -const logEntriesItemRT = rt.type({ - id: rt.string, - index: rt.string, - fields: rt.array(logEntriesItemFieldRT), - key: logEntriesCursorRT, -}); -export const logEntriesItemResponseRT = rt.type({ - data: logEntriesItemRT, -}); - -export type LogEntriesItemField = rt.TypeOf; -export type LogEntriesItem = rt.TypeOf; -export type LogEntriesItemResponse = rt.TypeOf; diff --git a/x-pack/plugins/infra/common/http_api/log_entries/summary_highlights.ts b/x-pack/plugins/infra/common/http_api/log_entries/summary_highlights.ts index 30222cd71bbdea..7da1e7bc71c798 100644 --- a/x-pack/plugins/infra/common/http_api/log_entries/summary_highlights.ts +++ b/x-pack/plugins/infra/common/http_api/log_entries/summary_highlights.ts @@ -5,8 +5,8 @@ */ import * as rt from 'io-ts'; +import { logEntryCursorRT } from '../../log_entry'; import { logEntriesSummaryRequestRT, logEntriesSummaryBucketRT } from './summary'; -import { logEntriesCursorRT } from './common'; export const LOG_ENTRIES_SUMMARY_HIGHLIGHTS_PATH = '/api/log_entries/summary_highlights'; @@ -24,7 +24,7 @@ export type LogEntriesSummaryHighlightsRequest = rt.TypeOf< export const logEntriesSummaryHighlightsBucketRT = rt.intersection([ logEntriesSummaryBucketRT, rt.type({ - representativeKey: logEntriesCursorRT, + representativeKey: logEntryCursorRT, }), ]); diff --git a/x-pack/plugins/infra/common/http_api/log_sources/log_source_configuration.ts b/x-pack/plugins/infra/common/http_api/log_sources/log_source_configuration.ts index 3fc42b661ddab8..7581e29692356f 100644 --- a/x-pack/plugins/infra/common/http_api/log_sources/log_source_configuration.ts +++ b/x-pack/plugins/infra/common/http_api/log_sources/log_source_configuration.ts @@ -48,7 +48,7 @@ const logSourceFieldColumnConfigurationRT = rt.strict({ ]), }); -const logSourceColumnConfigurationRT = rt.union([ +export const logSourceColumnConfigurationRT = rt.union([ logSourceTimestampColumnConfigurationRT, logSourceMessageColumnConfigurationRT, logSourceFieldColumnConfigurationRT, diff --git a/x-pack/plugins/infra/common/http_api/metadata_api.ts b/x-pack/plugins/infra/common/http_api/metadata_api.ts index 5ee96b479be8ee..41b599c310419a 100644 --- a/x-pack/plugins/infra/common/http_api/metadata_api.ts +++ b/x-pack/plugins/infra/common/http_api/metadata_api.ts @@ -29,10 +29,15 @@ export const InfraMetadataOSRT = rt.partial({ name: rt.string, platform: rt.string, version: rt.string, + build: rt.string, }); export const InfraMetadataHostRT = rt.partial({ name: rt.string, + hostname: rt.string, + id: rt.string, + ip: rt.array(rt.string), + mac: rt.array(rt.string), os: InfraMetadataOSRT, architecture: rt.string, containerized: rt.boolean, @@ -43,25 +48,40 @@ export const InfraMetadataInstanceRT = rt.partial({ name: rt.string, }); +export const InfraMetadataAccountRT = rt.partial({ + id: rt.string, + name: rt.string, +}); + export const InfraMetadataProjectRT = rt.partial({ id: rt.string, }); export const InfraMetadataMachineRT = rt.partial({ interface: rt.string, + type: rt.string, }); export const InfraMetadataCloudRT = rt.partial({ instance: InfraMetadataInstanceRT, provider: rt.string, + account: InfraMetadataAccountRT, availability_zone: rt.string, project: InfraMetadataProjectRT, machine: InfraMetadataMachineRT, + region: rt.string, +}); + +export const InfraMetadataAgentRT = rt.partial({ + id: rt.string, + version: rt.string, + policy: rt.string, }); export const InfraMetadataInfoRT = rt.partial({ cloud: InfraMetadataCloudRT, host: InfraMetadataHostRT, + agent: InfraMetadataAgentRT, }); const InfraMetadataRequiredRT = rt.type({ diff --git a/x-pack/plugins/infra/common/log_entry/index.ts b/x-pack/plugins/infra/common/log_entry/index.ts index 66cc5108b66923..0654735499fab5 100644 --- a/x-pack/plugins/infra/common/log_entry/index.ts +++ b/x-pack/plugins/infra/common/log_entry/index.ts @@ -5,3 +5,4 @@ */ export * from './log_entry'; +export * from './log_entry_cursor'; diff --git a/x-pack/plugins/infra/common/log_entry/log_entry_cursor.ts b/x-pack/plugins/infra/common/log_entry/log_entry_cursor.ts new file mode 100644 index 00000000000000..280403dd5438d4 --- /dev/null +++ b/x-pack/plugins/infra/common/log_entry/log_entry_cursor.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; +import { decodeOrThrow } from '../runtime_types'; + +export const logEntryCursorRT = rt.type({ + time: rt.number, + tiebreaker: rt.number, +}); + +export type LogEntryCursor = rt.TypeOf; + +export const getLogEntryCursorFromHit = (hit: { sort: [number, number] }) => + decodeOrThrow(logEntryCursorRT)({ + time: hit.sort[0], + tiebreaker: hit.sort[1], + }); diff --git a/x-pack/plugins/infra/common/runtime_types.ts b/x-pack/plugins/infra/common/runtime_types.ts index a8d5cd8693a3da..a26121a5dd2255 100644 --- a/x-pack/plugins/infra/common/runtime_types.ts +++ b/x-pack/plugins/infra/common/runtime_types.ts @@ -7,16 +7,41 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { pipe } from 'fp-ts/lib/pipeable'; -import { Errors, Type } from 'io-ts'; -import { failure } from 'io-ts/lib/PathReporter'; -import { RouteValidationFunction } from 'kibana/server'; +import { Context, Errors, IntersectionType, Type, UnionType, ValidationError } from 'io-ts'; +import type { RouteValidationFunction } from 'kibana/server'; type ErrorFactory = (message: string) => Error; +const getErrorPath = ([first, ...rest]: Context): string[] => { + if (typeof first === 'undefined') { + return []; + } else if (first.type instanceof IntersectionType) { + const [, ...next] = rest; + return getErrorPath(next); + } else if (first.type instanceof UnionType) { + const [, ...next] = rest; + return [first.key, ...getErrorPath(next)]; + } + + return [first.key, ...getErrorPath(rest)]; +}; + +const getErrorType = ({ context }: ValidationError) => + context[context.length - 1]?.type?.name ?? 'unknown'; + +const formatError = (error: ValidationError) => + error.message ?? + `in ${getErrorPath(error.context).join('/')}: ${JSON.stringify( + error.value + )} does not match expected type ${getErrorType(error)}`; + +const formatErrors = (errors: ValidationError[]) => + `Failed to validate: \n${errors.map((error) => ` ${formatError(error)}`).join('\n')}`; + export const createPlainError = (message: string) => new Error(message); export const throwErrors = (createError: ErrorFactory) => (errors: Errors) => { - throw createError(failure(errors).join('\n')); + throw createError(formatErrors(errors)); }; export const decodeOrThrow = ( @@ -33,7 +58,7 @@ export const createValidationFunction = pipe( runtimeType.decode(inputValue), fold>( - (errors: Errors) => badRequest(failure(errors).join('\n')), + (errors: Errors) => badRequest(formatErrors(errors)), (result: DecodedValue) => ok(result) ) ); diff --git a/x-pack/plugins/infra/common/search_strategies/common/errors.ts b/x-pack/plugins/infra/common/search_strategies/common/errors.ts new file mode 100644 index 00000000000000..4f7954c09c48b1 --- /dev/null +++ b/x-pack/plugins/infra/common/search_strategies/common/errors.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; + +const genericErrorRT = rt.type({ + type: rt.literal('generic'), + message: rt.string, +}); + +const shardFailureErrorRT = rt.type({ + type: rt.literal('shardFailure'), + shardInfo: rt.type({ + shard: rt.number, + index: rt.string, + node: rt.string, + }), + message: rt.string, +}); + +export const searchStrategyErrorRT = rt.union([genericErrorRT, shardFailureErrorRT]); + +export type SearchStrategyError = rt.TypeOf; diff --git a/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts new file mode 100644 index 00000000000000..af6bd203f980ea --- /dev/null +++ b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; +import { logEntryCursorRT } from '../../log_entry'; +import { jsonArrayRT } from '../../typed_json'; +import { searchStrategyErrorRT } from '../common/errors'; + +export const LOG_ENTRY_SEARCH_STRATEGY = 'infra-log-entry'; + +export const logEntrySearchRequestParamsRT = rt.type({ + sourceId: rt.string, + logEntryId: rt.string, +}); + +export type LogEntrySearchRequestParams = rt.TypeOf; + +const logEntryFieldRT = rt.type({ + field: rt.string, + value: jsonArrayRT, +}); + +export type LogEntryField = rt.TypeOf; + +export const logEntryRT = rt.type({ + id: rt.string, + index: rt.string, + fields: rt.array(logEntryFieldRT), + key: logEntryCursorRT, +}); + +export type LogEntry = rt.TypeOf; + +export const logEntrySearchResponsePayloadRT = rt.intersection([ + rt.type({ + data: rt.union([logEntryRT, rt.null]), + }), + rt.partial({ + errors: rt.array(searchStrategyErrorRT), + }), +]); + +export type LogEntrySearchResponsePayload = rt.TypeOf; diff --git a/x-pack/plugins/infra/jest.config.js b/x-pack/plugins/infra/jest.config.js new file mode 100644 index 00000000000000..507f94a2d6685c --- /dev/null +++ b/x-pack/plugins/infra/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/infra'], +}; diff --git a/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx b/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx index 7b15acfb6c4e2a..4bf61a5a269f00 100644 --- a/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx +++ b/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx @@ -3,7 +3,6 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ -import { HttpSetup } from 'kibana/public'; import { omit } from 'lodash'; import React, { useCallback, useMemo, useState } from 'react'; import { @@ -20,6 +19,7 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { i18n } from '@kbn/i18n'; +import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import { FORMATTERS } from '../../../../common/formatters'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { ValidationResult } from '../../../../../triggers_actions_ui/public/types'; @@ -35,7 +35,6 @@ interface Props { alertInterval: string; alertThrottle: string; alertType: PreviewableAlertTypes; - fetch: HttpSetup['fetch']; alertParams: { criteria: any[]; sourceId: string } & Record; validate: (params: any) => ValidationResult; showNoDataResults?: boolean; @@ -47,12 +46,13 @@ export const AlertPreview: React.FC = (props) => { alertParams, alertInterval, alertThrottle, - fetch, alertType, validate, showNoDataResults, groupByDisplayName, } = props; + const { http } = useKibana().services; + const [previewLookbackInterval, setPreviewLookbackInterval] = useState('h'); const [isPreviewLoading, setIsPreviewLoading] = useState(false); const [previewError, setPreviewError] = useState(false); @@ -70,7 +70,7 @@ export const AlertPreview: React.FC = (props) => { setPreviewError(false); try { const result = await getAlertPreview({ - fetch, + fetch: http!.fetch, params: { ...alertParams, lookback: previewLookbackInterval as 'h' | 'd' | 'w' | 'M', @@ -89,12 +89,12 @@ export const AlertPreview: React.FC = (props) => { }, [ alertParams, alertInterval, - fetch, alertType, groupByDisplayName, previewLookbackInterval, alertThrottle, showNoDataResults, + http, ]); const previewIntervalError = useMemo(() => { diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx index f7f7048aedf48b..432d2073d93b6d 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/alert_flyout.tsx @@ -4,12 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; -import { ApplicationStart, DocLinksStart, HttpStart, NotificationsStart } from 'src/core/public'; +import React, { useContext, useMemo } from 'react'; -import { AlertsContextProvider, AlertAdd } from '../../../../../triggers_actions_ui/public'; import { TriggerActionsContext } from '../../../utils/triggers_actions_context'; -import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID } from '../../../../server/lib/alerting/inventory_metric_threshold/types'; import { InfraWaffleMapOptions } from '../../../lib/lib'; @@ -24,48 +21,31 @@ interface Props { setVisible: React.Dispatch>; } -interface KibanaDeps { - notifications: NotificationsStart; - http: HttpStart; - docLinks: DocLinksStart; - application: ApplicationStart; -} - export const AlertFlyout = ({ options, nodeType, filter, visible, setVisible }: Props) => { const { triggersActionsUI } = useContext(TriggerActionsContext); - const { services } = useKibana(); const { inventoryPrefill } = useAlertPrefillContext(); const { customMetrics } = inventoryPrefill; - return ( - <> - {triggersActionsUI && ( - - - - )} - + const AddAlertFlyout = useMemo( + () => + triggersActionsUI && + triggersActionsUI.getAddAlertFlyout({ + consumer: 'infrastructure', + addFlyoutVisible: visible!, + setAddFlyoutVisibility: setVisible, + canChangeTrigger: false, + alertTypeId: METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID, + metadata: { + options, + nodeType, + filter, + customMetrics, + }, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [triggersActionsUI, visible] ); + + return <>{AddAlertFlyout}; }; diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx index 6f830598ac46d2..43764c518ef93f 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx @@ -5,10 +5,8 @@ */ import { mountWithIntl, nextTick } from '@kbn/test/jest'; -import { actionTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/action_type_registry.mock'; -import { alertTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/alert_type_registry.mock'; -import { coreMock } from '../../../../../../../src/core/public/mocks'; -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; +// We are using this inside a `jest.mock` call. Jest requires dynamic dependencies to be prefixed with `mock` +import { coreMock as mockCoreMock } from 'src/core/public/mocks'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { InventoryMetricConditions } from '../../../../server/lib/alerting/inventory_metric_threshold/types'; import React from 'react'; @@ -25,6 +23,12 @@ jest.mock('../../../containers/source/use_source_via_http', () => ({ }), })); +jest.mock('../../../hooks/use_kibana', () => ({ + useKibanaContextForPlugin: () => ({ + services: mockCoreMock.createStart(), + }), +})); + const exampleCustomMetric = { id: 'this-is-an-id', field: 'some.system.field', @@ -39,41 +43,15 @@ describe('Expression', () => { nodeType: undefined, filterQueryText: '', }; - - const mocks = coreMock.createSetup(); - const startMocks = coreMock.createStart(); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - const context: AlertsContextValue = { - http: mocks.http, - toastNotifications: mocks.notifications.toasts, - actionTypeRegistry: actionTypeRegistryMock.create() as any, - alertTypeRegistry: alertTypeRegistryMock.create() as any, - docLinks: startMocks.docLinks, - capabilities: { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }, - metadata: currentOptions, - }; - const wrapper = mountWithIntl( Reflect.set(alertParams, key, value)} setAlertProperty={() => {}} + metadata={currentOptions} /> ); @@ -153,9 +131,6 @@ describe('ExpressionRow', () => { metric: [], }} expression={expression} - alertsContextMetadata={{ - customMetrics: [], - }} fields={[{ name: 'some.system.field', type: 'bzzz' }]} /> ); diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx index e16b2aeaacac4a..3dc754822879d9 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.tsx @@ -38,8 +38,6 @@ import { } from '../../../../../triggers_actions_ui/public/common'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { IErrorObject } from '../../../../../triggers_actions_ui/public/types'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; import { MetricsExplorerKueryBar } from '../../../pages/metrics/metrics_explorer/components/kuery_bar'; import { useSourceViaHttp } from '../../../containers/source/use_source_via_http'; import { sqsMetricTypes } from '../../../../common/inventory_models/aws_sqs/toolbar_items'; @@ -67,6 +65,7 @@ import { } from '../../../../common/http_api/snapshot_api'; import { validateMetricThreshold } from './validation'; +import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; const FILTER_TYPING_DEBOUNCE_MS = 500; @@ -89,9 +88,9 @@ interface Props { }; alertInterval: string; alertThrottle: string; - alertsContext: AlertsContextValue; setAlertParams(key: string, value: any): void; setAlertProperty(key: string, value: any): void; + metadata: AlertContextMeta; } export const defaultExpression = { @@ -109,19 +108,13 @@ export const defaultExpression = { } as InventoryMetricConditions; export const Expressions: React.FC = (props) => { - const { - setAlertParams, - alertParams, - errors, - alertsContext, - alertInterval, - alertThrottle, - } = props; + const { http, notifications } = useKibanaContextForPlugin().services; + const { setAlertParams, alertParams, errors, alertInterval, alertThrottle, metadata } = props; const { source, createDerivedIndexPattern } = useSourceViaHttp({ sourceId: 'default', type: 'metrics', - fetch: alertsContext.http.fetch, - toastWarning: alertsContext.toastNotifications.addWarning, + fetch: http.fetch, + toastWarning: notifications.toasts.addWarning, }); const [timeSize, setTimeSize] = useState(1); const [timeUnit, setTimeUnit] = useState('m'); @@ -221,7 +214,7 @@ export const Expressions: React.FC = (props) => { ); const preFillAlertCriteria = useCallback(() => { - const md = alertsContext.metadata; + const md = metadata; if (md && md.options) { setAlertParams('criteria', [ { @@ -235,10 +228,10 @@ export const Expressions: React.FC = (props) => { } else { setAlertParams('criteria', [defaultExpression]); } - }, [alertsContext.metadata, setAlertParams]); + }, [metadata, setAlertParams]); const preFillAlertFilter = useCallback(() => { - const md = alertsContext.metadata; + const md = metadata; if (md && md.filter) { setAlertParams('filterQueryText', md.filter); setAlertParams( @@ -246,10 +239,10 @@ export const Expressions: React.FC = (props) => { convertKueryToElasticSearchQuery(md.filter, derivedIndexPattern) || '' ); } - }, [alertsContext.metadata, derivedIndexPattern, setAlertParams]); + }, [metadata, derivedIndexPattern, setAlertParams]); useEffect(() => { - const md = alertsContext.metadata; + const md = metadata; if (!alertParams.nodeType) { if (md && md.nodeType) { setAlertParams('nodeType', md.nodeType); @@ -272,7 +265,7 @@ export const Expressions: React.FC = (props) => { if (!alertParams.sourceId) { setAlertParams('sourceId', source?.id || 'default'); } - }, [alertsContext.metadata, derivedIndexPattern, defaultExpression, source]); // eslint-disable-line react-hooks/exhaustive-deps + }, [metadata, derivedIndexPattern, defaultExpression, source]); // eslint-disable-line react-hooks/exhaustive-deps return ( <> @@ -308,7 +301,6 @@ export const Expressions: React.FC = (props) => { setAlertParams={updateParams} errors={errors[idx] || emptyError} expression={e || {}} - alertsContextMetadata={alertsContext.metadata} fields={derivedIndexPattern.fields} /> ); @@ -371,7 +363,7 @@ export const Expressions: React.FC = (props) => { fullWidth display="rowCompressed" > - {(alertsContext.metadata && ( + {(metadata && ( = (props) => { alertType={METRIC_INVENTORY_THRESHOLD_ALERT_TYPE_ID} alertParams={pick(alertParams, 'criteria', 'nodeType', 'sourceId', 'filterQuery')} validate={validateMetricThreshold} - fetch={alertsContext.http.fetch} groupByDisplayName={alertParams.nodeType} showNoDataResults={alertParams.alertOnNoData} /> @@ -418,7 +409,6 @@ interface ExpressionRowProps { addExpression(): void; remove(id: number): void; setAlertParams(id: number, params: Partial): void; - alertsContextMetadata: AlertsContextValue['metadata']; fields: IFieldType[]; } diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_flyout.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_flyout.tsx index cd69fe02c58461..206621c4d4dc8f 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_flyout.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/alert_flyout.tsx @@ -4,11 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; -import { ApplicationStart, DocLinksStart, HttpStart, NotificationsStart } from 'src/core/public'; -import { AlertsContextProvider, AlertAdd } from '../../../../../triggers_actions_ui/public'; +import React, { useContext, useMemo } from 'react'; import { TriggerActionsContext } from '../../../utils/triggers_actions_context'; -import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; import { LOG_DOCUMENT_COUNT_ALERT_TYPE_ID } from '../../../../common/alerting/logs/log_threshold/types'; interface Props { @@ -16,42 +13,25 @@ interface Props { setVisible: React.Dispatch>; } -interface KibanaDeps { - notifications: NotificationsStart; - http: HttpStart; - docLinks: DocLinksStart; - application: ApplicationStart; -} - export const AlertFlyout = (props: Props) => { const { triggersActionsUI } = useContext(TriggerActionsContext); - const { services } = useKibana(); - return ( - <> - {triggersActionsUI && ( - - - - )} - + const AddAlertFlyout = useMemo( + () => + triggersActionsUI && + triggersActionsUI.getAddAlertFlyout({ + consumer: 'logs', + addFlyoutVisible: props.visible!, + setAddFlyoutVisibility: props.setVisible, + canChangeTrigger: false, + alertTypeId: LOG_DOCUMENT_COUNT_ALERT_TYPE_ID, + metadata: { + isInternal: true, + }, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [triggersActionsUI, props.visible] ); + + return <>{AddAlertFlyout}; }; diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criteria.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criteria.tsx index c35e7141efc9d0..3c474ee1d0ec6a 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criteria.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criteria.tsx @@ -22,7 +22,7 @@ import { getDenominator, } from '../../../../../common/alerting/logs/log_threshold/types'; import { Errors, CriterionErrors } from '../../validation'; -import { AlertsContext, ExpressionLike } from './editor'; +import { ExpressionLike } from './editor'; import { CriterionPreview } from './criterion_preview_chart'; const DEFAULT_CRITERIA = { field: 'log.level', comparator: Comparator.EQ, value: 'error' }; @@ -40,7 +40,6 @@ interface SharedProps { criteria?: AlertParams['criteria']; errors: Errors['criteria']; alertParams: Partial; - context: AlertsContext; sourceId: string; updateCriteria: (criteria: AlertParams['criteria']) => void; } @@ -66,7 +65,6 @@ interface CriteriaWrapperProps { addCriterion: () => void; criteria: CriteriaType; errors: CriterionErrors; - context: SharedProps['context']; sourceId: SharedProps['sourceId']; isRatio?: boolean; } @@ -80,7 +78,6 @@ const CriteriaWrapper: React.FC = (props) => { fields, errors, alertParams, - context, sourceId, isRatio = false, } = props; @@ -108,7 +105,6 @@ const CriteriaWrapper: React.FC = (props) => { > void; } @@ -201,7 +196,6 @@ interface CountCriteriaProps { fields: SharedProps['fields']; criteria: CountCriteriaType; errors: Errors['criteria']; - context: SharedProps['context']; sourceId: SharedProps['sourceId']; updateCriteria: (criteria: AlertParams['criteria']) => void; } diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx index 1d23b4d4778ca1..47dc4190228809 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/criterion_preview_chart.tsx @@ -19,6 +19,7 @@ import { } from '@elastic/charts'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; +import { useKibana } from '../../../../../../../../src/plugins/kibana_react/public'; import { ChartContainer, LoadingState, @@ -43,7 +44,6 @@ import { GetLogAlertsChartPreviewDataAlertParamsSubset, getLogAlertsChartPreviewDataAlertParamsSubsetRT, } from '../../../../../common/http_api/log_alerts/'; -import { AlertsContext } from './editor'; import { useChartPreviewData } from './hooks/use_chart_preview_data'; import { decodeOrThrow } from '../../../../../common/runtime_types'; @@ -51,7 +51,6 @@ const GROUP_LIMIT = 5; interface Props { alertParams: Partial; - context: AlertsContext; chartCriterion: Partial; sourceId: string; showThreshold: boolean; @@ -59,7 +58,6 @@ interface Props { export const CriterionPreview: React.FC = ({ alertParams, - context, chartCriterion, sourceId, showThreshold, @@ -91,7 +89,6 @@ export const CriterionPreview: React.FC = ({ ? NUM_BUCKETS : NUM_BUCKETS / 4 } // Display less data for groups due to space limitations - context={context} sourceId={sourceId} threshold={alertParams.count} chartAlertParams={chartAlertParams} @@ -102,7 +99,6 @@ export const CriterionPreview: React.FC = ({ interface ChartProps { buckets: number; - context: AlertsContext; sourceId: string; threshold?: Threshold; chartAlertParams: GetLogAlertsChartPreviewDataAlertParamsSubset; @@ -111,13 +107,13 @@ interface ChartProps { const CriterionPreviewChart: React.FC = ({ buckets, - context, sourceId, threshold, chartAlertParams, showThreshold, }) => { - const isDarkMode = context.uiSettings?.get('theme:darkMode') || false; + const { uiSettings } = useKibana().services; + const isDarkMode = uiSettings?.get('theme:darkMode') || false; const { getChartPreviewData, @@ -125,7 +121,6 @@ const CriterionPreviewChart: React.FC = ({ hasError, chartPreviewData: series, } = useChartPreviewData({ - context, sourceId, alertParams: chartAlertParams, buckets, diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx index 662b7f68f8fec8..854363aacca5c9 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx @@ -8,11 +8,9 @@ import React, { useCallback, useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiLoadingSpinner, EuiSpacer, EuiButton, EuiCallOut } from '@elastic/eui'; import useMount from 'react-use/lib/useMount'; +import { useKibana } from '../../../../../../../../src/plugins/kibana_react/public'; import { GroupByExpression } from '../../../common/group_by_expression/group_by_expression'; -import { - ForLastExpression, - AlertsContextValue, -} from '../../../../../../triggers_actions_ui/public'; +import { ForLastExpression } from '../../../../../../triggers_actions_ui/public'; import { AlertParams, Comparator, @@ -36,14 +34,13 @@ interface LogsContextMeta { isInternal?: boolean; } -export type AlertsContext = AlertsContextValue; interface Props { errors: Errors; alertParams: Partial; setAlertParams(key: string, value: any): void; setAlertProperty(key: string, value: any): void; - alertsContext: AlertsContext; sourceId: string; + metadata: LogsContextMeta; } const DEFAULT_CRITERIA = { field: 'log.level', comparator: Comparator.EQ, value: 'error' }; @@ -75,8 +72,9 @@ const DEFAULT_RATIO_EXPRESSION = { }; export const ExpressionEditor: React.FC = (props) => { - const isInternal = props.alertsContext.metadata?.isInternal; + const isInternal = props.metadata?.isInternal; const [sourceId] = useSourceId(); + const { http } = useKibana().services; return ( <> @@ -85,7 +83,7 @@ export const ExpressionEditor: React.FC = (props) => { ) : ( - + @@ -139,7 +137,7 @@ export const SourceStatusWrapper: React.FC = (props) => { }; export const Editor: React.FC = (props) => { - const { setAlertParams, alertParams, errors, alertsContext, sourceId } = props; + const { setAlertParams, alertParams, errors, sourceId } = props; const [hasSetDefaults, setHasSetDefaults] = useState(false); const { sourceStatus } = useLogSourceContext(); useMount(() => { @@ -228,7 +226,6 @@ export const Editor: React.FC = (props) => { criteria={alertParams.criteria} errors={errors.criteria} alertParams={alertParams} - context={alertsContext} sourceId={sourceId} updateCriteria={updateCriteria} /> diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx index d5ba730026b12e..5ca8927dcd4aba 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx @@ -4,7 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ import { useState, useMemo } from 'react'; -import { AlertsContext } from '../editor'; +import { HttpHandler } from 'kibana/public'; +import { useKibana } from '../../../../../../../../../src/plugins/kibana_react/public'; import { useTrackedPromise } from '../../../../../utils/use_tracked_promise'; import { GetLogAlertsChartPreviewDataSuccessResponsePayload, @@ -17,12 +18,13 @@ import { GetLogAlertsChartPreviewDataAlertParamsSubset } from '../../../../../.. interface Options { sourceId: string; - context: AlertsContext; alertParams: GetLogAlertsChartPreviewDataAlertParamsSubset; buckets: number; } -export const useChartPreviewData = ({ context, sourceId, alertParams, buckets }: Options) => { +export const useChartPreviewData = ({ sourceId, alertParams, buckets }: Options) => { + const { http } = useKibana().services; + const [chartPreviewData, setChartPreviewData] = useState< GetLogAlertsChartPreviewDataSuccessResponsePayload['data']['series'] >([]); @@ -32,7 +34,7 @@ export const useChartPreviewData = ({ context, sourceId, alertParams, buckets }: cancelPreviousOn: 'creation', createPromise: async () => { setHasError(false); - return await callGetChartPreviewDataAPI(sourceId, context.http.fetch, alertParams, buckets); + return await callGetChartPreviewDataAPI(sourceId, http!.fetch, alertParams, buckets); }, onResolve: ({ data: { series } }) => { setHasError(false); @@ -42,7 +44,7 @@ export const useChartPreviewData = ({ context, sourceId, alertParams, buckets }: setHasError(true); }, }, - [sourceId, context.http.fetch, alertParams, buckets] + [sourceId, http, alertParams, buckets] ); const isLoading = useMemo(() => getChartPreviewDataRequest.state === 'pending', [ @@ -59,7 +61,7 @@ export const useChartPreviewData = ({ context, sourceId, alertParams, buckets }: export const callGetChartPreviewDataAPI = async ( sourceId: string, - fetch: AlertsContext['http']['fetch'], + fetch: HttpHandler, alertParams: GetLogAlertsChartPreviewDataAlertParamsSubset, buckets: number ) => { diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/alert_flyout.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/alert_flyout.tsx index 1f1af38809a3e3..779478a313b71e 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/alert_flyout.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/alert_flyout.tsx @@ -4,12 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useContext } from 'react'; -import { ApplicationStart, DocLinksStart, HttpStart, NotificationsStart } from 'src/core/public'; - -import { AlertsContextProvider, AlertAdd } from '../../../../../triggers_actions_ui/public'; +import React, { useContext, useMemo } from 'react'; import { TriggerActionsContext } from '../../../utils/triggers_actions_context'; -import { useKibana } from '../../../../../../../src/plugins/kibana_react/public'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { METRIC_THRESHOLD_ALERT_TYPE_ID } from '../../../../server/lib/alerting/metric_threshold/types'; import { MetricsExplorerSeries } from '../../../../common/http_api/metrics_explorer'; @@ -22,43 +18,26 @@ interface Props { setVisible: React.Dispatch>; } -interface KibanaDeps { - notifications: NotificationsStart; - http: HttpStart; - docLinks: DocLinksStart; - application: ApplicationStart; -} - export const AlertFlyout = (props: Props) => { const { triggersActionsUI } = useContext(TriggerActionsContext); - const { services } = useKibana(); - return ( - <> - {triggersActionsUI && ( - - - - )} - + const AddAlertFlyout = useMemo( + () => + triggersActionsUI && + triggersActionsUI.getAddAlertFlyout({ + consumer: 'infrastructure', + addFlyoutVisible: props.visible!, + setAddFlyoutVisibility: props.setVisible, + canChangeTrigger: false, + alertTypeId: METRIC_THRESHOLD_ALERT_TYPE_ID, + metadata: { + currentOptions: props.options, + series: props.series, + }, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [triggersActionsUI, props.visible] ); + + return <>{AddAlertFlyout}; }; diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.test.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.test.tsx index c83f9ff33bac57..9358204aba2891 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.test.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.test.tsx @@ -5,11 +5,8 @@ */ import { mountWithIntl, nextTick } from '@kbn/test/jest'; -import { actionTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/action_type_registry.mock'; -import { alertTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/alert_type_registry.mock'; -import { coreMock } from '../../../../../../../src/core/public/mocks'; -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; -import { AlertContextMeta } from '../types'; +// We are using this inside a `jest.mock` call. Jest requires dynamic dependencies to be prefixed with `mock` +import { coreMock as mockCoreMock } from 'src/core/public/mocks'; import { MetricsExplorerMetric } from '../../../../common/http_api/metrics_explorer'; import React from 'react'; import { Expressions } from './expression'; @@ -24,6 +21,12 @@ jest.mock('../../../containers/source/use_source_via_http', () => ({ }), })); +jest.mock('../../../hooks/use_kibana', () => ({ + useKibanaContextForPlugin: () => ({ + services: mockCoreMock.createStart(), + }), +})); + describe('Expression', () => { async function setup(currentOptions: { metrics?: MetricsExplorerMetric[]; @@ -36,43 +39,17 @@ describe('Expression', () => { filterQueryText: '', sourceId: 'default', }; - - const mocks = coreMock.createSetup(); - const startMocks = coreMock.createStart(); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); - - const context: AlertsContextValue = { - http: mocks.http, - toastNotifications: mocks.notifications.toasts, - actionTypeRegistry: actionTypeRegistryMock.create() as any, - alertTypeRegistry: alertTypeRegistryMock.create() as any, - docLinks: startMocks.docLinks, - capabilities: { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }, - metadata: { - currentOptions, - }, - }; - const wrapper = mountWithIntl( Reflect.set(alertParams, key, value)} setAlertProperty={() => {}} + metadata={{ + currentOptions, + }} /> ); diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx index 48e15e0026ff61..a24a4601ba68d5 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression.tsx @@ -31,8 +31,6 @@ import { } from '../../../../../triggers_actions_ui/public/common'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { IErrorObject } from '../../../../../triggers_actions_ui/public/types'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; import { MetricsExplorerKueryBar } from '../../../pages/metrics/metrics_explorer/components/kuery_bar'; import { MetricsExplorerOptions } from '../../../pages/metrics/metrics_explorer/hooks/use_metrics_explorer_options'; import { MetricsExplorerGroupBy } from '../../../pages/metrics/metrics_explorer/components/group_by'; @@ -40,20 +38,21 @@ import { useSourceViaHttp } from '../../../containers/source/use_source_via_http import { convertKueryToElasticSearchQuery } from '../../../utils/kuery'; import { ExpressionRow } from './expression_row'; -import { AlertContextMeta, MetricExpression, AlertParams } from '../types'; +import { MetricExpression, AlertParams, AlertContextMeta } from '../types'; import { ExpressionChart } from './expression_chart'; import { validateMetricThreshold } from './validation'; +import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; const FILTER_TYPING_DEBOUNCE_MS = 500; interface Props { errors: IErrorObject[]; alertParams: AlertParams; - alertsContext: AlertsContextValue; alertInterval: string; alertThrottle: string; setAlertParams(key: string, value: any): void; setAlertProperty(key: string, value: any): void; + metadata: AlertContextMeta; } const defaultExpression = { @@ -66,19 +65,13 @@ const defaultExpression = { export { defaultExpression }; export const Expressions: React.FC = (props) => { - const { - setAlertParams, - alertParams, - errors, - alertsContext, - alertInterval, - alertThrottle, - } = props; + const { setAlertParams, alertParams, errors, alertInterval, alertThrottle, metadata } = props; + const { http, notifications } = useKibanaContextForPlugin().services; const { source, createDerivedIndexPattern } = useSourceViaHttp({ sourceId: 'default', type: 'metrics', - fetch: alertsContext.http.fetch, - toastWarning: alertsContext.toastNotifications.addWarning, + fetch: http.fetch, + toastWarning: notifications.toasts.addWarning, }); const [timeSize, setTimeSize] = useState(1); @@ -88,15 +81,15 @@ export const Expressions: React.FC = (props) => { ]); const options = useMemo(() => { - if (alertsContext.metadata?.currentOptions?.metrics) { - return alertsContext.metadata.currentOptions as MetricsExplorerOptions; + if (metadata?.currentOptions?.metrics) { + return metadata.currentOptions as MetricsExplorerOptions; } else { return { metrics: [], aggregation: 'avg', }; } - }, [alertsContext.metadata]); + }, [metadata]); const updateParams = useCallback( (id, e: MetricExpression) => { @@ -186,7 +179,7 @@ export const Expressions: React.FC = (props) => { ); const preFillAlertCriteria = useCallback(() => { - const md = alertsContext.metadata; + const md = metadata; if (md?.currentOptions?.metrics?.length) { setAlertParams( 'criteria', @@ -202,10 +195,10 @@ export const Expressions: React.FC = (props) => { } else { setAlertParams('criteria', [defaultExpression]); } - }, [alertsContext.metadata, setAlertParams, timeSize, timeUnit]); + }, [metadata, setAlertParams, timeSize, timeUnit]); const preFillAlertFilter = useCallback(() => { - const md = alertsContext.metadata; + const md = metadata; if (md && md.currentOptions?.filterQuery) { setAlertParams('filterQueryText', md.currentOptions.filterQuery); setAlertParams( @@ -223,14 +216,14 @@ export const Expressions: React.FC = (props) => { convertKueryToElasticSearchQuery(filter, derivedIndexPattern) || '' ); } - }, [alertsContext.metadata, derivedIndexPattern, setAlertParams]); + }, [metadata, derivedIndexPattern, setAlertParams]); const preFillAlertGroupBy = useCallback(() => { - const md = alertsContext.metadata; + const md = metadata; if (md && md.currentOptions?.groupBy && !md.series) { setAlertParams('groupBy', md.currentOptions.groupBy); } - }, [alertsContext.metadata, setAlertParams]); + }, [metadata, setAlertParams]); useEffect(() => { if (alertParams.criteria && alertParams.criteria.length) { @@ -251,7 +244,7 @@ export const Expressions: React.FC = (props) => { if (!alertParams.sourceId) { setAlertParams('sourceId', source?.id || 'default'); } - }, [alertsContext.metadata, source]); // eslint-disable-line react-hooks/exhaustive-deps + }, [metadata, source]); // eslint-disable-line react-hooks/exhaustive-deps const handleFieldSearchChange = useCallback( (e: ChangeEvent) => onFilterChange(e.target.value), @@ -291,7 +284,6 @@ export const Expressions: React.FC = (props) => { > = (props) => { fullWidth display="rowCompressed" > - {(alertsContext.metadata && ( + {(metadata && ( = (props) => { alertParams={pick(alertParams, 'criteria', 'groupBy', 'filterQuery', 'sourceId')} showNoDataResults={alertParams.alertOnNoData} validate={validateMetricThreshold} - fetch={alertsContext.http.fetch} groupByDisplayName={groupByPreviewDisplayName} /> diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.test.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.test.tsx index 5f3f0ea7f34909..a75a692e6e575e 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.test.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.test.tsx @@ -5,11 +5,9 @@ */ import { mountWithIntl, nextTick } from '@kbn/test/jest'; -import { actionTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/action_type_registry.mock'; -import { alertTypeRegistryMock } from '../../../../../triggers_actions_ui/public/application/alert_type_registry.mock'; -import { coreMock } from '../../../../../../../src/core/public/mocks'; -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; -import { AlertContextMeta, MetricExpression } from '../types'; +// We are using this inside a `jest.mock` call. Jest requires dynamic dependencies to be prefixed with `mock` +import { coreMock as mockCoreMock } from 'src/core/public/mocks'; +import { MetricExpression } from '../types'; import { IIndexPattern } from 'src/plugins/data/public'; import { InfraSource } from '../../../../common/http_api/source_api'; import React from 'react'; @@ -17,38 +15,30 @@ import { ExpressionChart } from './expression_chart'; import { act } from 'react-dom/test-utils'; // eslint-disable-next-line @kbn/eslint/no-restricted-paths import { Aggregators, Comparator } from '../../../../server/lib/alerting/metric_threshold/types'; -import { MetricsExplorerResponse } from '../../../../common/http_api'; -describe('ExpressionChart', () => { - async function setup( - expression: MetricExpression, - response: MetricsExplorerResponse | null, - filterQuery?: string, - groupBy?: string - ) { - const mocks = coreMock.createSetup(); - const startMocks = coreMock.createStart(); - const [ - { - application: { capabilities }, - }, - ] = await mocks.getStartServices(); +const mockStartServices = mockCoreMock.createStart(); +jest.mock('../../../hooks/use_kibana', () => ({ + useKibanaContextForPlugin: () => ({ + services: { + ...mockStartServices, + }, + }), +})); - const context: AlertsContextValue = { - http: mocks.http, - toastNotifications: mocks.notifications.toasts, - actionTypeRegistry: actionTypeRegistryMock.create() as any, - alertTypeRegistry: alertTypeRegistryMock.create() as any, - docLinks: startMocks.docLinks, - capabilities: { - ...capabilities, - actions: { - delete: true, - save: true, - show: true, - }, - }, - }; +const mockResponse = { + pageInfo: { + afterKey: null, + total: 0, + }, + series: [{ id: 'Everything', rows: [], columns: [] }], +}; + +jest.mock('../hooks/use_metrics_explorer_chart_data', () => ({ + useMetricsExplorerChartData: () => ({ loading: false, data: mockResponse }), +})); + +describe('ExpressionChart', () => { + async function setup(expression: MetricExpression, filterQuery?: string, groupBy?: string) { const derivedIndexPattern: IIndexPattern = { title: 'metricbeat-*', fields: [], @@ -76,11 +66,8 @@ describe('ExpressionChart', () => { }, }; - mocks.http.fetch.mockImplementation(() => Promise.resolve(response)); - const wrapper = mountWithIntl( { await update(); - return { wrapper, update, fetchMock: mocks.http.fetch }; + return { wrapper, update }; } it('should display no data message', async () => { @@ -109,14 +96,7 @@ describe('ExpressionChart', () => { threshold: [1], comparator: Comparator.GT_OR_EQ, }; - const response = { - pageInfo: { - afterKey: null, - total: 0, - }, - series: [{ id: 'Everything', rows: [], columns: [] }], - }; - const { wrapper } = await setup(expression, response); + const { wrapper } = await setup(expression); expect(wrapper.find('[data-test-subj~="noChartData"]').exists()).toBeTruthy(); }); }); diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx index 065314d31b008e..ae53cd8c2081ec 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_chart.tsx @@ -21,8 +21,6 @@ import { i18n } from '@kbn/i18n'; import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; import { IIndexPattern } from 'src/plugins/data/public'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; import { InfraSource } from '../../../../common/http_api/source_api'; import { Comparator, @@ -31,16 +29,16 @@ import { import { Color, colorTransformer } from '../../../../common/color_palette'; import { MetricsExplorerRow, MetricsExplorerAggregation } from '../../../../common/http_api'; import { MetricExplorerSeriesChart } from '../../../pages/metrics/metrics_explorer/components/series_chart'; -import { MetricExpression, AlertContextMeta } from '../types'; +import { MetricExpression } from '../types'; import { MetricsExplorerChartType } from '../../../pages/metrics/metrics_explorer/hooks/use_metrics_explorer_options'; import { getChartTheme } from '../../../pages/metrics/metrics_explorer/components/helpers/get_chart_theme'; import { createFormatterForMetric } from '../../../pages/metrics/metrics_explorer/components/helpers/create_formatter_for_metric'; import { calculateDomain } from '../../../pages/metrics/metrics_explorer/components/helpers/calculate_domain'; import { useMetricsExplorerChartData } from '../hooks/use_metrics_explorer_chart_data'; import { getMetricId } from '../../../pages/metrics/metrics_explorer/components/helpers/get_metric_id'; +import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; interface Props { - context: AlertsContextValue; expression: MetricExpression; derivedIndexPattern: IIndexPattern; source: InfraSource | null; @@ -62,7 +60,6 @@ const TIME_LABELS = { export const ExpressionChart: React.FC = ({ expression, - context, derivedIndexPattern, source, filterQuery, @@ -70,19 +67,20 @@ export const ExpressionChart: React.FC = ({ }) => { const { loading, data } = useMetricsExplorerChartData( expression, - context, derivedIndexPattern, source, filterQuery, groupBy ); + const { uiSettings } = useKibanaContextForPlugin().services; + const metric = { field: expression.metric, aggregation: expression.aggType as MetricsExplorerAggregation, color: Color.color0, }; - const isDarkMode = context.uiSettings?.get('theme:darkMode') || false; + const isDarkMode = uiSettings?.get('theme:darkMode') || false; const dateFormatter = useMemo(() => { const firstSeries = first(data?.series); const firstTimestamp = first(firstSeries?.rows)?.timestamp; diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/hooks/use_metrics_explorer_chart_data.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/hooks/use_metrics_explorer_chart_data.ts index a3d09742e9a57c..a1ebc37b8e9700 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/hooks/use_metrics_explorer_chart_data.ts +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/hooks/use_metrics_explorer_chart_data.ts @@ -7,15 +7,12 @@ import { IIndexPattern } from 'src/plugins/data/public'; import { useMemo } from 'react'; import { InfraSource } from '../../../../common/http_api/source_api'; -import { AlertContextMeta, MetricExpression } from '../types'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { AlertsContextValue } from '../../../../../triggers_actions_ui/public/application/context/alerts_context'; +import { MetricExpression } from '../types'; import { MetricsExplorerOptions } from '../../../pages/metrics/metrics_explorer/hooks/use_metrics_explorer_options'; import { useMetricsExplorerData } from '../../../pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data'; export const useMetricsExplorerChartData = ( expression: MetricExpression, - context: AlertsContextValue, derivedIndexPattern: IIndexPattern, source: InfraSource | null, filterQuery?: string, @@ -54,7 +51,6 @@ export const useMetricsExplorerChartData = ( derivedIndexPattern, timerange, null, - null, - context.http.fetch + null ); }; diff --git a/x-pack/plugins/infra/public/apps/common_providers.tsx b/x-pack/plugins/infra/public/apps/common_providers.tsx index fc82f4bf6cb00b..e66c54745ca516 100644 --- a/x-pack/plugins/infra/public/apps/common_providers.tsx +++ b/x-pack/plugins/infra/public/apps/common_providers.tsx @@ -5,7 +5,7 @@ */ import { ApolloClient } from 'apollo-client'; -import { CoreStart } from 'kibana/public'; +import { AppMountParameters, CoreStart } from 'kibana/public'; import React, { useMemo } from 'react'; import { useUiSetting$ } from '../../../../../src/plugins/kibana_react/public'; import { EuiThemeProvider } from '../../../observability/public'; @@ -13,20 +13,24 @@ import { TriggersAndActionsUIPublicPluginStart } from '../../../triggers_actions import { createKibanaContextForPlugin } from '../hooks/use_kibana'; import { InfraClientStartDeps } from '../types'; import { ApolloClientContext } from '../utils/apollo_context'; +import { HeaderActionMenuProvider } from '../utils/header_action_menu_provider'; import { NavigationWarningPromptProvider } from '../utils/navigation_warning_prompt'; import { TriggersActionsProvider } from '../utils/triggers_actions_context'; export const CommonInfraProviders: React.FC<{ apolloClient: ApolloClient<{}>; triggersActionsUI: TriggersAndActionsUIPublicPluginStart; -}> = ({ apolloClient, children, triggersActionsUI }) => { + setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; +}> = ({ apolloClient, children, triggersActionsUI, setHeaderActionMenu }) => { const [darkMode] = useUiSetting$('theme:darkMode'); return ( - {children} + + {children} + diff --git a/x-pack/plugins/infra/public/apps/logs_app.tsx b/x-pack/plugins/infra/public/apps/logs_app.tsx index b6b171fcb4727d..666ea026938738 100644 --- a/x-pack/plugins/infra/public/apps/logs_app.tsx +++ b/x-pack/plugins/infra/public/apps/logs_app.tsx @@ -23,14 +23,20 @@ import { prepareMountElement } from './common_styles'; export const renderApp = ( core: CoreStart, plugins: InfraClientStartDeps, - { element, history }: AppMountParameters + { element, history, setHeaderActionMenu }: AppMountParameters ) => { const apolloClient = createApolloClient(core.http.fetch); prepareMountElement(element); ReactDOM.render( - , + , element ); @@ -44,7 +50,8 @@ const LogsApp: React.FC<{ core: CoreStart; history: History; plugins: InfraClientStartDeps; -}> = ({ apolloClient, core, history, plugins }) => { + setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; +}> = ({ apolloClient, core, history, plugins, setHeaderActionMenu }) => { const uiCapabilities = core.application.capabilities; return ( @@ -52,6 +59,7 @@ const LogsApp: React.FC<{ diff --git a/x-pack/plugins/infra/public/apps/metrics_app.tsx b/x-pack/plugins/infra/public/apps/metrics_app.tsx index d91c64de933e60..37ef29a2b0cd1c 100644 --- a/x-pack/plugins/infra/public/apps/metrics_app.tsx +++ b/x-pack/plugins/infra/public/apps/metrics_app.tsx @@ -25,14 +25,20 @@ import { prepareMountElement } from './common_styles'; export const renderApp = ( core: CoreStart, plugins: InfraClientStartDeps, - { element, history }: AppMountParameters + { element, history, setHeaderActionMenu }: AppMountParameters ) => { const apolloClient = createApolloClient(core.http.fetch); prepareMountElement(element); ReactDOM.render( - , + , element ); @@ -46,7 +52,8 @@ const MetricsApp: React.FC<{ core: CoreStart; history: History; plugins: InfraClientStartDeps; -}> = ({ apolloClient, core, history, plugins }) => { + setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; +}> = ({ apolloClient, core, history, plugins, setHeaderActionMenu }) => { const uiCapabilities = core.application.capabilities; return ( @@ -54,6 +61,7 @@ const MetricsApp: React.FC<{ diff --git a/x-pack/plugins/infra/public/components/log_stream/README.md b/x-pack/plugins/infra/public/components/log_stream/README.md index 59b3edfab736cd..514ffbccbff282 100644 --- a/x-pack/plugins/infra/public/components/log_stream/README.md +++ b/x-pack/plugins/infra/public/components/log_stream/README.md @@ -68,6 +68,36 @@ By default the `` uses the `"default"` source confiuration, but if ``` +### Custom columns + +It is possible to change what columns are loaded without creating a whole new source configuration. To do so the component supports the `columns` prop. The default configuration can be replicated as follows. + +```tsx + +``` + +There are three column types: + + + + + +
    `type: "timestamp"` + The configured timestamp field. Defaults to `@timestamp`. +
    `type: "message"` + The value of the `message` field if it exists. If it doesn't, the component will try to recompose the original log line using values of other fields. +
    `type: "field"` + A specific field specified in the `field` property. +
    + ### Considerations As mentioned in the prerequisites, the component relies on `kibana-react` to access kibana's core services. If this is not the case the component will throw an exception when rendering. We advise to use an `` in your component hierarchy to catch this error if necessary. diff --git a/x-pack/plugins/infra/public/components/log_stream/index.tsx b/x-pack/plugins/infra/public/components/log_stream/index.tsx index 43d84497af9e97..3ca1ed7d4726f6 100644 --- a/x-pack/plugins/infra/public/components/log_stream/index.tsx +++ b/x-pack/plugins/infra/public/components/log_stream/index.tsx @@ -8,24 +8,30 @@ import React, { useMemo, useCallback, useEffect } from 'react'; import { noop } from 'lodash'; import { euiStyled } from '../../../../observability/public'; -import { LogEntriesCursor } from '../../../common/http_api'; +import { LogEntryCursor } from '../../../common/log_entry'; import { useKibana } from '../../../../../../src/plugins/kibana_react/public'; -import { useLogSource } from '../../containers/logs/log_source'; +import { LogSourceConfigurationProperties, useLogSource } from '../../containers/logs/log_source'; import { useLogStream } from '../../containers/logs/log_stream'; import { ScrollableLogTextStreamView } from '../logging/log_text_stream'; const PAGE_THRESHOLD = 2; +type LogColumnDefinition = + | { type: 'timestamp' } + | { type: 'message' } + | { type: 'field'; field: string }; + export interface LogStreamProps { sourceId?: string; startTimestamp: number; endTimestamp: number; query?: string; - center?: LogEntriesCursor; + center?: LogEntryCursor; highlight?: string; height?: string | number; + columns?: LogColumnDefinition[]; } export const LogStream: React.FC = ({ @@ -36,7 +42,13 @@ export const LogStream: React.FC = ({ center, highlight, height = '400px', + columns, }) => { + const customColumns = useMemo( + () => (columns ? convertLogColumnDefinitionToLogSourceColumnDefinition(columns) : undefined), + [columns] + ); + // source boilerplate const { services } = useKibana(); if (!services?.http?.fetch) { @@ -74,6 +86,7 @@ Read more at https://github.com/elastic/kibana/blob/master/src/plugins/kibana_re endTimestamp, query, center, + columns: customColumns, }); // Derived state @@ -83,8 +96,8 @@ Read more at https://github.com/elastic/kibana/blob/master/src/plugins/kibana_re const isLoadingMore = pageLoadingState === 'loading'; const columnConfigurations = useMemo(() => { - return sourceConfiguration ? sourceConfiguration.configuration.logColumns : []; - }, [sourceConfiguration]); + return sourceConfiguration ? customColumns ?? sourceConfiguration.configuration.logColumns : []; + }, [sourceConfiguration, customColumns]); const streamItems = useMemo( () => @@ -134,7 +147,7 @@ Read more at https://github.com/elastic/kibana/blob/master/src/plugins/kibana_re columnConfigurations={columnConfigurations} items={streamItems} scale="medium" - wrap={false} + wrap={true} isReloading={isReloading} isLoadingMore={isLoadingMore} hasMoreBeforeStart={hasMoreBefore} @@ -163,6 +176,21 @@ const LogStreamContent = euiStyled.div<{ height: string }>` height: ${(props) => props.height}; `; +function convertLogColumnDefinitionToLogSourceColumnDefinition( + columns: LogColumnDefinition[] +): LogSourceConfigurationProperties['logColumns'] { + return columns.map((column) => { + switch (column.type) { + case 'timestamp': + return { timestampColumn: { id: '___#timestamp' } }; + case 'message': + return { messageColumn: { id: '___#message' } }; + case 'field': + return { fieldColumn: { id: `___#${column.field}`, field: column.field } }; + } + }); +} + // Allow for lazy loading // eslint-disable-next-line import/no-default-export export default LogStream; diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx index 2ec9922d945553..2d15068e51da59 100644 --- a/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples.tsx @@ -46,4 +46,5 @@ const Wrapper = euiStyled.div` flex-direction: column; flex: 1 0 0%; overflow: hidden; + padding-top: 1px; // Buffer for the "Reload" buttons' hover state `; diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx index 1d6028ed032a2f..d3d309948529f2 100644 --- a/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_examples/log_entry_examples_empty_indicator.tsx @@ -10,7 +10,7 @@ import React from 'react'; export const LogEntryExampleMessagesEmptyIndicator: React.FunctionComponent<{ onReload: () => void; }> = ({ onReload }) => ( - + void; }> = ({ onRetry }) => ( - + { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( { const elementWrapper = mount( = ({ logItem }) => { + logEntry: LogEntry; +}> = ({ logEntry }) => { const { hide, isVisible, show } = useVisibilityState(false); - const apmLinkDescriptor = useMemo(() => getAPMLink(logItem), [logItem]); - const uptimeLinkDescriptor = useMemo(() => getUptimeLink(logItem), [logItem]); + const apmLinkDescriptor = useMemo(() => getAPMLink(logEntry), [logEntry]); + const uptimeLinkDescriptor = useMemo(() => getUptimeLink(logEntry), [logEntry]); const uptimeLinkProps = useLinkProps({ app: 'uptime', @@ -90,8 +90,8 @@ export const LogEntryActionsMenu: React.FunctionComponent<{ ); }; -const getUptimeLink = (logItem: LogEntriesItem): LinkDescriptor | undefined => { - const searchExpressions = logItem.fields +const getUptimeLink = (logEntry: LogEntry): LinkDescriptor | undefined => { + const searchExpressions = logEntry.fields .filter(({ field, value }) => value != null && UPTIME_FIELDS.includes(field)) .reduce((acc, fieldItem) => { const { field, value } = fieldItem; @@ -110,31 +110,32 @@ const getUptimeLink = (logItem: LogEntriesItem): LinkDescriptor | undefined => { }; }; -const getAPMLink = (logItem: LogEntriesItem): LinkDescriptor | undefined => { - const traceIdEntry = logItem.fields.find( - ({ field, value }) => value[0] != null && field === 'trace.id' - ); +const getAPMLink = (logEntry: LogEntry): LinkDescriptor | undefined => { + const traceId = logEntry.fields.find( + ({ field, value }) => typeof value[0] === 'string' && field === 'trace.id' + )?.value?.[0]; - if (!traceIdEntry) { + if (typeof traceId !== 'string') { return undefined; } - const timestampField = logItem.fields.find(({ field }) => field === '@timestamp'); + const timestampField = logEntry.fields.find(({ field }) => field === '@timestamp'); const timestamp = timestampField ? timestampField.value[0] : null; - const { rangeFrom, rangeTo } = timestamp - ? (() => { - const from = new Date(timestamp); - const to = new Date(timestamp); + const { rangeFrom, rangeTo } = + typeof timestamp === 'number' + ? (() => { + const from = new Date(timestamp); + const to = new Date(timestamp); - from.setMinutes(from.getMinutes() - 10); - to.setMinutes(to.getMinutes() + 10); + from.setMinutes(from.getMinutes() - 10); + to.setMinutes(to.getMinutes() + 10); - return { rangeFrom: from.toISOString(), rangeTo: to.toISOString() }; - })() - : { rangeFrom: 'now-1y', rangeTo: 'now' }; + return { rangeFrom: from.toISOString(), rangeTo: to.toISOString() }; + })() + : { rangeFrom: 'now-1y', rangeTo: 'now' }; return { app: 'apm', - hash: getTraceUrl({ traceId: traceIdEntry.value[0], rangeFrom, rangeTo }), + hash: getTraceUrl({ traceId, rangeFrom, rangeTo }), }; }; diff --git a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx index b07d8c9dce23c5..bc0f6dc97017a6 100644 --- a/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_entry_flyout/log_entry_flyout.tsx @@ -5,13 +5,16 @@ */ import { - EuiBasicTable, + EuiBasicTableColumn, EuiButtonIcon, EuiFlexGroup, EuiFlexItem, EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, + EuiInMemoryTable, + EuiSpacer, + EuiTextColor, EuiTitle, EuiToolTip, } from '@elastic/eui'; @@ -19,28 +22,49 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import moment from 'moment'; import React, { useCallback, useMemo } from 'react'; - import { euiStyled } from '../../../../../observability/public'; +import { + LogEntry, + LogEntryField, +} from '../../../../common/search_strategies/log_entries/log_entry'; import { TimeKey } from '../../../../common/time'; import { InfraLoadingPanel } from '../../loading'; +import { FieldValue } from '../log_text_stream/field_value'; import { LogEntryActionsMenu } from './log_entry_actions_menu'; -import { LogEntriesItem, LogEntriesItemField } from '../../../../common/http_api'; export interface LogEntryFlyoutProps { - flyoutItem: LogEntriesItem | null; + flyoutError: string | null; + flyoutItem: LogEntry | null; setFlyoutVisibility: (visible: boolean) => void; setFilter: (filter: string, flyoutItemId: string, timeKey?: TimeKey) => void; loading: boolean; } +const emptyHighlightTerms: string[] = []; + +const initialSortingOptions = { + sort: { + field: 'field', + direction: 'asc' as const, + }, +}; + +const searchOptions = { + box: { + incremental: true, + schema: true, + }, +}; + export const LogEntryFlyout = ({ + flyoutError, flyoutItem, loading, setFlyoutVisibility, setFilter, }: LogEntryFlyoutProps) => { const createFilterHandler = useCallback( - (field: LogEntriesItemField) => () => { + (field: LogEntryField) => () => { if (!flyoutItem) { return; } @@ -63,7 +87,7 @@ export const LogEntryFlyout = ({ const closeFlyout = useCallback(() => setFlyoutVisibility(false), [setFlyoutVisibility]); - const columns = useMemo( + const columns = useMemo>>( () => [ { field: 'field', @@ -77,8 +101,7 @@ export const LogEntryFlyout = ({ name: i18n.translate('xpack.infra.logFlyout.valueColumnLabel', { defaultMessage: 'Value', }), - sortable: true, - render: (_name: string, item: LogEntriesItemField) => ( + render: (_name: string, item: LogEntryField) => ( - {formatValue(item.value)} + ), }, @@ -110,19 +137,36 @@ export const LogEntryFlyout = ({

    {flyoutItem.id} : '', + }} />

    + {flyoutItem ? ( + <> + + + {flyoutItem.index}, + }} + /> + + + ) : null}
    - {flyoutItem !== null ? : null} + {flyoutItem !== null ? : null}
    - {loading || flyoutItem === null ? ( + {loading ? ( + ) : flyoutItem ? ( + + columns={columns} + items={flyoutItem.fields} + search={searchOptions} + sorting={initialSortingOptions} + /> ) : ( - + {flyoutError} )} @@ -147,7 +198,3 @@ export const InfraFlyoutLoadingPanel = euiStyled.div` bottom: 0; left: 0; `; - -function formatValue(value: string[]) { - return value.length > 1 ? value.join(', ') : value[0]; -} diff --git a/x-pack/plugins/infra/public/components/logging/log_minimap/time_ruler.tsx b/x-pack/plugins/infra/public/components/logging/log_minimap/time_ruler.tsx index 4bee9d9a5209b5..458fdbfcd49167 100644 --- a/x-pack/plugins/infra/public/components/logging/log_minimap/time_ruler.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_minimap/time_ruler.tsx @@ -47,7 +47,7 @@ TimeRuler.displayName = 'TimeRuler'; const TimeRulerTickLabel = euiStyled.text` font-size: 9px; line-height: ${(props) => props.theme.eui.euiLineHeight}; - fill: ${(props) => props.theme.eui.textColors.subdued}; + fill: ${(props) => props.theme.eui.euiTextSubduedColor}; user-select: none; pointer-events: none; `; diff --git a/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entries_item.ts b/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entries_item.ts deleted file mode 100644 index d459fba6cf9577..00000000000000 --- a/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entries_item.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import type { HttpHandler } from 'src/core/public'; - -import { decodeOrThrow } from '../../../../../common/runtime_types'; - -import { - LOG_ENTRIES_ITEM_PATH, - LogEntriesItemRequest, - logEntriesItemRequestRT, - logEntriesItemResponseRT, -} from '../../../../../common/http_api'; - -export const fetchLogEntriesItem = async ( - requestArgs: LogEntriesItemRequest, - fetch: HttpHandler -) => { - const response = await fetch(LOG_ENTRIES_ITEM_PATH, { - method: 'POST', - body: JSON.stringify(logEntriesItemRequestRT.encode(requestArgs)), - }); - - return decodeOrThrow(logEntriesItemResponseRT)(response); -}; diff --git a/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entry.ts b/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entry.ts new file mode 100644 index 00000000000000..764de1d34a3bf8 --- /dev/null +++ b/x-pack/plugins/infra/public/containers/logs/log_entries/api/fetch_log_entry.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ISearchStart } from '../../../../../../../../src/plugins/data/public'; +import { decodeOrThrow } from '../../../../../common/runtime_types'; +import { + LogEntry, + LogEntrySearchRequestParams, + logEntrySearchRequestParamsRT, + logEntrySearchResponsePayloadRT, + LOG_ENTRY_SEARCH_STRATEGY, +} from '../../../../../common/search_strategies/log_entries/log_entry'; + +export { LogEntry }; + +export const fetchLogEntry = async ( + requestArgs: LogEntrySearchRequestParams, + search: ISearchStart +) => { + const response = await search + .search( + { params: logEntrySearchRequestParamsRT.encode(requestArgs) }, + { strategy: LOG_ENTRY_SEARCH_STRATEGY } + ) + .toPromise(); + + return decodeOrThrow(logEntrySearchResponsePayloadRT)(response.rawResponse); +}; diff --git a/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx b/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx index 9ed2f5ad175c75..121f0e6b651dc0 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_flyout.tsx @@ -7,12 +7,10 @@ import createContainer from 'constate'; import { isString } from 'lodash'; import React, { useContext, useEffect, useMemo, useState } from 'react'; - -import { LogEntriesItem } from '../../../common/http_api'; import { useKibanaContextForPlugin } from '../../hooks/use_kibana'; import { UrlStateContainer } from '../../utils/url_state'; import { useTrackedPromise } from '../../utils/use_tracked_promise'; -import { fetchLogEntriesItem } from './log_entries/api/fetch_log_entries_item'; +import { fetchLogEntry } from './log_entries/api/fetch_log_entry'; import { useLogSourceContext } from './log_source'; export enum FlyoutVisibility { @@ -31,7 +29,6 @@ export const useLogFlyout = () => { const { sourceId } = useLogSourceContext(); const [flyoutVisible, setFlyoutVisibility] = useState(false); const [flyoutId, setFlyoutId] = useState(null); - const [flyoutItem, setFlyoutItem] = useState(null); const [surroundingLogsId, setSurroundingLogsId] = useState(null); const [loadFlyoutItemRequest, loadFlyoutItem] = useTrackedPromise( @@ -39,15 +36,9 @@ export const useLogFlyout = () => { cancelPreviousOn: 'creation', createPromise: async () => { if (!flyoutId) { - return; - } - return await fetchLogEntriesItem({ sourceId, id: flyoutId }, services.http.fetch); - }, - onResolve: (response) => { - if (response) { - const { data } = response; - setFlyoutItem(data || null); + throw new Error('Failed to load log entry: Id not specified.'); } + return await fetchLogEntry({ sourceId, logEntryId: flyoutId }, services.data.search); }, }, [sourceId, flyoutId] @@ -71,7 +62,10 @@ export const useLogFlyout = () => { surroundingLogsId, setSurroundingLogsId, isLoading, - flyoutItem, + flyoutItem: + loadFlyoutItemRequest.state === 'resolved' ? loadFlyoutItemRequest.value.data : null, + flyoutError: + loadFlyoutItemRequest.state === 'rejected' ? `${loadFlyoutItemRequest.value}` : null, }; }; diff --git a/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts b/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts index 566edcce913183..ff30e993aa3a92 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_stream/index.ts @@ -10,21 +10,24 @@ import usePrevious from 'react-use/lib/usePrevious'; import { esKuery } from '../../../../../../../src/plugins/data/public'; import { fetchLogEntries } from '../log_entries/api/fetch_log_entries'; import { useTrackedPromise } from '../../../utils/use_tracked_promise'; -import { LogEntry, LogEntriesCursor } from '../../../../common/http_api'; +import { LogEntry } from '../../../../common/http_api'; +import { LogEntryCursor } from '../../../../common/log_entry'; import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; +import { LogSourceConfigurationProperties } from '../log_source'; interface LogStreamProps { sourceId: string; startTimestamp: number; endTimestamp: number; query?: string; - center?: LogEntriesCursor; + center?: LogEntryCursor; + columns?: LogSourceConfigurationProperties['logColumns']; } interface LogStreamState { entries: LogEntry[]; - topCursor: LogEntriesCursor | null; - bottomCursor: LogEntriesCursor | null; + topCursor: LogEntryCursor | null; + bottomCursor: LogEntryCursor | null; hasMoreBefore: boolean; hasMoreAfter: boolean; } @@ -60,6 +63,7 @@ export function useLogStream({ endTimestamp, query, center, + columns, }: LogStreamProps): LogStreamReturn { const { services } = useKibanaContextForPlugin(); const [state, setState] = useSetState(INITIAL_STATE); @@ -100,6 +104,7 @@ export function useLogStream({ startTimestamp, endTimestamp, query: parsedQuery, + columns, ...fetchPosition, }, services.http.fetch diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx index b33eaf7e77bc3b..bb0c9196fb0ccd 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/page_results_content.tsx @@ -144,9 +144,13 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => { filteredDatasets: selectedDatasets, }); - const { flyoutVisible, setFlyoutVisibility, flyoutItem, isLoading: isFlyoutLoading } = useContext( - LogFlyout.Context - ); + const { + flyoutVisible, + setFlyoutVisibility, + flyoutError, + flyoutItem, + isLoading: isFlyoutLoading, + } = useContext(LogFlyout.Context); const handleQueryTimeRangeChange = useCallback( ({ start: startTime, end: endTime }: { start: string; end: string }) => { @@ -304,6 +308,7 @@ export const LogEntryRateResultsContent: React.FunctionComponent = () => { {flyoutVisible ? ( - +

    {examplesTitle}

    +
    + { const uiCapabilities = useKibana().services.application?.capabilities; + const { setHeaderActionMenu } = useContext(HeaderActionMenuContext); const { initialize } = useLogSourceContext(); @@ -66,6 +69,28 @@ export const LogsPageContent: React.FunctionComponent = () => { + {setHeaderActionMenu && ( + + + + + + + + {ADD_DATA_LABEL} + + + + + )} +
    { - - - - - - {ADD_DATA_LABEL} - - diff --git a/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx b/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx index ea9494c7073d4f..aa78ec9f515bf9 100644 --- a/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx +++ b/x-pack/plugins/infra/public/pages/logs/stream/page_logs_content.tsx @@ -37,6 +37,7 @@ export const LogsPageLogsContent: React.FunctionComponent = () => { surroundingLogsId, setSurroundingLogsId, flyoutItem, + flyoutError, isLoading, } = useContext(LogFlyoutState.Context); const { logSummaryHighlights } = useContext(LogHighlightsState.Context); @@ -80,6 +81,7 @@ export const LogsPageLogsContent: React.FunctionComponent = () => { setFilter={setFilter} setFlyoutVisibility={setFlyoutVisibility} flyoutItem={flyoutItem} + flyoutError={flyoutError} loading={isLoading} /> ) : null} diff --git a/x-pack/plugins/infra/public/pages/logs/stream/page_view_log_in_context.tsx b/x-pack/plugins/infra/public/pages/logs/stream/page_view_log_in_context.tsx index 4ac3d15a822226..8a4081288b283d 100644 --- a/x-pack/plugins/infra/public/pages/logs/stream/page_view_log_in_context.tsx +++ b/x-pack/plugins/infra/public/pages/logs/stream/page_view_log_in_context.tsx @@ -84,6 +84,7 @@ const LogInContextWrapper = euiStyled.div<{ width: number | string; height: numb padding: 16px; width: ${(props) => (typeof props.width === 'number' ? `${props.width}px` : props.width)}; height: ${(props) => (typeof props.height === 'number' ? `${props.height}px` : props.height)}; + max-height: 75vh; // Same as EuiModal `; const LogEntryContext: React.FC<{ context: LogEntry['context'] }> = ({ context }) => { diff --git a/x-pack/plugins/infra/public/pages/metrics/index.tsx b/x-pack/plugins/infra/public/pages/metrics/index.tsx index 022c62b6bb06bc..222278dde3314b 100644 --- a/x-pack/plugins/infra/public/pages/metrics/index.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/index.tsx @@ -40,6 +40,8 @@ import { SourceConfigurationFields } from '../../graphql/types'; import { AlertPrefillProvider } from '../../alerting/use_alert_prefill'; import { InfraMLCapabilitiesProvider } from '../../containers/ml/infra_ml_capabilities'; import { AnomalyDetectionFlyout } from './inventory_view/components/ml/anomaly_detection/anomoly_detection_flyout'; +import { HeaderMenuPortal } from '../../../../observability/public'; +import { HeaderActionMenuContext } from '../../utils/header_action_menu_provider'; const ADD_DATA_LABEL = i18n.translate('xpack.infra.metricsHeaderAddDataButtonLabel', { defaultMessage: 'Add data', @@ -47,6 +49,7 @@ const ADD_DATA_LABEL = i18n.translate('xpack.infra.metricsHeaderAddDataButtonLab export const InfrastructurePage = ({ match }: RouteComponentProps) => { const uiCapabilities = useKibana().services.application?.capabilities; + const { setHeaderActionMenu } = useContext(HeaderActionMenuContext); const kibana = useKibana(); @@ -72,6 +75,32 @@ export const InfrastructurePage = ({ match }: RouteComponentProps) => { })} /> + {setHeaderActionMenu && ( + + + + + + + + + + + + {ADD_DATA_LABEL} + + + + + )} +
    { ]} /> - - - - - - - - - - - {ADD_DATA_LABEL} - - - diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx index 0943ced5e5be08..b0e6ab751f02e1 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx @@ -4,9 +4,9 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EuiPortal, EuiTabs, EuiTab, EuiPanel, EuiTitle } from '@elastic/eui'; +import { EuiPortal, EuiTabs, EuiTab, EuiPanel, EuiTitle, EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import React, { CSSProperties, useMemo, useState } from 'react'; +import React, { useMemo, useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui'; import { euiStyled } from '../../../../../../../observability/public'; import { InfraWaffleMapNode, InfraWaffleMapOptions } from '../../../../../lib/lib'; @@ -14,8 +14,11 @@ import { InventoryItemType } from '../../../../../../common/inventory_models/typ import { MetricsTab } from './tabs/metrics/metrics'; import { LogsTab } from './tabs/logs'; import { ProcessesTab } from './tabs/processes'; -import { PropertiesTab } from './tabs/properties'; -import { OVERLAY_Y_START, OVERLAY_BOTTOM_MARGIN, OVERLAY_HEADER_SIZE } from './tabs/shared'; +import { PropertiesTab } from './tabs/properties/index'; +import { OVERLAY_Y_START, OVERLAY_BOTTOM_MARGIN } from './tabs/shared'; +import { useLinkProps } from '../../../../../hooks/use_link_props'; +import { getNodeDetailUrl } from '../../../../link_to'; +import { findInventoryModel } from '../../../../../../common/inventory_models'; interface Props { isOpen: boolean; @@ -35,6 +38,8 @@ export const NodeContextPopover = ({ }: Props) => { // eslint-disable-next-line react-hooks/exhaustive-deps const tabConfigs = [MetricsTab, LogsTab, ProcessesTab, PropertiesTab]; + const inventoryModel = findInventoryModel(nodeType); + const nodeDetailFrom = currentTime - inventoryModel.metrics.defaultTimeRangeInSeconds * 1000; const tabs = useMemo(() => { return tabConfigs.map((m) => { @@ -50,27 +55,58 @@ export const NodeContextPopover = ({ const [selectedTab, setSelectedTab] = useState(0); + const nodeDetailMenuItemLinkProps = useLinkProps({ + ...getNodeDetailUrl({ + nodeType, + nodeId: node.id, + from: nodeDetailFrom, + to: currentTime, + }), + }); + if (!isOpen) { return null; } return ( - + - + - +

    {node.name}

    - - - + + + + + + + + + + + + -
    - + + + {tabs.map((tab, i) => ( setSelectedTab(i)}> {tab.name} @@ -79,32 +115,38 @@ export const NodeContextPopover = ({
    {tabs[selectedTab].content} -
    +
    ); }; const OverlayHeader = euiStyled.div` - border-color: ${(props) => props.theme.eui.euiBorderColor}; - border-bottom-width: ${(props) => props.theme.eui.euiBorderWidthThick}; - padding-bottom: 0; - overflow: hidden; - background-color: ${(props) => props.theme.eui.euiColorLightestShade}; - height: ${OVERLAY_HEADER_SIZE}px; + padding-top: ${(props) => props.theme.eui.paddingSizes.m}; + padding-right: ${(props) => props.theme.eui.paddingSizes.m}; + padding-left: ${(props) => props.theme.eui.paddingSizes.m}; + background-color: ${(props) => props.theme.eui.euiPageBackgroundColor}; + box-shadow: inset 0 -1px ${(props) => props.theme.eui.euiBorderColor}; `; -const OverlayHeaderTitleWrapper = euiStyled(EuiFlexGroup).attrs({ alignItems: 'center' })` - padding: ${(props) => props.theme.eui.paddingSizes.s} ${(props) => - props.theme.eui.paddingSizes.m} 0; -`; +const OverlayPanel = euiStyled(EuiPanel).attrs({ paddingSize: 'none' })` + display: flex; + flex-direction: column; + position: absolute; + right: 16px; + top: ${OVERLAY_Y_START}px; + width: 100%; + max-width: 720px; + z-index: 2; + max-height: calc(100vh - ${OVERLAY_Y_START + OVERLAY_BOTTOM_MARGIN}px); + overflow: hidden; -const panelStyle: CSSProperties = { - position: 'absolute', - right: 10, - top: OVERLAY_Y_START, - width: '50%', - maxWidth: 730, - zIndex: 2, - height: `calc(100vh - ${OVERLAY_Y_START + OVERLAY_BOTTOM_MARGIN}px)`, - overflow: 'hidden', -}; + @media (max-width: 752px) { + border-radius: 0px !important; + left: 0px; + right: 0px; + top: 97px; + bottom: 0; + max-height: calc(100vh - 97px); + max-width: 100%; + } +`; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/logs.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/logs.tsx index ce800a7d737001..81ca7d1dcd27f6 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/logs.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/logs.tsx @@ -15,7 +15,6 @@ import { TabContent, TabProps } from './shared'; import { LogStream } from '../../../../../../components/log_stream'; import { useWaffleOptionsContext } from '../../../hooks/use_waffle_options'; import { findInventoryFields } from '../../../../../../../common/inventory_models'; -import { euiStyled } from '../../../../../../../../observability/public'; import { useLinkProps } from '../../../../../../hooks/use_link_props'; import { getNodeLogsUrl } from '../../../../../link_to'; @@ -51,22 +50,25 @@ const TabComponent = (props: TabProps) => { return ( - + - - - + - + { ); }; -const QueryWrapper = euiStyled.div` - padding: ${(props) => props.theme.eui.paddingSizes.m}; - padding-right: 0; -`; - export const LogsTab = { id: 'logs', name: i18n.translate('xpack.infra.nodeDetails.tabs.logs', { diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_header.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_header.tsx index 63004072c08d05..ad4a48635d3765 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_header.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/chart_header.tsx @@ -11,7 +11,6 @@ import { EuiFlexGroup } from '@elastic/eui'; import { EuiIcon } from '@elastic/eui'; import { colorTransformer } from '../../../../../../../../common/color_palette'; import { MetricsExplorerOptionsMetric } from '../../../../../metrics_explorer/hooks/use_metrics_explorer_options'; -import { euiStyled } from '../../../../../../../../../observability/public'; interface Props { title: string; @@ -20,33 +19,33 @@ interface Props { export const ChartHeader = ({ title, metrics }: Props) => { return ( - + - - {title} + +

    {title}

    - + {metrics.map((chartMetric) => ( - - - - - - {chartMetric.label} - - + + + + + + + {chartMetric.label} + + + ))} -
    +
    ); }; - -const ChartHeaderWrapper = euiStyled.div` - display: flex; - width: 100%; - padding: ${(props) => props.theme.eui.paddingSizes.s} ${(props) => - props.theme.eui.paddingSizes.m}; -`; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/metrics.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/metrics.tsx index b5628b0a7c9b45..a295d8293632f4 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/metrics.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/metrics.tsx @@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n'; import { Axis, Chart, + ChartSizeArray, niceTimeFormatter, Position, Settings, @@ -17,6 +18,7 @@ import { PointerEvent, } from '@elastic/charts'; import moment from 'moment'; +import { EuiLoadingChart, EuiSpacer, EuiFlexGrid, EuiFlexItem } from '@elastic/eui'; import { TabContent, TabProps } from '../shared'; import { useSnapshot } from '../../../../hooks/use_snaphot'; import { useWaffleOptionsContext } from '../../../../hooks/use_waffle_options'; @@ -38,7 +40,6 @@ import { createInventoryMetricFormatter } from '../../../../lib/create_inventory import { calculateDomain } from '../../../../../metrics_explorer/components/helpers/calculate_domain'; import { getTimelineChartTheme } from '../../../../../metrics_explorer/components/helpers/get_chart_theme'; import { useUiSetting } from '../../../../../../../../../../../src/plugins/kibana_react/public'; -import { euiStyled } from '../../../../../../../../../observability/public'; import { ChartHeader } from './chart_header'; import { SYSTEM_METRIC_NAME, @@ -55,6 +56,8 @@ import { import { TimeDropdown } from './time_dropdown'; const ONE_HOUR = 60 * 60 * 1000; +const CHART_SIZE: ChartSizeArray = ['100%', 160]; + const TabComponent = (props: TabProps) => { const cpuChartRef = useRef(null); const networkChartRef = useRef(null); @@ -82,9 +85,9 @@ const TabComponent = (props: TabProps) => { } const buildCustomMetric = useCallback( - (field: string, id: string) => ({ + (field: string, id: string, aggregation: string = 'avg') => ({ type: 'custom' as SnapshotMetricType, - aggregation: 'avg', + aggregation, field, id, }), @@ -110,6 +113,7 @@ const TabComponent = (props: TabProps) => { buildCustomMetric('system.load.15', 'load15m'), buildCustomMetric('system.memory.actual.used.bytes', 'usedMemory'), buildCustomMetric('system.memory.actual.free', 'freeMemory'), + buildCustomMetric('system.cpu.cores', 'cores', 'max'), ], [], nodeType, @@ -223,6 +227,7 @@ const TabComponent = (props: TabProps) => { const load15mMetricsTs = useMemo(() => getTimeseries('load15m'), [getTimeseries]); const usedMemoryMetricsTs = useMemo(() => getTimeseries('usedMemory'), [getTimeseries]); const freeMemoryMetricsTs = useMemo(() => getTimeseries('freeMemory'), [getTimeseries]); + const coresMetricsTs = useMemo(() => getTimeseries('cores'), [getTimeseries]); useEffect(() => { reload(); @@ -239,7 +244,7 @@ const TabComponent = (props: TabProps) => { !usedMemoryMetricsTs || !freeMemoryMetricsTs ) { - return
    ; + return ; } const cpuChartMetrics = buildChartMetricLabels([SYSTEM_METRIC_NAME, USER_METRIC_NAME], 'avg'); @@ -253,6 +258,23 @@ const TabComponent = (props: TabProps) => { 'rate' ); + systemMetricsTs.rows = systemMetricsTs.rows.slice().map((r, idx) => { + const metric = r.metric_0 as number | undefined; + const cores = coresMetricsTs!.rows[idx].metric_0 as number | undefined; + if (metric && cores) { + r.metric_0 = metric / cores; + } + return r; + }); + + userMetricsTs.rows = userMetricsTs.rows.slice().map((r, idx) => { + const metric = r.metric_0 as number | undefined; + const cores = coresMetricsTs!.rows[idx].metric_0 as number | undefined; + if (metric && cores) { + r.metric_0 = metric / cores; + } + return r; + }); const cpuTimeseries = mergeTimeseries(systemMetricsTs, userMetricsTs); const networkTimeseries = mergeTimeseries(rxMetricsTs, txMetricsTs); const loadTimeseries = mergeTimeseries(load1mMetricsTs, load5mMetricsTs, load15mMetricsTs); @@ -262,210 +284,194 @@ const TabComponent = (props: TabProps) => { return ( - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + ); }; -const ChartsContainer = euiStyled.div` - display: flex; - flex-direction: row; - flex-wrap: wrap; -`; - -const ChartContainerWrapper = euiStyled.div` - width: 50% -`; - -const TimepickerWrapper = euiStyled.div` - padding: ${(props) => props.theme.eui.paddingSizes.m}; - width: 50%; -`; - -const ChartContainer: React.FC = ({ children }) => ( -
    - {children} -
    -); +const LoadingPlaceholder = () => { + return ( +
    + +
    + ); +}; export const MetricsTab = { id: 'metrics', diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/time_dropdown.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/time_dropdown.tsx index 00441e520c90a6..fcea2af8476f21 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/time_dropdown.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/metrics/time_dropdown.tsx @@ -15,7 +15,7 @@ interface Props { export const TimeDropdown = (props: Props) => ( { - const [searchFilter, setSearchFilter] = useState(EuiSearchBar.Query.MATCH_ALL); + const [searchFilter, setSearchFilter] = useState(''); + const [sortBy, setSortBy] = useState({ + name: 'cpu', + isAscending: false, + }); + + const timefield = options.fields!.timestamp; const hostTerm = useMemo(() => { const field = @@ -26,69 +38,80 @@ const TabComponent = ({ currentTime, node, nodeType, options }: TabProps) => { const { loading, error, response, makeRequest: reload } = useProcessList( hostTerm, - 'metricbeat-*', - options.fields!.timestamp, - currentTime + timefield, + currentTime, + sortBy, + parseSearchString(searchFilter) ); - if (error) { - return ( - - - {i18n.translate('xpack.infra.metrics.nodeDetails.processListError', { - defaultMessage: 'Unable to show process data', - })} - - } - actions={ - - {i18n.translate('xpack.infra.metrics.nodeDetails.processListRetry', { - defaultMessage: 'Try again', - })} - - } - /> - - ); - } + const debouncedSearchOnChange = useMemo( + () => + debounce<(props: { queryText: string }) => void>( + ({ queryText }) => setSearchFilter(queryText), + 500 + ), + [setSearchFilter] + ); return ( - - - setSearchFilter(query ?? EuiSearchBar.Query.MATCH_ALL)} - box={{ - incremental: true, - placeholder: i18n.translate('xpack.infra.metrics.nodeDetails.searchForProcesses', { - defaultMessage: 'Search for processes…', - }), - }} - filters={[ - { - type: 'field_value_selection', - field: 'state', - name: 'State', - operator: 'exact', - multiSelect: false, - options: Object.entries(STATE_NAMES).map(([value, view]: [string, string]) => ({ - value, - view, - })), - }, - ]} - /> - - + + + + ({ + value, + view, + })), + }, + ]} + /> + + {!error ? ( + + ) : ( + + {i18n.translate('xpack.infra.metrics.nodeDetails.processListError', { + defaultMessage: 'Unable to show process data', + })} + + } + actions={ + + {i18n.translate('xpack.infra.metrics.nodeDetails.processListRetry', { + defaultMessage: 'Try again', + })} + + } + /> + )} + ); }; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_process_list.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_process_list.ts deleted file mode 100644 index 88584ef2987e14..00000000000000 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_process_list.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { ProcessListAPIResponse } from '../../../../../../../../common/http_api'; -import { Process } from './types'; - -export const parseProcessList = (processList: ProcessListAPIResponse) => - processList.map((process) => { - const command = process.id; - let mostRecentPoint; - for (let i = process.rows.length - 1; i >= 0; i--) { - const point = process.rows[i]; - if (point && Array.isArray(point.meta) && point.meta?.length) { - mostRecentPoint = point; - break; - } - } - if (!mostRecentPoint) return { command, cpu: null, memory: null, startTime: null, state: null }; - - const { cpu, memory } = mostRecentPoint; - const { system, process: processMeta, user } = (mostRecentPoint.meta as any[])[0]; - const startTime = system.process.cpu.start_time; - const state = system.process.state; - - const timeseries = { - cpu: pickTimeseries(process.rows, 'cpu'), - memory: pickTimeseries(process.rows, 'memory'), - }; - - return { - command, - cpu, - memory, - startTime, - state, - pid: processMeta.pid, - user: user.name, - timeseries, - } as Process; - }); - -const pickTimeseries = (rows: any[], metricID: string) => ({ - rows: rows.map((row) => ({ - timestamp: row.timestamp, - metric_0: row[metricID], - })), - columns: [ - { name: 'timestamp', type: 'date' }, - { name: 'metric_0', type: 'number' }, - ], - id: metricID, -}); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_search_string.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_search_string.ts new file mode 100644 index 00000000000000..455656306c8d00 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/parse_search_string.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +export const parseSearchString = (query: string) => { + if (query.trim() === '') { + return [ + { + match_all: {}, + }, + ]; + } + const elements = query + .split(' ') + .map((s) => s.trim()) + .filter(Boolean); + const stateFilter = elements.filter((s) => s.startsWith('state=')); + const cmdlineFilters = elements.filter((s) => !s.startsWith('state=')); + return [ + ...cmdlineFilters.map((clause) => ({ + query_string: { + fields: ['system.process.cmdline'], + query: `*${escapeReservedCharacters(clause)}*`, + minimum_should_match: 1, + }, + })), + ...stateFilter.map((state) => ({ + match: { + 'system.process.state': state.replace('state=', ''), + }, + })), + ]; +}; + +const escapeReservedCharacters = (clause: string) => + clause.replace(/([+-=!\(\)\{\}\[\]^"~*?:\\/!]|&&|\|\|)/g, '\\$1'); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx index bbf4a25fc49a75..4718ed09dc9b26 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx @@ -4,9 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useState, useMemo } from 'react'; -import moment from 'moment'; -import { first, last } from 'lodash'; +import React, { useState } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiTableRow, @@ -22,18 +20,10 @@ import { EuiButton, EuiSpacer, } from '@elastic/eui'; -import { Axis, Chart, Settings, Position, TooltipValue, niceTimeFormatter } from '@elastic/charts'; import { AutoSizer } from '../../../../../../../components/auto_sizer'; -import { createFormatter } from '../../../../../../../../common/formatters'; -import { useUiSetting } from '../../../../../../../../../../../src/plugins/kibana_react/public'; -import { getChartTheme } from '../../../../../metrics_explorer/components/helpers/get_chart_theme'; -import { calculateDomain } from '../../../../../metrics_explorer/components/helpers/calculate_domain'; -import { MetricsExplorerChartType } from '../../../../../metrics_explorer/hooks/use_metrics_explorer_options'; -import { MetricExplorerSeriesChart } from '../../../../../metrics_explorer/components/series_chart'; -import { MetricsExplorerAggregation } from '../../../../../../../../common/http_api'; -import { Color } from '../../../../../../../../common/color_palette'; import { euiStyled } from '../../../../../../../../../observability/public'; import { Process } from './types'; +import { ProcessRowCharts } from './process_row_charts'; interface Props { cells: React.ReactNode[]; @@ -118,26 +108,7 @@ export const ProcessRow = ({ cells, item }: Props) => { {item.user} - - {cpuMetricLabel} - - - - - - {memoryMetricLabel} - - - - + @@ -149,76 +120,6 @@ export const ProcessRow = ({ cells, item }: Props) => { ); }; -interface ProcessChartProps { - timeseries: Process['timeseries']['x']; - color: Color; - label: string; -} -const ProcessChart = ({ timeseries, color, label }: ProcessChartProps) => { - const chartMetric = { - color, - aggregation: 'avg' as MetricsExplorerAggregation, - label, - }; - const isDarkMode = useUiSetting('theme:darkMode'); - - const dateFormatter = useMemo(() => { - if (!timeseries) return () => ''; - const firstTimestamp = first(timeseries.rows)?.timestamp; - const lastTimestamp = last(timeseries.rows)?.timestamp; - - if (firstTimestamp == null || lastTimestamp == null) { - return (value: number) => `${value}`; - } - - return niceTimeFormatter([firstTimestamp, lastTimestamp]); - }, [timeseries]); - - const yAxisFormatter = createFormatter('percent'); - - const tooltipProps = { - headerFormatter: (tooltipValue: TooltipValue) => - moment(tooltipValue.value).format('Y-MM-DD HH:mm:ss.SSS'), - }; - - const dataDomain = calculateDomain(timeseries, [chartMetric], false); - const domain = dataDomain - ? { - max: dataDomain.max * 1.1, // add 10% headroom. - min: dataDomain.min, - } - : { max: 0, min: 0 }; - - return ( - - - - - - - - - ); -}; - export const CodeLine = euiStyled(EuiCode).attrs({ transparentBackground: true, })` @@ -246,22 +147,3 @@ const ExpandedRowCell = euiStyled(EuiTableRowCell).attrs({ padding: 0 ${(props) => props.theme.eui.paddingSizes.m}; background-color: ${(props) => props.theme.eui.euiColorLightestShade}; `; - -const ChartContainer = euiStyled.div` - width: 300px; - height: 140px; -`; - -const cpuMetricLabel = i18n.translate( - 'xpack.infra.metrics.nodeDetails.processes.expandedRowLabelCPU', - { - defaultMessage: 'CPU', - } -); - -const memoryMetricLabel = i18n.translate( - 'xpack.infra.metrics.nodeDetails.processes.expandedRowLabelMemory', - { - defaultMessage: 'Memory', - } -); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx new file mode 100644 index 00000000000000..7b7a285b5d6b85 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row_charts.tsx @@ -0,0 +1,164 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useMemo } from 'react'; +import moment from 'moment'; +import { first, last } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { + EuiDescriptionListTitle, + EuiDescriptionListDescription, + EuiFlexItem, + EuiLoadingChart, + EuiEmptyPrompt, + EuiText, +} from '@elastic/eui'; +import { Axis, Chart, Settings, Position, TooltipValue, niceTimeFormatter } from '@elastic/charts'; +import { createFormatter } from '../../../../../../../../common/formatters'; +import { useUiSetting } from '../../../../../../../../../../../src/plugins/kibana_react/public'; +import { getChartTheme } from '../../../../../metrics_explorer/components/helpers/get_chart_theme'; +import { calculateDomain } from '../../../../../metrics_explorer/components/helpers/calculate_domain'; +import { MetricsExplorerChartType } from '../../../../../metrics_explorer/hooks/use_metrics_explorer_options'; +import { MetricExplorerSeriesChart } from '../../../../../metrics_explorer/components/series_chart'; +import { MetricsExplorerAggregation } from '../../../../../../../../common/http_api'; +import { Color } from '../../../../../../../../common/color_palette'; +import { euiStyled } from '../../../../../../../../../observability/public'; +import { useProcessListRowChart } from '../../../../hooks/use_process_list_row_chart'; +import { Process } from './types'; + +interface Props { + command: string; +} + +export const ProcessRowCharts = ({ command }: Props) => { + const { loading, error, response } = useProcessListRowChart(command); + + const isLoading = loading || !response; + + const cpuChart = error ? ( + {failedToLoadChart}} /> + ) : isLoading ? ( + + ) : ( + + ); + const memoryChart = error ? ( + {failedToLoadChart}} /> + ) : isLoading ? ( + + ) : ( + + ); + + return ( + <> + + {cpuMetricLabel} + {cpuChart} + + + {memoryMetricLabel} + {memoryChart} + + + ); +}; + +interface ProcessChartProps { + timeseries: Process['timeseries']['x']; + color: Color; + label: string; +} +const ProcessChart = ({ timeseries, color, label }: ProcessChartProps) => { + const chartMetric = { + color, + aggregation: 'avg' as MetricsExplorerAggregation, + label, + }; + const isDarkMode = useUiSetting('theme:darkMode'); + + const dateFormatter = useMemo(() => { + if (!timeseries) return () => ''; + const firstTimestamp = first(timeseries.rows)?.timestamp; + const lastTimestamp = last(timeseries.rows)?.timestamp; + + if (firstTimestamp == null || lastTimestamp == null) { + return (value: number) => `${value}`; + } + + return niceTimeFormatter([firstTimestamp, lastTimestamp]); + }, [timeseries]); + + const yAxisFormatter = createFormatter('percent'); + + const tooltipProps = { + headerFormatter: (tooltipValue: TooltipValue) => + moment(tooltipValue.value).format('Y-MM-DD HH:mm:ss.SSS'), + }; + + const dataDomain = calculateDomain(timeseries, [chartMetric], false); + const domain = dataDomain + ? { + max: dataDomain.max * 1.1, // add 10% headroom. + min: dataDomain.min, + } + : { max: 0, min: 0 }; + + return ( + + + + + + + + + ); +}; + +const ChartContainer = euiStyled.div` + width: 300px; + height: 140px; +`; + +const cpuMetricLabel = i18n.translate( + 'xpack.infra.metrics.nodeDetails.processes.expandedRowLabelCPU', + { + defaultMessage: 'CPU', + } +); + +const memoryMetricLabel = i18n.translate( + 'xpack.infra.metrics.nodeDetails.processes.expandedRowLabelMemory', + { + defaultMessage: 'Memory', + } +); + +const failedToLoadChart = i18n.translate( + 'xpack.infra.metrics.nodeDetails.processes.failedToLoadChart', + { + defaultMessage: 'Unable to load chart', + } +); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/processes_table.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/processes_table.tsx index 43f3a333fda838..1952ba947761c4 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/processes_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/processes_table.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useMemo, useState, useEffect, useCallback } from 'react'; +import React, { useMemo, useState, useCallback } from 'react'; import { omit } from 'lodash'; import { i18n } from '@kbn/i18n'; import { @@ -13,10 +13,8 @@ import { EuiTableBody, EuiTableHeaderCell, EuiTableRowCell, - EuiSpacer, - EuiTablePagination, EuiLoadingChart, - Query, + EuiEmptyPrompt, SortableProperties, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, @@ -24,17 +22,18 @@ import { import { ProcessListAPIResponse } from '../../../../../../../../common/http_api'; import { FORMATTERS } from '../../../../../../../../common/formatters'; import { euiStyled } from '../../../../../../../../../observability/public'; +import { SortBy } from '../../../../hooks/use_process_list'; import { Process } from './types'; import { ProcessRow, CodeLine } from './process_row'; -import { parseProcessList } from './parse_process_list'; import { StateBadge } from './state_badge'; import { STATE_ORDER } from './states'; interface TableProps { - processList: ProcessListAPIResponse; + processList: ProcessListAPIResponse['processList']; currentTime: number; isLoading: boolean; - searchFilter: Query; + sortBy: SortBy; + setSortBy: (s: SortBy) => void; } function useSortableProperties( @@ -43,25 +42,21 @@ function useSortableProperties( getValue: (obj: T) => any; isAscending: boolean; }>, - defaultSortProperty: string + defaultSortProperty: string, + callback: (s: SortBy) => void ) { const [sortableProperties] = useState>( new SortableProperties(sortablePropertyItems, defaultSortProperty) ); - const [sortedColumn, setSortedColumn] = useState( - omit(sortableProperties.getSortedProperty(), 'getValue') - ); return { - setSortedColumn: useCallback( + updateSortableProperties: useCallback( (property) => { sortableProperties.sortOn(property); - setSortedColumn(omit(sortableProperties.getSortedProperty(), 'getValue')); + callback(omit(sortableProperties.getSortedProperty(), 'getValue')); }, - [sortableProperties] + [sortableProperties, callback] ), - sortedColumn, - sortItems: (items: T[]) => sortableProperties.sortItems(items), }; } @@ -69,28 +64,15 @@ export const ProcessesTable = ({ processList, currentTime, isLoading, - searchFilter, + sortBy, + setSortBy, }: TableProps) => { - const [currentPage, setCurrentPage] = useState(0); - const [itemsPerPage, setItemsPerPage] = useState(10); - useEffect(() => setCurrentPage(0), [processList, searchFilter, itemsPerPage]); - - const { sortedColumn, sortItems, setSortedColumn } = useSortableProperties( + const { updateSortableProperties } = useSortableProperties( [ - { - name: 'state', - getValue: (item: any) => STATE_ORDER.indexOf(item.state), - isAscending: true, - }, - { - name: 'command', - getValue: (item: any) => item.command.toLowerCase(), - isAscending: true, - }, { name: 'startTime', getValue: (item: any) => Date.parse(item.startTime), - isAscending: false, + isAscending: true, }, { name: 'cpu', @@ -103,32 +85,34 @@ export const ProcessesTable = ({ isAscending: false, }, ], - 'state' + 'cpu', + setSortBy ); - const currentItems = useMemo(() => { - const filteredItems = Query.execute(searchFilter, parseProcessList(processList)) as Process[]; - if (!filteredItems.length) return []; - const sortedItems = sortItems(filteredItems); - return sortedItems; - }, [processList, searchFilter, sortItems]); - - const pageCount = useMemo(() => Math.ceil(currentItems.length / itemsPerPage), [ - itemsPerPage, - currentItems, - ]); - - const pageStartIdx = useMemo(() => currentPage * itemsPerPage + (currentPage > 0 ? 1 : 0), [ - currentPage, - itemsPerPage, - ]); - const currentItemsPage = useMemo( - () => currentItems.slice(pageStartIdx, pageStartIdx + itemsPerPage), - [pageStartIdx, currentItems, itemsPerPage] + const currentItems = useMemo( + () => + processList.sort( + (a, b) => STATE_ORDER.indexOf(a.state) - STATE_ORDER.indexOf(b.state) + ) as Process[], + [processList] ); if (isLoading) return ; + if (currentItems.length === 0) + return ( + + {i18n.translate('xpack.infra.metrics.nodeDetails.noProcesses', { + defaultMessage: 'No processes matched these search terms', + })} + + } + /> + ); + return ( <> @@ -139,27 +123,18 @@ export const ProcessesTable = ({ key={`${String(column.field)}-header`} align={column.align ?? LEFT_ALIGNMENT} width={column.width} - onSort={column.sortable ? () => setSortedColumn(column.field) : undefined} - isSorted={sortedColumn.name === column.field} - isSortAscending={sortedColumn.name === column.field && sortedColumn.isAscending} + onSort={column.sortable ? () => updateSortableProperties(column.field) : undefined} + isSorted={sortBy.name === column.field} + isSortAscending={sortBy.name === column.field && sortBy.isAscending} > {column.name} ))} - + - - ); }; @@ -213,8 +188,8 @@ const StyledTableBody = euiStyled(EuiTableBody)` const ONE_MINUTE = 60 * 1000; const ONE_HOUR = ONE_MINUTE * 60; -const RuntimeCell = ({ startTime, currentTime }: { startTime: string; currentTime: number }) => { - const runtimeLength = currentTime - Date.parse(startTime); +const RuntimeCell = ({ startTime, currentTime }: { startTime: number; currentTime: number }) => { + const runtimeLength = currentTime - startTime; let remainingRuntimeMS = runtimeLength; const runtimeHours = Math.floor(remainingRuntimeMS / ONE_HOUR); remainingRuntimeMS -= runtimeHours * ONE_HOUR; @@ -244,7 +219,7 @@ const columns: Array<{ name: i18n.translate('xpack.infra.metrics.nodeDetails.processes.columnLabelState', { defaultMessage: 'State', }), - sortable: true, + sortable: false, render: (state: string) => , width: 84, textOnly: false, @@ -254,7 +229,7 @@ const columns: Array<{ name: i18n.translate('xpack.infra.metrics.nodeDetails.processes.columnLabelCommand', { defaultMessage: 'Command', }), - sortable: true, + sortable: false, width: '40%', render: (command: string) => {command}, }, @@ -265,7 +240,7 @@ const columns: Array<{ }), align: RIGHT_ALIGNMENT, sortable: true, - render: (startTime: string, currentTime: number) => ( + render: (startTime: number, currentTime: number) => ( ), }, diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/summary_table.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/summary_table.tsx index 59becb0bf534d5..6efabf1b8c0ae8 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/summary_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/summary_table.tsx @@ -5,16 +5,15 @@ */ import React, { useMemo } from 'react'; -import { mapValues, countBy } from 'lodash'; +import { mapValues } from 'lodash'; import { i18n } from '@kbn/i18n'; import { EuiBasicTable, EuiLoadingSpinner, EuiBasicTableColumn } from '@elastic/eui'; import { euiStyled } from '../../../../../../../../../observability/public'; import { ProcessListAPIResponse } from '../../../../../../../../common/http_api'; -import { parseProcessList } from './parse_process_list'; import { STATE_NAMES } from './states'; interface Props { - processList: ProcessListAPIResponse; + processSummary: ProcessListAPIResponse['summary']; isLoading: boolean; } @@ -22,18 +21,17 @@ type SummaryColumn = { total: number; } & Record; -export const SummaryTable = ({ processList, isLoading }: Props) => { - const parsedList = parseProcessList(processList); +export const SummaryTable = ({ processSummary, isLoading }: Props) => { const processCount = useMemo( () => [ { - total: isLoading ? -1 : parsedList.length, + total: isLoading ? -1 : processSummary.total, ...mapValues(STATE_NAMES, () => (isLoading ? -1 : 0)), - ...(isLoading ? [] : countBy(parsedList, 'state')), + ...(isLoading ? {} : processSummary), }, ] as SummaryColumn[], - [parsedList, isLoading] + [processSummary, isLoading] ); return ( diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties.tsx deleted file mode 100644 index 8157aca9b14107..00000000000000 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { TabContent, TabProps } from './shared'; - -const TabComponent = (props: TabProps) => { - return Properties Placeholder; -}; - -export const PropertiesTab = { - id: 'properties', - name: i18n.translate('xpack.infra.nodeDetails.tabs.properties', { - defaultMessage: 'Properties', - }), - content: TabComponent, -}; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/build_fields.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/build_fields.ts new file mode 100644 index 00000000000000..79610ba3eef0a6 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/build_fields.ts @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { InfraMetadata } from '../../../../../../../../common/http_api'; + +export const getFields = (metadata: InfraMetadata, group: 'cloud' | 'host' | 'agent') => { + switch (group) { + case 'host': + return prune([ + { + name: 'host.architecture', + value: metadata.info?.host?.architecture, + }, + { + name: 'host.hostname', + value: metadata.info?.host?.name, + }, + { + name: 'host.id', + value: metadata.info?.host?.id, + }, + { + name: 'host.ip', + value: metadata.info?.host?.ip, + }, + { + name: 'host.mac', + value: metadata.info?.host?.mac, + }, + { + name: 'host.name', + value: metadata.info?.host?.name, + }, + { + name: 'host.os.build', + value: metadata.info?.host?.os?.build, + }, + { + name: 'host.os.family', + value: metadata.info?.host?.os?.family, + }, + { + name: 'host.os.name', + value: metadata.info?.host?.os?.name, + }, + { + name: 'host.os.kernel', + value: metadata.info?.host?.os?.kernel, + }, + { + name: 'host.os.platform', + value: metadata.info?.host?.os?.platform, + }, + { + name: 'host.os.version', + value: metadata.info?.host?.os?.version, + }, + ]); + case 'cloud': + return prune([ + { + name: 'cloud.account.id', + value: metadata.info?.cloud?.account?.id, + }, + { + name: 'cloud.account.name', + value: metadata.info?.cloud?.account?.name, + }, + { + name: 'cloud.availability_zone', + value: metadata.info?.cloud?.availability_zone, + }, + { + name: 'cloud.instance.id', + value: metadata.info?.cloud?.instance?.id, + }, + { + name: 'cloud.instance.name', + value: metadata.info?.cloud?.instance?.name, + }, + { + name: 'cloud.machine.type', + value: metadata.info?.cloud?.machine?.type, + }, + { + name: 'cloud.provider', + value: metadata.info?.cloud?.provider, + }, + { + name: 'cloud.region', + value: metadata.info?.cloud?.region, + }, + ]); + case 'agent': + return prune([ + { + name: 'agent.id', + value: metadata.info?.agent?.id, + }, + { + name: 'agent.version', + value: metadata.info?.agent?.version, + }, + { + name: 'agent.policy', + value: metadata.info?.agent?.policy, + }, + ]); + } +}; + +const prune = (fields: Array<{ name: string; value: string | string[] | undefined }>) => + fields.filter((f) => !!f.value); diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/index.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/index.tsx new file mode 100644 index 00000000000000..46b63bc400a2b4 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/index.tsx @@ -0,0 +1,133 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { useCallback, useContext, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiLoadingChart } from '@elastic/eui'; +import { TabContent, TabProps } from '../shared'; +import { Source } from '../../../../../../../containers/source'; +import { findInventoryModel } from '../../../../../../../../common/inventory_models'; +import { InventoryItemType } from '../../../../../../../../common/inventory_models/types'; +import { useMetadata } from '../../../../../metric_detail/hooks/use_metadata'; +import { getFields } from './build_fields'; +import { useWaffleTimeContext } from '../../../../hooks/use_waffle_time'; +import { Table } from './table'; +import { euiStyled } from '../../../../../../../../../observability/public'; +import { useWaffleFiltersContext } from '../../../../hooks/use_waffle_filters'; + +const TabComponent = (props: TabProps) => { + const nodeId = props.node.id; + const nodeType = props.nodeType as InventoryItemType; + const inventoryModel = findInventoryModel(nodeType); + const { sourceId } = useContext(Source.Context); + const { currentTimeRange } = useWaffleTimeContext(); + const { applyFilterQuery } = useWaffleFiltersContext(); + const { loading: metadataLoading, metadata } = useMetadata( + nodeId, + nodeType, + inventoryModel.requiredMetrics, + sourceId, + currentTimeRange + ); + + const hostFields = useMemo(() => { + if (!metadata) return null; + return getFields(metadata, 'host'); + }, [metadata]); + + const cloudFields = useMemo(() => { + if (!metadata) return null; + return getFields(metadata, 'cloud'); + }, [metadata]); + + const agentFields = useMemo(() => { + if (!metadata) return null; + return getFields(metadata, 'agent'); + }, [metadata]); + + const onFilter = useCallback( + (item: { name: string; value: string }) => { + applyFilterQuery({ + kind: 'kuery', + expression: `${item.name}: "${item.value}"`, + }); + }, + [applyFilterQuery] + ); + + if (metadataLoading) { + return ; + } + + return ( + + {hostFields && hostFields.length > 0 && ( + + + + )} + {cloudFields && cloudFields.length > 0 && ( + +
    + + )} + {agentFields && agentFields.length > 0 && ( + +
    + + )} + + ); +}; + +const TableWrapper = euiStyled.div` + &:not(:last-child) { + margin-bottom: 16px + } +`; + +const LoadingPlaceholder = () => { + return ( +
    + +
    + ); +}; + +export const PropertiesTab = { + id: 'properties', + name: i18n.translate('xpack.infra.nodeDetails.tabs.metadata.title', { + defaultMessage: 'Metadata', + }), + content: TabComponent, +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx new file mode 100644 index 00000000000000..7f0ca2b6e262a3 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/properties/table.tsx @@ -0,0 +1,165 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + EuiText, + EuiToolTip, + EuiButtonIcon, + EuiFlexGroup, + EuiFlexItem, + EuiLink, + EuiBasicTable, + EuiSpacer, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { first } from 'lodash'; +import React, { useCallback, useMemo, useState } from 'react'; +import { FormattedMessage } from 'react-intl'; + +interface Row { + name: string; + value: string | string[] | undefined; +} + +interface Props { + rows: Row[]; + title: string; + onClick(item: Row): void; +} + +export const Table = (props: Props) => { + const { rows, title, onClick } = props; + const columns = useMemo( + () => [ + { + field: 'name', + name: '', + width: '35%', + sortable: false, + render: (name: string, item: Row) => ( + + {item.name} + + ), + }, + { + field: 'value', + name: '', + width: '65%', + sortable: false, + render: (_name: string, item: Row) => { + return ( + + + + + onClick(item)} + /> + + + + {!Array.isArray(item.value) && item.value} + {Array.isArray(item.value) && } + + + + ); + }, + }, + ], + [onClick] + ); + + return ( + <> + +

    {title}

    +
    + + + + ); +}; + +class TableWithoutHeader extends EuiBasicTable { + renderTableHead() { + return <>; + } +} + +interface MoreProps { + values: string[]; +} +const ArrayValue = (props: MoreProps) => { + const { values } = props; + const [isExpanded, setIsExpanded] = useState(false); + const expand = useCallback(() => { + setIsExpanded(true); + }, []); + + const collapse = useCallback(() => { + setIsExpanded(false); + }, []); + + return ( + <> + {!isExpanded && ( + + + {first(values)} + {' ... '} + + + + + + + + )} + {isExpanded && ( +
    + {values.map((v) => ( +
    {v}
    + ))} + + {i18n.translate('xpack.infra.nodeDetails.tabs.metadata.seeLess', { + defaultMessage: 'Show less', + })} + +
    + )} + + ); +}; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx index 7386fa64aca9cf..6ff31e86c9d5e1 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx @@ -17,11 +17,9 @@ export interface TabProps { export const OVERLAY_Y_START = 266; export const OVERLAY_BOTTOM_MARGIN = 16; -export const OVERLAY_HEADER_SIZE = 96; -const contentHeightOffset = OVERLAY_Y_START + OVERLAY_BOTTOM_MARGIN + OVERLAY_HEADER_SIZE; export const TabContent = euiStyled.div` - padding: ${(props) => props.theme.eui.paddingSizes.s}; - height: calc(100vh - ${contentHeightOffset}px); + padding: ${(props) => props.theme.eui.paddingSizes.m}; + flex: 1; overflow-y: auto; overflow-x: hidden; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node.tsx index f2d9da960df81a..03fb53898e316a 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node.tsx @@ -54,6 +54,7 @@ export const Node = class extends React.PureComponent { defaultMessage: '{nodeName}, click to open menu', values: { nodeName: node.name }, }); + return ( <> { } private togglePopover = () => { - this.setState((prevState) => ({ isPopoverOpen: !prevState.isPopoverOpen })); + const { nodeType } = this.props; + if (nodeType === 'host') { + this.toggleNewOverlay(); + } else { + this.setState((prevState) => ({ isPopoverOpen: !prevState.isPopoverOpen })); + } }; private toggleNewOverlay = () => { diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node_context_menu.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node_context_menu.tsx index 91c6ad801000ab..3179d4aa052689 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node_context_menu.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/node_context_menu.tsx @@ -161,14 +161,6 @@ export const NodeContextMenu: React.FC = withTheme }, }; - const openNewOverlayMenuItem: SectionLinkProps = { - label: i18n.translate('xpack.infra.nodeContextMenu.openNewOverlay', { - defaultMessage: '**** [NEW] Overlay ***', - }), - style: { color: theme?.eui.euiLinkColor || '#006BB4', fontWeight: 500, padding: 0 }, - onClick: openNewOverlay, - }; - return ( <> = withTheme - diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list.ts index 8e0843fe8b278d..888c4321a19056 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list.ts +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list.ts @@ -3,20 +3,32 @@ * or more contributor license agreements. Licensed under the Elastic License; * you may not use this file except in compliance with the Elastic License. */ +import createContainter from 'constate'; import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { pipe } from 'fp-ts/lib/pipeable'; -import { useEffect } from 'react'; +import { useEffect, useState } from 'react'; import { ProcessListAPIResponse, ProcessListAPIResponseRT } from '../../../../../common/http_api'; import { throwErrors, createPlainError } from '../../../../../common/runtime_types'; import { useHTTPRequest } from '../../../../hooks/use_http_request'; +import { useSourceContext } from '../../../../containers/source'; + +export interface SortBy { + name: string; + isAscending: boolean; +} export function useProcessList( hostTerm: Record, - indexPattern: string, timefield: string, - to: number + to: number, + sortBy: SortBy, + searchFilter: object ) { + const { createDerivedIndexPattern } = useSourceContext(); + const indexPattern = createDerivedIndexPattern('metrics').title; + + const [inErrorState, setInErrorState] = useState(false); const decodeResponse = (response: any) => { return pipe( ProcessListAPIResponseRT.decode(response), @@ -24,32 +36,52 @@ export function useProcessList( ); }; - const timerange = { - field: timefield, - interval: 'modules', - to, - from: to - 15 * 60 * 1000, // 15 minutes - }; + const parsedSortBy = + sortBy.name === 'runtimeLength' + ? { + ...sortBy, + name: 'startTime', + } + : sortBy; const { error, loading, response, makeRequest } = useHTTPRequest( '/api/metrics/process_list', 'POST', JSON.stringify({ hostTerm, - timerange, + timefield, indexPattern, + to, + sortBy: parsedSortBy, + searchFilter, }), decodeResponse ); + useEffect(() => setInErrorState(true), [error]); + useEffect(() => setInErrorState(false), [loading]); + useEffect(() => { makeRequest(); }, [makeRequest]); return { - error, + error: inErrorState, loading, response, makeRequest, }; } + +function useProcessListParams(props: { + hostTerm: Record; + timefield: string; + to: number; +}) { + const { hostTerm, timefield, to } = props; + const { createDerivedIndexPattern } = useSourceContext(); + const indexPattern = createDerivedIndexPattern('metrics').title; + return { hostTerm, indexPattern, timefield, to }; +} +const ProcessListContext = createContainter(useProcessListParams); +export const [ProcessListContextProvider, useProcessListContext] = ProcessListContext; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list_row_chart.ts b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list_row_chart.ts new file mode 100644 index 00000000000000..ef638319fd9f43 --- /dev/null +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/hooks/use_process_list_row_chart.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import { fold } from 'fp-ts/lib/Either'; +import { identity } from 'fp-ts/lib/function'; +import { pipe } from 'fp-ts/lib/pipeable'; +import { useEffect, useState } from 'react'; +import { + ProcessListAPIChartResponse, + ProcessListAPIChartResponseRT, +} from '../../../../../common/http_api'; +import { throwErrors, createPlainError } from '../../../../../common/runtime_types'; +import { useHTTPRequest } from '../../../../hooks/use_http_request'; +import { useProcessListContext } from './use_process_list'; + +export function useProcessListRowChart(command: string) { + const [inErrorState, setInErrorState] = useState(false); + const decodeResponse = (response: any) => { + return pipe( + ProcessListAPIChartResponseRT.decode(response), + fold(throwErrors(createPlainError), identity) + ); + }; + const { hostTerm, timefield, indexPattern, to } = useProcessListContext(); + + const { error, loading, response, makeRequest } = useHTTPRequest( + '/api/metrics/process_list/chart', + 'POST', + JSON.stringify({ + hostTerm, + timefield, + indexPattern, + to, + command, + }), + decodeResponse + ); + + useEffect(() => setInErrorState(true), [error]); + useEffect(() => setInErrorState(false), [loading]); + + useEffect(() => { + makeRequest(); + }, [makeRequest]); + + return { + error: inErrorState, + loading, + response, + makeRequest, + }; +} diff --git a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metric_explorer_state.ts b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metric_explorer_state.ts index 4b46ed2efafc0f..169bc9bcbcdb25 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metric_explorer_state.ts +++ b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metric_explorer_state.ts @@ -48,7 +48,6 @@ export const useMetricsExplorerState = ( currentTimerange, afterKey, refreshSignal, - undefined, shouldLoadImmediately ); diff --git a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts index db1e4ec8e4db81..924f59eb0d1da0 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts +++ b/x-pack/plugins/infra/public/pages/metrics/metrics_explorer/hooks/use_metrics_explorer_data.ts @@ -7,7 +7,6 @@ import DateMath from '@elastic/datemath'; import { isEqual } from 'lodash'; import { useEffect, useState, useCallback } from 'react'; -import { HttpHandler } from 'src/core/public'; import { IIndexPattern } from 'src/plugins/data/public'; import { SourceQuery } from '../../../../../common/graphql/types'; import { @@ -30,11 +29,10 @@ export function useMetricsExplorerData( timerange: MetricsExplorerTimeOptions, afterKey: string | null | Record, signal: any, - fetch?: HttpHandler, shouldLoadImmediately = true ) { const kibana = useKibana(); - const fetchFn = fetch ? fetch : kibana.services.http?.fetch; + const fetchFn = kibana.services.http?.fetch; const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const [data, setData] = useState(null); diff --git a/x-pack/plugins/infra/public/types.ts b/x-pack/plugins/infra/public/types.ts index 116345b35fdcea..f1052672978d5e 100644 --- a/x-pack/plugins/infra/public/types.ts +++ b/x-pack/plugins/infra/public/types.ts @@ -11,7 +11,10 @@ import type { UsageCollectionSetup, UsageCollectionStart, } from '../../../../src/plugins/usage_collection/public'; -import type { TriggersAndActionsUIPublicPluginSetup } from '../../../plugins/triggers_actions_ui/public'; +import type { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '../../../plugins/triggers_actions_ui/public'; import type { DataEnhancedSetup, DataEnhancedStart } from '../../data_enhanced/public'; import type { ObservabilityPluginSetup, @@ -37,7 +40,7 @@ export interface InfraClientStartDeps { dataEnhanced: DataEnhancedStart; observability: ObservabilityPluginStart; spaces: SpacesPluginStart; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; usageCollection: UsageCollectionStart; ml: MlPluginStart; } diff --git a/x-pack/plugins/infra/public/utils/header_action_menu_provider.tsx b/x-pack/plugins/infra/public/utils/header_action_menu_provider.tsx new file mode 100644 index 00000000000000..141b3bcc9a162f --- /dev/null +++ b/x-pack/plugins/infra/public/utils/header_action_menu_provider.tsx @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { AppMountParameters } from 'kibana/public'; + +interface ContextProps { + setHeaderActionMenu?: AppMountParameters['setHeaderActionMenu']; +} + +export const HeaderActionMenuContext = React.createContext({}); + +export const HeaderActionMenuProvider: React.FC> = ({ + setHeaderActionMenu, + children, +}) => { + return ( + + {children} + + ); +}; diff --git a/x-pack/plugins/infra/server/infra_server.ts b/x-pack/plugins/infra/server/infra_server.ts index 2bf5687da7e086..6c0d4e9d302eec 100644 --- a/x-pack/plugins/infra/server/infra_server.ts +++ b/x-pack/plugins/infra/server/infra_server.ts @@ -34,7 +34,6 @@ import { initLogEntriesHighlightsRoute, initLogEntriesSummaryRoute, initLogEntriesSummaryHighlightsRoute, - initLogEntriesItemRoute, } from './routes/log_entries'; import { initInventoryMetaRoute } from './routes/inventory_metadata'; import { initLogSourceConfigurationRoutes, initLogSourceStatusRoutes } from './routes/log_sources'; @@ -74,7 +73,6 @@ export const initInfraServer = (libs: InfraBackendLibs) => { initLogEntriesHighlightsRoute(libs); initLogEntriesSummaryRoute(libs); initLogEntriesSummaryHighlightsRoute(libs); - initLogEntriesItemRoute(libs); initMetricExplorerRoute(libs); initMetricsAPIRoute(libs); initMetadataRoute(libs); diff --git a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts index ad82939ec7f9d2..93a7bc9a0830b2 100644 --- a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts +++ b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts @@ -8,6 +8,10 @@ import { GenericParams, SearchResponse } from 'elasticsearch'; import { Lifecycle } from '@hapi/hapi'; import { UsageCollectionSetup } from 'src/plugins/usage_collection/server'; import { RouteConfig, RouteMethod } from '../../../../../../../src/core/server'; +import { + PluginSetup as DataPluginSetup, + PluginStart as DataPluginStart, +} from '../../../../../../../src/plugins/data/server'; import { HomeServerPluginSetup } from '../../../../../../../src/plugins/home/server'; import { VisTypeTimeseriesSetup } from '../../../../../../../src/plugins/vis_type_timeseries/server'; import { APMPluginSetup } from '../../../../../../plugins/apm/server'; @@ -17,7 +21,8 @@ import { PluginSetupContract as AlertingPluginContract } from '../../../../../al import { MlPluginSetup } from '../../../../../ml/server'; import { JsonArray, JsonValue } from '../../../../common/typed_json'; -export interface InfraServerPluginDeps { +export interface InfraServerPluginSetupDeps { + data: DataPluginSetup; home: HomeServerPluginSetup; spaces: SpacesPluginSetup; usageCollection: UsageCollectionSetup; @@ -28,6 +33,10 @@ export interface InfraServerPluginDeps { ml?: MlPluginSetup; } +export interface InfraServerPluginStartDeps { + data: DataPluginStart; +} + export interface CallWithRequestParams extends GenericParams { max_concurrent_shard_requests?: number; name?: string; diff --git a/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts b/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts index 2d84e36f3a3ac9..7f686b4d7717c7 100644 --- a/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts +++ b/x-pack/plugins/infra/server/lib/adapters/framework/kibana_framework_adapter.ts @@ -10,7 +10,7 @@ import { schema, TypeOf } from '@kbn/config-schema'; import { InfraRouteConfig, InfraTSVBResponse, - InfraServerPluginDeps, + InfraServerPluginSetupDeps, CallWithRequestParams, InfraDatabaseSearchResponse, InfraDatabaseMultiResponse, @@ -33,9 +33,9 @@ import { IndexPatternsFetcher, UI_SETTINGS } from '../../../../../../../src/plug export class KibanaFramework { public router: IRouter; - public plugins: InfraServerPluginDeps; + public plugins: InfraServerPluginSetupDeps; - constructor(core: CoreSetup, config: InfraConfig, plugins: InfraServerPluginDeps) { + constructor(core: CoreSetup, config: InfraConfig, plugins: InfraServerPluginSetupDeps) { this.router = core.http.createRouter(); this.plugins = plugins; } diff --git a/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts b/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts index 6ffa1ad4b0b827..4637f3ab41782a 100644 --- a/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts +++ b/x-pack/plugins/infra/server/lib/adapters/log_entries/kibana_log_entries_adapter.ts @@ -9,12 +9,11 @@ import { fold, map } from 'fp-ts/lib/Either'; import { constant, identity } from 'fp-ts/lib/function'; import { pipe } from 'fp-ts/lib/pipeable'; import * as runtimeTypes from 'io-ts'; -import { compact, first } from 'lodash'; +import { compact } from 'lodash'; import { RequestHandlerContext } from 'src/core/server'; import { JsonArray } from '../../../../common/typed_json'; import { LogEntriesAdapter, - LogItemHit, LogEntriesParams, LogEntryDocument, LogEntryQuery, @@ -199,41 +198,6 @@ export class InfraKibanaLogEntriesAdapter implements LogEntriesAdapter { fold(constant([]), identity) ); } - - public async getLogItem( - requestContext: RequestHandlerContext, - id: string, - sourceConfiguration: InfraSourceConfiguration - ) { - const search = (searchOptions: object) => - this.framework.callWithRequest(requestContext, 'search', searchOptions); - - const params = { - index: sourceConfiguration.logAlias, - terminate_after: 1, - body: { - size: 1, - sort: [ - { [sourceConfiguration.fields.timestamp]: 'desc' }, - { [sourceConfiguration.fields.tiebreaker]: 'desc' }, - ], - query: { - ids: { - values: [id], - }, - }, - fields: ['*'], - _source: false, - }, - }; - - const response = await search(params); - const document = first(response.hits.hits); - if (!document) { - throw new Error('Document not found'); - } - return document; - } } function mapHitsToLogEntryDocuments(hits: SortedSearchHit[], fields: string[]): LogEntryDocument[] { diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts index 14785f64cffac0..1941ec6326ddb6 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts @@ -9,7 +9,7 @@ import moment from 'moment'; import { getCustomMetricLabel } from '../../../../common/formatters/get_custom_metric_label'; import { toMetricOpt } from '../../../../common/snapshot_metric_i18n'; import { AlertStates, InventoryMetricConditions } from './types'; -import { ResolvedActionGroup } from '../../../../../alerts/common'; +import { RecoveredActionGroup } from '../../../../../alerts/common'; import { AlertExecutorOptions } from '../../../../../alerts/server'; import { InventoryItemType, SnapshotMetricType } from '../../../../common/inventory_models/types'; import { InfraBackendLibs } from '../../infra_types'; @@ -103,7 +103,7 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) = } if (reason) { const actionGroupId = - nextState === AlertStates.OK ? ResolvedActionGroup.id : FIRED_ACTIONS.id; + nextState === AlertStates.OK ? RecoveredActionGroup.id : FIRED_ACTIONS.id; alertInstance.scheduleActions(actionGroupId, { group: item, alertState: stateToAlertMessage[nextState], diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts index b31afba8ac9cc3..a1d6428f3b52be 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.test.ts @@ -6,7 +6,7 @@ import { createMetricThresholdExecutor, FIRED_ACTIONS } from './metric_threshold_executor'; import { Comparator, AlertStates } from './types'; import * as mocks from './test_mocks'; -import { ResolvedActionGroup } from '../../../../../alerts/common'; +import { RecoveredActionGroup } from '../../../../../alerts/common'; import { AlertExecutorOptions } from '../../../../../alerts/server'; import { alertsMock, @@ -367,7 +367,7 @@ describe('The metric threshold alert type', () => { expect(mostRecentAction(instanceID).id).toBe(FIRED_ACTIONS.id); expect(getState(instanceID).alertState).toBe(AlertStates.ALERT); await execute([2]); - expect(mostRecentAction(instanceID).id).toBe(ResolvedActionGroup.id); + expect(mostRecentAction(instanceID).id).toBe(RecoveredActionGroup.id); expect(getState(instanceID).alertState).toBe(AlertStates.OK); }); test('does not continue to send a recovery alert if the metric is still OK', async () => { @@ -383,7 +383,7 @@ describe('The metric threshold alert type', () => { expect(mostRecentAction(instanceID).id).toBe(FIRED_ACTIONS.id); expect(getState(instanceID).alertState).toBe(AlertStates.ALERT); await execute([2]); - expect(mostRecentAction(instanceID).id).toBe(ResolvedActionGroup.id); + expect(mostRecentAction(instanceID).id).toBe(RecoveredActionGroup.id); expect(getState(instanceID).alertState).toBe(AlertStates.OK); }); }); diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts index 7c3918c37ebbf5..60790648d9a9b9 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts @@ -6,7 +6,7 @@ import { first, last } from 'lodash'; import { i18n } from '@kbn/i18n'; import moment from 'moment'; -import { ResolvedActionGroup } from '../../../../../alerts/common'; +import { RecoveredActionGroup } from '../../../../../alerts/common'; import { AlertExecutorOptions } from '../../../../../alerts/server'; import { InfraBackendLibs } from '../../infra_types'; import { @@ -89,7 +89,7 @@ export const createMetricThresholdExecutor = (libs: InfraBackendLibs) => const firstResult = first(alertResults); const timestamp = (firstResult && firstResult[group].timestamp) ?? moment().toISOString(); const actionGroupId = - nextState === AlertStates.OK ? ResolvedActionGroup.id : FIRED_ACTIONS.id; + nextState === AlertStates.OK ? RecoveredActionGroup.id : FIRED_ACTIONS.id; alertInstance.scheduleActions(actionGroupId, { group, alertState: stateToAlertMessage[nextState], diff --git a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.test.ts b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.test.ts deleted file mode 100644 index 7b79a1bf0386a1..00000000000000 --- a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { convertESFieldsToLogItemFields } from './convert_document_source_to_log_item_fields'; - -describe('convertESFieldsToLogItemFields', () => { - test('Converts the fields collection to LogItemFields', () => { - const esFields = { - 'agent.hostname': ['demo-stack-client-01'], - 'agent.id': ['7adef8b6-2ab7-45cd-a0d5-b3baad735f1b'], - 'agent.type': ['filebeat'], - 'agent.ephemeral_id': ['a0c8164b-3564-4e32-b0bf-f4db5a7ae566'], - 'agent.version': ['7.0.0'], - tags: ['prod', 'web'], - metadata: [ - { key: 'env', value: 'prod' }, - { key: 'stack', value: 'web' }, - ], - 'host.hostname': ['packer-virtualbox-iso-1546820004'], - 'host.name': ['demo-stack-client-01'], - }; - - const fields = convertESFieldsToLogItemFields(esFields); - expect(fields).toEqual([ - { - field: 'agent.hostname', - value: ['demo-stack-client-01'], - }, - { - field: 'agent.id', - value: ['7adef8b6-2ab7-45cd-a0d5-b3baad735f1b'], - }, - { - field: 'agent.type', - value: ['filebeat'], - }, - { - field: 'agent.ephemeral_id', - value: ['a0c8164b-3564-4e32-b0bf-f4db5a7ae566'], - }, - { - field: 'agent.version', - value: ['7.0.0'], - }, - { - field: 'tags', - value: ['prod', 'web'], - }, - { - field: 'metadata', - value: ['{"key":"env","value":"prod"}', '{"key":"stack","value":"web"}'], - }, - { - field: 'host.hostname', - value: ['packer-virtualbox-iso-1546820004'], - }, - { - field: 'host.name', - value: ['demo-stack-client-01'], - }, - ]); - }); -}); diff --git a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.ts b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.ts deleted file mode 100644 index a1d855bfdaa484..00000000000000 --- a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/convert_document_source_to_log_item_fields.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import stringify from 'json-stable-stringify'; -import { LogEntriesItemField } from '../../../../common/http_api'; -import { JsonArray } from '../../../../common/typed_json'; - -const serializeValue = (value: JsonArray): string[] => { - return value.map((v) => { - if (typeof v === 'object' && v != null) { - return stringify(v); - } else { - return `${v}`; - } - }); -}; - -export const convertESFieldsToLogItemFields = (fields: { - [field: string]: JsonArray; -}): LogEntriesItemField[] => { - return Object.keys(fields).map((field) => ({ field, value: serializeValue(fields[field]) })); -}; diff --git a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts index 1cf0afd50b80c5..52cf6f46716b35 100644 --- a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts +++ b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts @@ -4,17 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ -import { sortBy } from 'lodash'; - import { RequestHandlerContext } from 'src/core/server'; -import { JsonArray, JsonObject } from '../../../../common/typed_json'; +import { JsonObject } from '../../../../common/typed_json'; import { LogEntriesSummaryBucket, LogEntriesSummaryHighlightsBucket, LogEntry, - LogEntriesItem, - LogEntriesCursor, LogColumn, + LogEntriesRequest, } from '../../../../common/http_api'; import { InfraSourceConfiguration, @@ -22,7 +19,6 @@ import { SavedSourceConfigurationFieldColumnRuntimeType, } from '../../sources'; import { getBuiltinRules } from './builtin_rules'; -import { convertESFieldsToLogItemFields } from './convert_document_source_to_log_item_fields'; import { CompiledLogMessageFormattingRule, Fields, @@ -37,20 +33,21 @@ import { CompositeDatasetKey, createLogEntryDatasetsQuery, } from './queries/log_entry_datasets'; +import { LogEntryCursor } from '../../../../common/log_entry'; export interface LogEntriesParams { startTimestamp: number; endTimestamp: number; size?: number; query?: JsonObject; - cursor?: { before: LogEntriesCursor | 'last' } | { after: LogEntriesCursor | 'first' }; + cursor?: { before: LogEntryCursor | 'last' } | { after: LogEntryCursor | 'first' }; highlightTerm?: string; } export interface LogEntriesAroundParams { startTimestamp: number; endTimestamp: number; size?: number; - center: LogEntriesCursor; + center: LogEntryCursor; query?: JsonObject; highlightTerm?: string; } @@ -73,7 +70,8 @@ export class InfraLogEntriesDomain { public async getLogEntriesAround( requestContext: RequestHandlerContext, sourceId: string, - params: LogEntriesAroundParams + params: LogEntriesAroundParams, + columnOverrides?: LogEntriesRequest['columns'] ): Promise<{ entries: LogEntry[]; hasMoreBefore?: boolean; hasMoreAfter?: boolean }> { const { startTimestamp, endTimestamp, center, query, size, highlightTerm } = params; @@ -97,7 +95,8 @@ export class InfraLogEntriesDomain { cursor: { before: center }, size: Math.floor(halfSize), highlightTerm, - } + }, + columnOverrides ); /* @@ -131,13 +130,16 @@ export class InfraLogEntriesDomain { public async getLogEntries( requestContext: RequestHandlerContext, sourceId: string, - params: LogEntriesParams + params: LogEntriesParams, + columnOverrides?: LogEntriesRequest['columns'] ): Promise<{ entries: LogEntry[]; hasMoreBefore?: boolean; hasMoreAfter?: boolean }> { const { configuration } = await this.libs.sources.getSourceConfiguration( requestContext.core.savedObjects.client, sourceId ); + const columnDefinitions = columnOverrides ?? configuration.logColumns; + const messageFormattingRules = compileFormattingRules( getBuiltinRules(configuration.fields.message) ); @@ -155,7 +157,7 @@ export class InfraLogEntriesDomain { return { id: doc.id, cursor: doc.cursor, - columns: configuration.logColumns.map( + columns: columnDefinitions.map( (column): LogColumn => { if ('timestampColumn' in column) { return { @@ -253,31 +255,6 @@ export class InfraLogEntriesDomain { return summaries; } - public async getLogItem( - requestContext: RequestHandlerContext, - id: string, - sourceConfiguration: InfraSourceConfiguration - ): Promise { - const document = await this.adapter.getLogItem(requestContext, id, sourceConfiguration); - const defaultFields = [ - { field: '_index', value: [document._index] }, - { field: '_id', value: [document._id] }, - ]; - - return { - id: document._id, - index: document._index, - key: { - time: document.sort[0], - tiebreaker: document.sort[1], - }, - fields: sortBy( - [...defaultFields, ...convertESFieldsToLogItemFields(document.fields)], - 'field' - ), - }; - } - public async getLogEntryDatasets( requestContext: RequestHandlerContext, timestampField: string, @@ -318,13 +295,6 @@ export class InfraLogEntriesDomain { } } -export interface LogItemHit { - _index: string; - _id: string; - fields: { [field: string]: [value: JsonArray] }; - sort: [number, number]; -} - export interface LogEntriesAdapter { getLogEntries( requestContext: RequestHandlerContext, @@ -341,12 +311,6 @@ export interface LogEntriesAdapter { bucketSize: number, filterQuery?: LogEntryQuery ): Promise; - - getLogItem( - requestContext: RequestHandlerContext, - id: string, - source: InfraSourceConfiguration - ): Promise; } export type LogEntryQuery = JsonObject; @@ -355,14 +319,14 @@ export interface LogEntryDocument { id: string; fields: Fields; highlights: Highlights; - cursor: LogEntriesCursor; + cursor: LogEntryCursor; } export interface LogSummaryBucket { entriesCount: number; start: number; end: number; - topEntryKeys: LogEntriesCursor[]; + topEntryKeys: LogEntryCursor[]; } const logSummaryBucketHasEntries = (bucket: LogSummaryBucket) => diff --git a/x-pack/plugins/infra/server/lib/host_details/common.ts b/x-pack/plugins/infra/server/lib/host_details/common.ts new file mode 100644 index 00000000000000..ddf606e4171269 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/host_details/common.ts @@ -0,0 +1,6 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +export const CMDLINE_FIELD = 'system.process.cmdline'; diff --git a/x-pack/plugins/infra/server/lib/host_details/process_list.ts b/x-pack/plugins/infra/server/lib/host_details/process_list.ts index 99e8b2e8f6ab14..e9d35f36016349 100644 --- a/x-pack/plugins/infra/server/lib/host_details/process_list.ts +++ b/x-pack/plugins/infra/server/lib/host_details/process_list.ts @@ -4,61 +4,136 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ProcessListAPIRequest, MetricsAPIRequest } from '../../../common/http_api'; -import { getAllMetricsData } from '../../utils/get_all_metrics_data'; -import { query } from '../metrics'; +import { ProcessListAPIRequest, ProcessListAPIQueryAggregation } from '../../../common/http_api'; import { ESSearchClient } from '../metrics/types'; +import { CMDLINE_FIELD } from './common'; + +const TOP_N = 10; export const getProcessList = async ( - client: ESSearchClient, - { hostTerm, timerange, indexPattern }: ProcessListAPIRequest + search: ESSearchClient, + { hostTerm, timefield, indexPattern, to, sortBy, searchFilter }: ProcessListAPIRequest ) => { - const queryBody = { - timerange, - modules: ['system.cpu', 'system.memory'], - groupBy: ['system.process.cmdline'], - filters: [{ term: hostTerm }], - indexPattern, - limit: 9, - metrics: [ - { - id: 'cpu', - aggregations: { - cpu: { - avg: { - field: 'system.process.cpu.total.norm.pct', + const body = { + size: 0, + query: { + bool: { + filter: [ + { + range: { + [timefield]: { + gte: to - 60 * 1000, // 1 minute + lte: to, + }, }, }, - }, + { + term: hostTerm, + }, + ], }, - { - id: 'memory', - aggregations: { - memory: { - avg: { - field: 'system.process.memory.rss.pct', - }, + }, + aggs: { + summaryEvent: { + filter: { + term: { + 'event.dataset': 'system.process.summary', }, }, - }, - { - id: 'meta', - aggregations: { - meta: { + aggs: { + summary: { top_hits: { size: 1, - sort: [{ [timerange.field]: { order: 'desc' } }], - _source: [ - 'system.process.cpu.start_time', - 'system.process.state', - 'process.pid', - 'user.name', + sort: [ + { + [timefield]: { + order: 'desc', + }, + }, ], + _source: ['system.process.summary'], + }, + }, + }, + }, + processes: { + filter: { + bool: { + must: searchFilter ?? [{ match_all: {} }], + }, + }, + aggs: { + filteredProcs: { + terms: { + field: CMDLINE_FIELD, + size: TOP_N, + order: { + [sortBy.name]: sortBy.isAscending ? 'asc' : 'desc', + }, + }, + aggs: { + cpu: { + avg: { + field: 'system.process.cpu.total.pct', + }, + }, + memory: { + avg: { + field: 'system.process.memory.rss.pct', + }, + }, + startTime: { + max: { + field: 'system.process.cpu.start_time', + }, + }, + meta: { + top_hits: { + size: 1, + sort: [ + { + [timefield]: { + order: 'desc', + }, + }, + ], + _source: ['system.process.state', 'user.name', 'process.pid'], + }, + }, }, }, }, }, - ], - } as MetricsAPIRequest; - return await getAllMetricsData((body: MetricsAPIRequest) => query(client, body), queryBody); + }, + }; + try { + const result = await search<{}, ProcessListAPIQueryAggregation>({ + body, + index: indexPattern, + }); + const { buckets: processListBuckets } = result.aggregations!.processes.filteredProcs; + const processList = processListBuckets.map((bucket) => { + const meta = bucket.meta.hits.hits[0]._source; + + return { + cpu: bucket.cpu.value, + memory: bucket.memory.value, + startTime: Date.parse(bucket.startTime.value_as_string), + pid: meta.process.pid, + state: meta.system.process.state, + user: meta.user.name, + command: bucket.key, + }; + }); + const { + summary, + } = result.aggregations!.summaryEvent.summary.hits.hits[0]._source.system.process; + + return { + processList, + summary, + }; + } catch (e) { + throw e; + } }; diff --git a/x-pack/plugins/infra/server/lib/host_details/process_list_chart.ts b/x-pack/plugins/infra/server/lib/host_details/process_list_chart.ts new file mode 100644 index 00000000000000..11df1937764c85 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/host_details/process_list_chart.ts @@ -0,0 +1,138 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { first } from 'lodash'; +import { + ProcessListAPIChartRequest, + ProcessListAPIChartQueryAggregation, + ProcessListAPIRow, + ProcessListAPIChartResponse, +} from '../../../common/http_api'; +import { ESSearchClient } from '../metrics/types'; +import { CMDLINE_FIELD } from './common'; + +export const getProcessListChart = async ( + search: ESSearchClient, + { hostTerm, timefield, indexPattern, to, command }: ProcessListAPIChartRequest +) => { + const body = { + size: 0, + query: { + bool: { + filter: [ + { + range: { + [timefield]: { + gte: to - 60 * 1000, // 1 minute + lte: to, + }, + }, + }, + { + term: hostTerm, + }, + ], + }, + }, + aggs: { + process: { + filter: { + bool: { + must: [ + { + match: { + [CMDLINE_FIELD]: command, + }, + }, + ], + }, + }, + aggs: { + filteredProc: { + terms: { + field: CMDLINE_FIELD, + size: 1, + }, + aggs: { + timeseries: { + date_histogram: { + field: timefield, + fixed_interval: '1m', + extended_bounds: { + min: to - 60 * 15 * 1000, // 15 minutes, + max: to, + }, + }, + aggs: { + cpu: { + avg: { + field: 'system.process.cpu.total.pct', + }, + }, + memory: { + avg: { + field: 'system.process.memory.rss.pct', + }, + }, + }, + }, + }, + }, + }, + }, + }, + }; + try { + const result = await search<{}, ProcessListAPIChartQueryAggregation>({ + body, + index: indexPattern, + }); + const { buckets } = result.aggregations!.process.filteredProc; + const timeseries = first( + buckets.map((bucket) => + bucket.timeseries.buckets.reduce( + (tsResult, tsBucket) => { + tsResult.cpu.rows.push({ + metric_0: tsBucket.cpu.value, + timestamp: tsBucket.key, + }); + tsResult.memory.rows.push({ + metric_0: tsBucket.memory.value, + timestamp: tsBucket.key, + }); + return tsResult; + }, + { + cpu: { + id: 'cpu', + columns: TS_COLUMNS, + rows: [] as ProcessListAPIRow[], + }, + memory: { + id: 'memory', + columns: TS_COLUMNS, + rows: [] as ProcessListAPIRow[], + }, + } + ) + ) + ); + return timeseries as ProcessListAPIChartResponse; + } catch (e) { + throw e; + } +}; + +const TS_COLUMNS = [ + { + name: 'timestamp', + type: 'date', + }, + { + name: 'metric_0', + type: 'number', + }, +]; diff --git a/x-pack/plugins/infra/server/lib/sources/mocks.ts b/x-pack/plugins/infra/server/lib/sources/mocks.ts new file mode 100644 index 00000000000000..c48340e87a6317 --- /dev/null +++ b/x-pack/plugins/infra/server/lib/sources/mocks.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import type { InfraSources } from './sources'; + +type IInfraSources = Pick; + +export const createInfraSourcesMock = (): jest.Mocked => ({ + getSourceConfiguration: jest.fn(), + createSourceConfiguration: jest.fn(), + deleteSourceConfiguration: jest.fn(), + updateSourceConfiguration: jest.fn(), + getAllSourceConfigurations: jest.fn(), + getInternalSourceConfiguration: jest.fn(), + defineInternalSourceConfiguration: jest.fn(), +}); diff --git a/x-pack/plugins/infra/server/lib/sources/sources.ts b/x-pack/plugins/infra/server/lib/sources/sources.ts index 65acc2b2756bd9..d144b079b41e8b 100644 --- a/x-pack/plugins/infra/server/lib/sources/sources.ts +++ b/x-pack/plugins/infra/server/lib/sources/sources.ts @@ -28,6 +28,9 @@ interface Libs { config: InfraConfig; } +// extract public interface +export type IInfraSources = Pick; + export class InfraSources { private internalSourceConfigurations: Map = new Map(); private readonly libs: Libs; diff --git a/x-pack/plugins/infra/server/plugin.ts b/x-pack/plugins/infra/server/plugin.ts index a3b4cb604231f5..693e98521ada22 100644 --- a/x-pack/plugins/infra/server/plugin.ts +++ b/x-pack/plugins/infra/server/plugin.ts @@ -4,32 +4,32 @@ * you may not use this file except in compliance with the Elastic License. */ -import { CoreSetup, PluginInitializerContext } from 'src/core/server'; import { Server } from '@hapi/hapi'; -import { Observable } from 'rxjs'; import { schema, TypeOf } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; +import { Observable } from 'rxjs'; +import { CoreSetup, PluginInitializerContext } from 'src/core/server'; +import { InfraStaticSourceConfiguration } from '../common/http_api/source_api'; +import { inventoryViewSavedObjectType } from '../common/saved_objects/inventory_view'; +import { metricsExplorerViewSavedObjectType } from '../common/saved_objects/metrics_explorer_view'; +import { LOGS_FEATURE, METRICS_FEATURE } from './features'; import { initInfraServer } from './infra_server'; -import { InfraBackendLibs, InfraDomainLibs } from './lib/infra_types'; import { FrameworkFieldsAdapter } from './lib/adapters/fields/framework_fields_adapter'; +import { InfraServerPluginSetupDeps, InfraServerPluginStartDeps } from './lib/adapters/framework'; import { KibanaFramework } from './lib/adapters/framework/kibana_framework_adapter'; import { InfraKibanaLogEntriesAdapter } from './lib/adapters/log_entries/kibana_log_entries_adapter'; import { KibanaMetricsAdapter } from './lib/adapters/metrics/kibana_metrics_adapter'; import { InfraElasticsearchSourceStatusAdapter } from './lib/adapters/source_status'; +import { registerAlertTypes } from './lib/alerting'; import { InfraFieldsDomain } from './lib/domains/fields_domain'; import { InfraLogEntriesDomain } from './lib/domains/log_entries_domain'; import { InfraMetricsDomain } from './lib/domains/metrics_domain'; +import { InfraBackendLibs, InfraDomainLibs } from './lib/infra_types'; +import { infraSourceConfigurationSavedObjectType, InfraSources } from './lib/sources'; import { InfraSourceStatus } from './lib/source_status'; -import { InfraSources } from './lib/sources'; -import { InfraServerPluginDeps } from './lib/adapters/framework'; -import { METRICS_FEATURE, LOGS_FEATURE } from './features'; -import { UsageCollector } from './usage/usage_collector'; -import { InfraStaticSourceConfiguration } from '../common/http_api/source_api'; -import { registerAlertTypes } from './lib/alerting'; -import { infraSourceConfigurationSavedObjectType } from './lib/sources'; -import { metricsExplorerViewSavedObjectType } from '../common/saved_objects/metrics_explorer_view'; -import { inventoryViewSavedObjectType } from '../common/saved_objects/inventory_view'; +import { LogEntriesService } from './services/log_entries'; import { InfraRequestHandlerContext } from './types'; +import { UsageCollector } from './usage/usage_collector'; export const config = { schema: schema.object({ @@ -87,8 +87,8 @@ export class InfraServerPlugin { this.config$ = context.config.create(); } - async setup(core: CoreSetup, plugins: InfraServerPluginDeps) { - await new Promise((resolve) => { + async setup(core: CoreSetup, plugins: InfraServerPluginSetupDeps) { + await new Promise((resolve) => { this.config$.subscribe((configValue) => { this.config = configValue; resolve(); @@ -167,6 +167,9 @@ export class InfraServerPlugin { // Telemetry UsageCollector.registerUsageCollector(plugins.usageCollection); + const logEntriesService = new LogEntriesService(); + logEntriesService.setup(core, { ...plugins, sources }); + return { defineInternalSourceConfiguration(sourceId, sourceProperties) { sources.defineInternalSourceConfiguration(sourceId, sourceProperties); diff --git a/x-pack/plugins/infra/server/routes/log_entries/entries.ts b/x-pack/plugins/infra/server/routes/log_entries/entries.ts index 2baf3fd7aa9901..67083ee9d6c0d6 100644 --- a/x-pack/plugins/infra/server/routes/log_entries/entries.ts +++ b/x-pack/plugins/infra/server/routes/log_entries/entries.ts @@ -31,6 +31,7 @@ export const initLogEntriesRoute = ({ framework, logEntries }: InfraBackendLibs) sourceId, query, size, + columns, } = payload; let entries; @@ -47,7 +48,8 @@ export const initLogEntriesRoute = ({ framework, logEntries }: InfraBackendLibs) query: parseFilterQuery(query), center: payload.center, size, - } + }, + columns )); } else { let cursor: LogEntriesParams['cursor']; @@ -66,7 +68,8 @@ export const initLogEntriesRoute = ({ framework, logEntries }: InfraBackendLibs) query: parseFilterQuery(query), cursor, size, - } + }, + columns )); } diff --git a/x-pack/plugins/infra/server/routes/log_entries/index.ts b/x-pack/plugins/infra/server/routes/log_entries/index.ts index 1090d35d89b851..9e34c1fc911997 100644 --- a/x-pack/plugins/infra/server/routes/log_entries/index.ts +++ b/x-pack/plugins/infra/server/routes/log_entries/index.ts @@ -6,6 +6,5 @@ export * from './entries'; export * from './highlights'; -export * from './item'; export * from './summary'; export * from './summary_highlights'; diff --git a/x-pack/plugins/infra/server/routes/log_entries/item.ts b/x-pack/plugins/infra/server/routes/log_entries/item.ts deleted file mode 100644 index 67ca481ff4fcbf..00000000000000 --- a/x-pack/plugins/infra/server/routes/log_entries/item.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import { createValidationFunction } from '../../../common/runtime_types'; - -import { InfraBackendLibs } from '../../lib/infra_types'; -import { - LOG_ENTRIES_ITEM_PATH, - logEntriesItemRequestRT, - logEntriesItemResponseRT, -} from '../../../common/http_api'; - -export const initLogEntriesItemRoute = ({ framework, sources, logEntries }: InfraBackendLibs) => { - framework.registerRoute( - { - method: 'post', - path: LOG_ENTRIES_ITEM_PATH, - validate: { body: createValidationFunction(logEntriesItemRequestRT) }, - }, - async (requestContext, request, response) => { - try { - const payload = request.body; - const { id, sourceId } = payload; - const sourceConfiguration = ( - await sources.getSourceConfiguration(requestContext.core.savedObjects.client, sourceId) - ).configuration; - - const logEntry = await logEntries.getLogItem(requestContext, id, sourceConfiguration); - - return response.ok({ - body: logEntriesItemResponseRT.encode({ - data: logEntry, - }), - }); - } catch (error) { - return response.internalError({ body: error.message }); - } - } - ); -}; diff --git a/x-pack/plugins/infra/server/routes/metadata/lib/get_node_info.ts b/x-pack/plugins/infra/server/routes/metadata/lib/get_node_info.ts index f1341c7ec8101a..b378b42e2ff59f 100644 --- a/x-pack/plugins/infra/server/routes/metadata/lib/get_node_info.ts +++ b/x-pack/plugins/infra/server/routes/metadata/lib/get_node_info.ts @@ -58,7 +58,7 @@ export const getNodeInfo = async ( index: sourceConfiguration.metricAlias, body: { size: 1, - _source: ['host.*', 'cloud.*'], + _source: ['host.*', 'cloud.*', 'agent.*'], sort: [{ [timestampField]: 'desc' }], query: { bool: { diff --git a/x-pack/plugins/infra/server/routes/process_list/index.ts b/x-pack/plugins/infra/server/routes/process_list/index.ts index 9851613255d8d4..cf7765737e78b7 100644 --- a/x-pack/plugins/infra/server/routes/process_list/index.ts +++ b/x-pack/plugins/infra/server/routes/process_list/index.ts @@ -13,7 +13,13 @@ import { InfraBackendLibs } from '../../lib/infra_types'; import { throwErrors } from '../../../common/runtime_types'; import { createSearchClient } from '../../lib/create_search_client'; import { getProcessList } from '../../lib/host_details/process_list'; -import { ProcessListAPIRequestRT, ProcessListAPIResponseRT } from '../../../common/http_api'; +import { getProcessListChart } from '../../lib/host_details/process_list_chart'; +import { + ProcessListAPIRequestRT, + ProcessListAPIResponseRT, + ProcessListAPIChartRequestRT, + ProcessListAPIChartResponseRT, +} from '../../../common/http_api'; const escapeHatch = schema.object({}, { unknowns: 'allow' }); @@ -47,4 +53,33 @@ export const initProcessListRoute = (libs: InfraBackendLibs) => { } } ); + + framework.registerRoute( + { + method: 'post', + path: '/api/metrics/process_list/chart', + validate: { + body: escapeHatch, + }, + }, + async (requestContext, request, response) => { + try { + const options = pipe( + ProcessListAPIChartRequestRT.decode(request.body), + fold(throwErrors(Boom.badRequest), identity) + ); + + const client = createSearchClient(requestContext, framework); + const processListResponse = await getProcessListChart(client, options); + + return response.ok({ + body: ProcessListAPIChartResponseRT.encode(processListResponse), + }); + } catch (error) { + return response.internalError({ + body: error.message, + }); + } + } + ); }; diff --git a/x-pack/plugins/infra/server/services/log_entries/index.ts b/x-pack/plugins/infra/server/services/log_entries/index.ts new file mode 100644 index 00000000000000..90b97b924fa0d9 --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/index.ts @@ -0,0 +1,7 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export * from './log_entries_service'; diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entries_service.ts b/x-pack/plugins/infra/server/services/log_entries/log_entries_service.ts new file mode 100644 index 00000000000000..edd53be9db8411 --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/log_entries_service.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { CoreSetup } from 'src/core/server'; +import { LOG_ENTRY_SEARCH_STRATEGY } from '../../../common/search_strategies/log_entries/log_entry'; +import { logEntrySearchStrategyProvider } from './log_entry_search_strategy'; +import { LogEntriesServiceSetupDeps, LogEntriesServiceStartDeps } from './types'; + +export class LogEntriesService { + public setup(core: CoreSetup, setupDeps: LogEntriesServiceSetupDeps) { + core.getStartServices().then(([, startDeps]) => { + setupDeps.data.search.registerSearchStrategy( + LOG_ENTRY_SEARCH_STRATEGY, + logEntrySearchStrategyProvider({ ...setupDeps, ...startDeps }) + ); + }); + } + + public start(_startDeps: LogEntriesServiceStartDeps) {} +} diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts new file mode 100644 index 00000000000000..044cea3899baf8 --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts @@ -0,0 +1,225 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { ResponseError } from '@elastic/elasticsearch/lib/errors'; +import { of, throwError } from 'rxjs'; +import { + elasticsearchServiceMock, + savedObjectsClientMock, + uiSettingsServiceMock, +} from 'src/core/server/mocks'; +import { + IEsSearchRequest, + IEsSearchResponse, + ISearchStrategy, + SearchStrategyDependencies, +} from 'src/plugins/data/server'; +import { createInfraSourcesMock } from '../../lib/sources/mocks'; +import { + logEntrySearchRequestStateRT, + logEntrySearchStrategyProvider, +} from './log_entry_search_strategy'; + +describe('LogEntry search strategy', () => { + it('handles initial search requests', async () => { + const esSearchStrategyMock = createEsSearchStrategyMock({ + id: 'ASYNC_REQUEST_ID', + isRunning: true, + rawResponse: { + took: 0, + _shards: { total: 1, failed: 0, skipped: 0, successful: 0 }, + timed_out: false, + hits: { total: 0, max_score: 0, hits: [] }, + }, + }); + + const dataMock = createDataPluginMock(esSearchStrategyMock); + const sourcesMock = createInfraSourcesMock(); + sourcesMock.getSourceConfiguration.mockResolvedValue(createSourceConfigurationMock()); + const mockDependencies = createSearchStrategyDependenciesMock(); + + const logEntrySearchStrategy = logEntrySearchStrategyProvider({ + data: dataMock, + sources: sourcesMock, + }); + + const response = await logEntrySearchStrategy + .search( + { + params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + }, + {}, + mockDependencies + ) + .toPromise(); + + expect(sourcesMock.getSourceConfiguration).toHaveBeenCalled(); + expect(esSearchStrategyMock.search).toHaveBeenCalled(); + expect(response.id).toEqual(expect.any(String)); + expect(response.isRunning).toBe(true); + }); + + it('handles subsequent polling requests', async () => { + const esSearchStrategyMock = createEsSearchStrategyMock({ + id: 'ASYNC_REQUEST_ID', + isRunning: false, + rawResponse: { + took: 1, + _shards: { total: 1, failed: 0, skipped: 0, successful: 1 }, + timed_out: false, + hits: { + total: 0, + max_score: 0, + hits: [ + { + _id: 'HIT_ID', + _index: 'HIT_INDEX', + _type: '_doc', + _score: 0, + _source: null, + fields: { + '@timestamp': [1605116827143], + message: ['HIT_MESSAGE'], + }, + sort: [1605116827143 as any, 1 as any], // incorrectly typed as string upstream + }, + ], + }, + }, + }); + const dataMock = createDataPluginMock(esSearchStrategyMock); + const sourcesMock = createInfraSourcesMock(); + sourcesMock.getSourceConfiguration.mockResolvedValue(createSourceConfigurationMock()); + const mockDependencies = createSearchStrategyDependenciesMock(); + + const logEntrySearchStrategy = logEntrySearchStrategyProvider({ + data: dataMock, + sources: sourcesMock, + }); + const requestId = logEntrySearchRequestStateRT.encode({ + esRequestId: 'ASYNC_REQUEST_ID', + }); + + const response = await logEntrySearchStrategy + .search( + { + id: requestId, + params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + }, + {}, + mockDependencies + ) + .toPromise(); + + expect(sourcesMock.getSourceConfiguration).not.toHaveBeenCalled(); + expect(esSearchStrategyMock.search).toHaveBeenCalled(); + expect(response.id).toEqual(requestId); + expect(response.isRunning).toBe(false); + expect(response.rawResponse.data).toEqual({ + id: 'HIT_ID', + index: 'HIT_INDEX', + key: { + time: 1605116827143, + tiebreaker: 1, + }, + fields: [ + { field: '@timestamp', value: [1605116827143] }, + { field: 'message', value: ['HIT_MESSAGE'] }, + ], + }); + }); + + it('forwards errors from the underlying search strategy', async () => { + const esSearchStrategyMock = createEsSearchStrategyMock({ + id: 'ASYNC_REQUEST_ID', + isRunning: false, + rawResponse: { + took: 1, + _shards: { total: 1, failed: 0, skipped: 0, successful: 1 }, + timed_out: false, + hits: { total: 0, max_score: 0, hits: [] }, + }, + }); + const dataMock = createDataPluginMock(esSearchStrategyMock); + const sourcesMock = createInfraSourcesMock(); + sourcesMock.getSourceConfiguration.mockResolvedValue(createSourceConfigurationMock()); + const mockDependencies = createSearchStrategyDependenciesMock(); + + const logEntrySearchStrategy = logEntrySearchStrategyProvider({ + data: dataMock, + sources: sourcesMock, + }); + + const response = logEntrySearchStrategy.search( + { + id: logEntrySearchRequestStateRT.encode({ esRequestId: 'UNKNOWN_ID' }), + params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + }, + {}, + mockDependencies + ); + + await expect(response.toPromise()).rejects.toThrowError(ResponseError); + }); +}); + +const createSourceConfigurationMock = () => ({ + id: 'SOURCE_ID', + origin: 'stored' as const, + configuration: { + name: 'SOURCE_NAME', + description: 'SOURCE_DESCRIPTION', + logAlias: 'log-indices-*', + metricAlias: 'metric-indices-*', + inventoryDefaultView: 'DEFAULT_VIEW', + metricsExplorerDefaultView: 'DEFAULT_VIEW', + logColumns: [], + fields: { + pod: 'POD_FIELD', + host: 'HOST_FIELD', + container: 'CONTAINER_FIELD', + message: ['MESSAGE_FIELD'], + timestamp: 'TIMESTAMP_FIELD', + tiebreaker: 'TIEBREAKER_FIELD', + }, + }, +}); + +const createEsSearchStrategyMock = (esSearchResponse: IEsSearchResponse) => ({ + search: jest.fn((esSearchRequest: IEsSearchRequest) => { + if (typeof esSearchRequest.id === 'string') { + if (esSearchRequest.id === esSearchResponse.id) { + return of(esSearchResponse); + } else { + return throwError( + new ResponseError({ + body: {}, + headers: {}, + meta: {} as any, + statusCode: 404, + warnings: [], + }) + ); + } + } else { + return of(esSearchResponse); + } + }), +}); + +const createSearchStrategyDependenciesMock = (): SearchStrategyDependencies => ({ + uiSettingsClient: uiSettingsServiceMock.createClient(), + esClient: elasticsearchServiceMock.createScopedClusterClient(), + savedObjectsClient: savedObjectsClientMock.create(), +}); + +// using the official data mock from within x-pack doesn't type-check successfully, +// because the `licensing` plugin modifies the `RequestHandlerContext` core type. +const createDataPluginMock = (esSearchStrategyMock: ISearchStrategy): any => ({ + search: { + getSearchStrategy: jest.fn().mockReturnValue(esSearchStrategyMock), + }, +}); diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts new file mode 100644 index 00000000000000..a0dfe3d7176fd4 --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; +import { concat, defer, of } from 'rxjs'; +import { concatMap, filter, map, shareReplay, take } from 'rxjs/operators'; +import type { + IEsSearchRequest, + IKibanaSearchRequest, + IKibanaSearchResponse, +} from '../../../../../../src/plugins/data/common'; +import type { + ISearchStrategy, + PluginStart as DataPluginStart, +} from '../../../../../../src/plugins/data/server'; +import { getLogEntryCursorFromHit } from '../../../common/log_entry'; +import { decodeOrThrow } from '../../../common/runtime_types'; +import { + LogEntrySearchRequestParams, + logEntrySearchRequestParamsRT, + LogEntrySearchResponsePayload, + logEntrySearchResponsePayloadRT, +} from '../../../common/search_strategies/log_entries/log_entry'; +import type { IInfraSources } from '../../lib/sources'; +import { + createAsyncRequestRTs, + createErrorFromShardFailure, + jsonFromBase64StringRT, +} from '../../utils/typed_search_strategy'; +import { createGetLogEntryQuery, getLogEntryResponseRT, LogEntryHit } from './queries/log_entry'; + +type LogEntrySearchRequest = IKibanaSearchRequest; +type LogEntrySearchResponse = IKibanaSearchResponse; + +export const logEntrySearchStrategyProvider = ({ + data, + sources, +}: { + data: DataPluginStart; + sources: IInfraSources; +}): ISearchStrategy => { + const esSearchStrategy = data.search.getSearchStrategy('ese'); + + return { + search: (rawRequest, options, dependencies) => + defer(() => { + const request = decodeOrThrow(asyncRequestRT)(rawRequest); + + const sourceConfiguration$ = defer(() => + sources.getSourceConfiguration(dependencies.savedObjectsClient, request.params.sourceId) + ).pipe(shareReplay(1)); + + const recoveredRequest$ = of(request).pipe( + filter(asyncRecoveredRequestRT.is), + map(({ id: { esRequestId } }) => ({ id: esRequestId })) + ); + + const initialRequest$ = of(request).pipe( + filter(asyncInitialRequestRT.is), + concatMap(({ params }) => + sourceConfiguration$.pipe( + map( + ({ configuration }): IEsSearchRequest => ({ + params: createGetLogEntryQuery( + configuration.logAlias, + params.logEntryId, + configuration.fields.timestamp, + configuration.fields.tiebreaker + ), + }) + ) + ) + ) + ); + + return concat(recoveredRequest$, initialRequest$).pipe( + take(1), + concatMap((esRequest) => esSearchStrategy.search(esRequest, options, dependencies)), + map((esResponse) => ({ + ...esResponse, + rawResponse: decodeOrThrow(getLogEntryResponseRT)(esResponse.rawResponse), + })), + map((esResponse) => ({ + ...esResponse, + ...(esResponse.id + ? { id: logEntrySearchRequestStateRT.encode({ esRequestId: esResponse.id }) } + : {}), + rawResponse: logEntrySearchResponsePayloadRT.encode({ + data: esResponse.rawResponse.hits.hits.map(createLogEntryFromHit)[0] ?? null, + errors: (esResponse.rawResponse._shards.failures ?? []).map( + createErrorFromShardFailure + ), + }), + })) + ); + }), + cancel: async (id, options, dependencies) => { + const { esRequestId } = decodeOrThrow(logEntrySearchRequestStateRT)(id); + return await esSearchStrategy.cancel?.(esRequestId, options, dependencies); + }, + }; +}; + +// exported for tests +export const logEntrySearchRequestStateRT = rt.string.pipe(jsonFromBase64StringRT).pipe( + rt.type({ + esRequestId: rt.string, + }) +); + +const { asyncInitialRequestRT, asyncRecoveredRequestRT, asyncRequestRT } = createAsyncRequestRTs( + logEntrySearchRequestStateRT, + logEntrySearchRequestParamsRT +); + +const createLogEntryFromHit = (hit: LogEntryHit) => ({ + id: hit._id, + index: hit._index, + key: getLogEntryCursorFromHit(hit), + fields: Object.entries(hit.fields).map(([field, value]) => ({ field, value })), +}); diff --git a/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts b/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts new file mode 100644 index 00000000000000..880a48fd5b8f7c --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/queries/log_entry.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import type { RequestParams } from '@elastic/elasticsearch'; +import * as rt from 'io-ts'; +import { jsonArrayRT } from '../../../../common/typed_json'; +import { + commonHitFieldsRT, + commonSearchSuccessResponseFieldsRT, +} from '../../../utils/elasticsearch_runtime_types'; + +export const createGetLogEntryQuery = ( + logEntryIndex: string, + logEntryId: string, + timestampField: string, + tiebreakerField: string +): RequestParams.Search> => ({ + index: logEntryIndex, + terminate_after: 1, + track_scores: false, + track_total_hits: false, + body: { + size: 1, + query: { + ids: { + values: [logEntryId], + }, + }, + fields: ['*'], + sort: [{ [timestampField]: 'desc' }, { [tiebreakerField]: 'desc' }], + _source: false, + }, +}); + +export const logEntryHitRT = rt.intersection([ + commonHitFieldsRT, + rt.type({ + fields: rt.record(rt.string, jsonArrayRT), + sort: rt.tuple([rt.number, rt.number]), + }), +]); + +export type LogEntryHit = rt.TypeOf; + +export const getLogEntryResponseRT = rt.intersection([ + commonSearchSuccessResponseFieldsRT, + rt.type({ + hits: rt.type({ + hits: rt.array(logEntryHitRT), + }), + }), +]); + +export type GetLogEntryResponse = rt.TypeOf; diff --git a/x-pack/plugins/infra/server/services/log_entries/types.ts b/x-pack/plugins/infra/server/services/log_entries/types.ts new file mode 100644 index 00000000000000..d9f1024845bad5 --- /dev/null +++ b/x-pack/plugins/infra/server/services/log_entries/types.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + PluginSetup as DataPluginSetup, + PluginStart as DataPluginStart, +} from '../../../../../../src/plugins/data/server'; +import { InfraSources } from '../../lib/sources'; + +export interface LogEntriesServiceSetupDeps { + data: DataPluginSetup; + sources: InfraSources; +} + +export interface LogEntriesServiceStartDeps { + data: DataPluginStart; +} diff --git a/x-pack/plugins/infra/server/utils/elasticsearch_runtime_types.ts b/x-pack/plugins/infra/server/utils/elasticsearch_runtime_types.ts index a48c65d648b25a..271dbb864abadc 100644 --- a/x-pack/plugins/infra/server/utils/elasticsearch_runtime_types.ts +++ b/x-pack/plugins/infra/server/utils/elasticsearch_runtime_types.ts @@ -6,13 +6,35 @@ import * as rt from 'io-ts'; -export const commonSearchSuccessResponseFieldsRT = rt.type({ - _shards: rt.type({ - total: rt.number, - successful: rt.number, - skipped: rt.number, - failed: rt.number, +export const shardFailureRT = rt.type({ + index: rt.string, + node: rt.string, + reason: rt.type({ + reason: rt.string, + type: rt.string, }), + shard: rt.number, +}); + +export type ShardFailure = rt.TypeOf; + +export const commonSearchSuccessResponseFieldsRT = rt.type({ + _shards: rt.intersection([ + rt.type({ + total: rt.number, + successful: rt.number, + skipped: rt.number, + failed: rt.number, + }), + rt.partial({ + failures: rt.array(shardFailureRT), + }), + ]), timed_out: rt.boolean, took: rt.number, }); + +export const commonHitFieldsRT = rt.type({ + _index: rt.string, + _id: rt.string, +}); diff --git a/x-pack/plugins/infra/server/utils/typed_search_strategy.ts b/x-pack/plugins/infra/server/utils/typed_search_strategy.ts new file mode 100644 index 00000000000000..1234aea507f3fb --- /dev/null +++ b/x-pack/plugins/infra/server/utils/typed_search_strategy.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import * as rt from 'io-ts'; +import stringify from 'json-stable-stringify'; +import { JsonValue, jsonValueRT } from '../../common/typed_json'; +import { SearchStrategyError } from '../../common/search_strategies/common/errors'; +import { ShardFailure } from './elasticsearch_runtime_types'; + +export const jsonFromBase64StringRT = new rt.Type( + 'JSONFromBase64String', + jsonValueRT.is, + (value, context) => { + try { + return rt.success(JSON.parse(Buffer.from(value, 'base64').toString())); + } catch (error) { + return rt.failure(error, context); + } + }, + (a) => Buffer.from(stringify(a)).toString('base64') +); + +export const createAsyncRequestRTs = ( + stateCodec: StateCodec, + paramsCodec: ParamsCodec +) => { + const asyncRecoveredRequestRT = rt.type({ + id: stateCodec, + params: paramsCodec, + }); + + const asyncInitialRequestRT = rt.type({ + id: rt.undefined, + params: paramsCodec, + }); + + const asyncRequestRT = rt.union([asyncRecoveredRequestRT, asyncInitialRequestRT]); + + return { + asyncInitialRequestRT, + asyncRecoveredRequestRT, + asyncRequestRT, + }; +}; + +export const createErrorFromShardFailure = (failure: ShardFailure): SearchStrategyError => ({ + type: 'shardFailure' as const, + shardInfo: { + index: failure.index, + node: failure.node, + shard: failure.shard, + }, + message: failure.reason.reason, +}); diff --git a/x-pack/plugins/ingest_manager/jest.config.js b/x-pack/plugins/ingest_manager/jest.config.js new file mode 100644 index 00000000000000..8aff85670176b2 --- /dev/null +++ b/x-pack/plugins/ingest_manager/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/ingest_manager'], +}; diff --git a/x-pack/plugins/ingest_pipelines/jest.config.js b/x-pack/plugins/ingest_pipelines/jest.config.js new file mode 100644 index 00000000000000..48ce7dea0b5bab --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/ingest_pipelines'], +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx index e66534ae1b2504..706a2c47a348fa 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/common_fields/common_processor_fields.tsx @@ -6,6 +6,7 @@ import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; +import { PainlessLang } from '@kbn/monaco'; import { FieldConfig, @@ -56,6 +57,8 @@ const tagConfig: FieldConfig = { }; export const CommonProcessorFields: FunctionComponent = () => { + const suggestionProvider = PainlessLang.getSuggestionProvider('processor_conditional'); + return (
    { component={TextEditor} componentProps={{ editorProps: { - languageId: 'painless', + languageId: PainlessLang.ID, + suggestionProvider, height: EDITOR_PX_HEIGHT.extraSmall, options: { lineNumbers: 'off', diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/script.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/script.tsx index de28f667666039..8685738b39273f 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/script.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_processors_editor/components/processor_form/processors/script.tsx @@ -4,12 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; +import { PainlessLang } from '@kbn/monaco'; import { EuiCode, EuiSwitch, EuiFormRow } from '@elastic/eui'; -import { FIELD_TYPES, fieldValidators, UseField, Field } from '../../../../../../shared_imports'; +import { + FIELD_TYPES, + fieldValidators, + UseField, + Field, + useFormData, +} from '../../../../../../shared_imports'; import { XJsonEditor, TextEditor } from '../field_components'; @@ -122,6 +129,17 @@ const fieldsConfig: FieldsConfig = { export const Script: FormFieldsComponent = ({ initialFieldValues }) => { const [showId, setShowId] = useState(() => !!initialFieldValues?.id); + const [scriptLanguage, setScriptLanguage] = useState('plaintext'); + + const [{ fields }] = useFormData({ watch: 'fields.lang' }); + + const suggestionProvider = PainlessLang.getSuggestionProvider('processor_conditional'); + + useEffect(() => { + const isPainlessLang = fields?.lang === 'painless' || fields?.lang === ''; // Scripting language defaults to painless if none specified + setScriptLanguage(isPainlessLang ? PainlessLang.ID : 'plaintext'); + }, [fields]); + return ( <> @@ -147,6 +165,9 @@ export const Script: FormFieldsComponent = ({ initialFieldValues }) => { component={TextEditor} componentProps={{ editorProps: { + languageId: scriptLanguage, + suggestionProvider: + scriptLanguage === PainlessLang.ID ? suggestionProvider : undefined, height: EDITOR_PX_HEIGHT.medium, 'aria-label': i18n.translate( 'xpack.ingestPipelines.pipelineEditor.scriptForm.sourceFieldAriaLabel', diff --git a/x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts b/x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts index f99bb9ba331d2e..e26b53b20db405 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/services/ui_metric.ts @@ -20,8 +20,8 @@ export class UiMetricService { return; } - const { reportUiStats, METRIC_TYPE } = this.usageCollection; - reportUiStats(UIM_APP_NAME, METRIC_TYPE.COUNT, name); + const { reportUiCounter, METRIC_TYPE } = this.usageCollection; + reportUiCounter(UIM_APP_NAME, METRIC_TYPE.COUNT, name); } public trackUiMetric(eventName: string) { diff --git a/x-pack/plugins/lens/jest.config.js b/x-pack/plugins/lens/jest.config.js new file mode 100644 index 00000000000000..bcb80519c5ef5a --- /dev/null +++ b/x-pack/plugins/lens/jest.config.js @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../..', + roots: ['/x-pack/plugins/lens'], +}; diff --git a/x-pack/plugins/lens/kibana.json b/x-pack/plugins/lens/kibana.json index ce78757676bccb..4ecc7f01285919 100644 --- a/x-pack/plugins/lens/kibana.json +++ b/x-pack/plugins/lens/kibana.json @@ -14,10 +14,11 @@ "dashboard", "charts", "uiActions", - "embeddable" + "embeddable", + "share" ], "optionalPlugins": ["usageCollection", "taskManager", "globalSearch", "savedObjectsTagging"], "configPath": ["xpack", "lens"], "extraPublicDirs": ["common/constants"], - "requiredBundles": ["savedObjects", "kibanaUtils", "kibanaReact", "embeddable", "lensOss"] + "requiredBundles": ["savedObjects", "kibanaUtils", "kibanaReact", "embeddable", "lensOss", "presentationUtil"] } diff --git a/x-pack/plugins/lens/public/app_plugin/app.test.tsx b/x-pack/plugins/lens/public/app_plugin/app.test.tsx index a211416472f48b..7e7156793e18bb 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.test.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.test.tsx @@ -308,6 +308,9 @@ describe('Lens App', () => { const pinnedField = ({ name: 'pinnedField' } as unknown) as IFieldType; const pinnedFilter = esFilters.buildExistsFilter(pinnedField, indexPattern); services.data.query.filterManager.getFilters = jest.fn().mockImplementation(() => { + return []; + }); + services.data.query.filterManager.getGlobalFilters = jest.fn().mockImplementation(() => { return [pinnedFilter]; }); const { component, frame } = mountWith({ services }); @@ -322,6 +325,7 @@ describe('Lens App', () => { filters: [pinnedFilter], }) ); + expect(services.data.query.filterManager.getFilters).not.toHaveBeenCalled(); }); it('displays errors from the frame in a toast', () => { @@ -626,7 +630,7 @@ describe('Lens App', () => { }); }); - it('Shows Save and Return and Save As buttons in create by value mode', async () => { + it('Shows Save and Return and Save As buttons in create by value mode with originating app', async () => { const props = makeDefaultProps(); const services = makeDefaultServices(); services.dashboardFeatureFlag = { allowByValueEmbeddables: true }; @@ -895,6 +899,71 @@ describe('Lens App', () => { }); }); + describe('download button', () => { + function getButton(inst: ReactWrapper): TopNavMenuData { + return (inst + .find('[data-test-subj="lnsApp_topNav"]') + .prop('config') as TopNavMenuData[]).find( + (button) => button.testId === 'lnsApp_downloadCSVButton' + )!; + } + + it('should be disabled when no data is available', async () => { + const { component, frame } = mountWith({}); + const onChange = frame.mount.mock.calls[0][1].onChange; + await act(async () => + onChange({ + filterableIndexPatterns: [], + doc: ({} as unknown) as Document, + isSaveable: true, + }) + ); + component.update(); + expect(getButton(component).disableButton).toEqual(true); + }); + + it('should disable download when not saveable', async () => { + const { component, frame } = mountWith({}); + const onChange = frame.mount.mock.calls[0][1].onChange; + + await act(async () => + onChange({ + filterableIndexPatterns: [], + doc: ({} as unknown) as Document, + isSaveable: false, + activeData: { layer1: { type: 'datatable', columns: [], rows: [] } }, + }) + ); + + component.update(); + expect(getButton(component).disableButton).toEqual(true); + }); + + it('should still be enabled even if the user is missing save permissions', async () => { + const services = makeDefaultServices(); + services.application = { + ...services.application, + capabilities: { + ...services.application.capabilities, + visualize: { save: false, saveQuery: false, show: true }, + }, + }; + + const { component, frame } = mountWith({ services }); + const onChange = frame.mount.mock.calls[0][1].onChange; + await act(async () => + onChange({ + filterableIndexPatterns: [], + doc: ({} as unknown) as Document, + isSaveable: true, + activeData: { layer1: { type: 'datatable', columns: [], rows: [] } }, + }) + ); + component.update(); + expect(getButton(component).disableButton).toEqual(false); + }); + }); + describe('query bar state management', () => { it('uses the default time and query language settings', () => { const { frame } = mountWith({}); diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx index cdd701271be2ca..b5219384f301a4 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.tsx @@ -11,6 +11,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { NotificationsStart } from 'kibana/public'; import { EuiBreadcrumb } from '@elastic/eui'; +import { downloadMultipleAs } from '../../../../../src/plugins/share/public'; import { createKbnUrlStateStorage, withNotifyOnErrors, @@ -25,6 +26,7 @@ import { NativeRenderer } from '../native_renderer'; import { trackUiEvent } from '../lens_ui_telemetry'; import { esFilters, + exporters, IndexPattern as IndexPatternInstance, IndexPatternsContract, syncQueryStateWithUrl, @@ -32,7 +34,7 @@ import { import { LENS_EMBEDDABLE_TYPE, getFullPath } from '../../common'; import { LensAppProps, LensAppServices, LensAppState } from './types'; import { getLensTopNavConfig } from './lens_top_nav'; -import { TagEnhancedSavedObjectSaveModalOrigin } from './tags_saved_object_save_modal_origin_wrapper'; +import { SaveModal } from './save_modal'; import { LensByReferenceInput, LensEmbeddableInput, @@ -46,6 +48,7 @@ export function App({ initialInput, incomingState, redirectToOrigin, + redirectToDashboard, setHeaderActionMenu, initialContext, }: LensAppProps) { @@ -70,7 +73,11 @@ export function App({ const currentRange = data.query.timefilter.timefilter.getTime(); return { query: data.query.queryString.getQuery(), - filters: data.query.filterManager.getFilters(), + // Do not use app-specific filters from previous app, + // only if Lens was opened with the intention to visualize a field (e.g. coming from Discover) + filters: !initialContext + ? data.query.filterManager.getGlobalFilters() + : data.query.filterManager.getFilters(), isLoading: Boolean(initialInput), indexPatternsForTopNav: [], dateRange: { @@ -349,6 +356,7 @@ export function App({ const runSave = async ( saveProps: Omit & { returnToOrigin: boolean; + dashboardId?: string | null; onTitleDuplicate?: OnSaveProps['onTitleDuplicate']; newDescription?: string; newTags?: string[]; @@ -423,6 +431,13 @@ export function App({ }); redirectToOrigin({ input: newInput, isCopied: saveProps.newCopyOnSave }); return; + } else if (saveProps.dashboardId && redirectToDashboard) { + // disabling the validation on app leave because the document has been saved. + onAppLeave((actions) => { + return actions.default(); + }); + redirectToDashboard(newInput, saveProps.dashboardId); + return; } notifications.toasts.addSuccess( @@ -474,16 +489,50 @@ export function App({ const { TopNavMenu } = navigation.ui; const savingPermitted = Boolean(state.isSaveable && application.capabilities.visualize.save); + const unsavedTitle = i18n.translate('xpack.lens.app.unsavedFilename', { + defaultMessage: 'unsaved', + }); const topNavConfig = getLensTopNavConfig({ showSaveAndReturn: Boolean( state.isLinkedToOriginatingApp && // Temporarily required until the 'by value' paradigm is default. (dashboardFeatureFlag.allowByValueEmbeddables || Boolean(initialInput)) ), + enableExportToCSV: Boolean( + state.isSaveable && state.activeData && Object.keys(state.activeData).length + ), isByValueMode: getIsByValueMode(), showCancel: Boolean(state.isLinkedToOriginatingApp), savingPermitted, actions: { + exportToCSV: () => { + if (!state.activeData) { + return; + } + const datatables = Object.values(state.activeData); + const content = datatables.reduce>( + (memo, datatable, i) => { + // skip empty datatables + if (datatable) { + const postFix = datatables.length > 1 ? `-${i + 1}` : ''; + + memo[`${lastKnownDoc?.title || unsavedTitle}${postFix}.csv`] = { + content: exporters.datatableToCSV(datatable, { + csvSeparator: uiSettings.get('csv:separator', ','), + quoteValues: uiSettings.get('csv:quoteValues', true), + formatFactory: data.fieldFormats.deserialize, + }), + type: exporters.CSV_MIME_TYPE, + }; + } + return memo; + }, + {} + ); + if (content) { + downloadMultipleAs(content); + } + }, saveAndReturn: () => { if (savingPermitted && lastKnownDoc) { // disabling the validation on app leave because the document has been saved. @@ -605,13 +654,16 @@ export function App({ onError, showNoDataPopover, initialContext, - onChange: ({ filterableIndexPatterns, doc, isSaveable }) => { + onChange: ({ filterableIndexPatterns, doc, isSaveable, activeData }) => { if (isSaveable !== state.isSaveable) { setState((s) => ({ ...s, isSaveable })); } if (!_.isEqual(state.persistedDoc, doc)) { setState((s) => ({ ...s, lastKnownDoc: doc })); } + if (!_.isEqual(state.activeData, activeData)) { + setState((s) => ({ ...s, activeData })); + } // Update the cached index patterns if the user made a change to any of them if ( @@ -636,35 +688,28 @@ export function App({ /> )} - {lastKnownDoc && state.isSaveModalVisible && ( - runSave(props, { saveToLibrary: true })} - onClose={() => { - setState((s) => ({ ...s, isSaveModalVisible: false })); - }} - getAppNameFromId={() => getOriginatingAppName()} - documentInfo={{ - id: lastKnownDoc.savedObjectId, - title: lastKnownDoc.title || '', - description: lastKnownDoc.description || '', - }} - returnToOriginSwitchLabel={ - getIsByValueMode() && initialInput - ? i18n.translate('xpack.lens.app.updatePanel', { - defaultMessage: 'Update panel on {originatingAppName}', - values: { originatingAppName: getOriginatingAppName() }, - }) - : undefined - } - objectType={i18n.translate('xpack.lens.app.saveModalType', { - defaultMessage: 'Lens visualization', - })} - data-test-subj="lnsApp_saveModalOrigin" - /> - )} + { + setState((s) => ({ ...s, isSaveModalVisible: false })); + }} + getAppNameFromId={() => getOriginatingAppName()} + lastKnownDoc={lastKnownDoc} + returnToOriginSwitchLabel={ + getIsByValueMode() && initialInput + ? i18n.translate('xpack.lens.app.updatePanel', { + defaultMessage: 'Update panel on {originatingAppName}', + values: { originatingAppName: getOriginatingAppName() }, + }) + : undefined + } + /> ); } diff --git a/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx b/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx index 9162af52052ee9..2c23dc291405cc 100644 --- a/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx +++ b/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx @@ -10,12 +10,13 @@ import { LensTopNavActions } from './types'; export function getLensTopNavConfig(options: { showSaveAndReturn: boolean; + enableExportToCSV: boolean; showCancel: boolean; isByValueMode: boolean; actions: LensTopNavActions; savingPermitted: boolean; }): TopNavMenuData[] { - const { showSaveAndReturn, showCancel, actions, savingPermitted } = options; + const { showSaveAndReturn, showCancel, actions, savingPermitted, enableExportToCSV } = options; const topNavMenu: TopNavMenuData[] = []; const saveButtonLabel = options.isByValueMode @@ -30,6 +31,18 @@ export function getLensTopNavConfig(options: { defaultMessage: 'Save', }); + topNavMenu.push({ + label: i18n.translate('xpack.lens.app.downloadCSV', { + defaultMessage: 'Download as CSV', + }), + run: actions.exportToCSV, + testId: 'lnsApp_downloadCSVButton', + description: i18n.translate('xpack.lens.app.downloadButtonAriaLabel', { + defaultMessage: 'Download the data as CSV file', + }), + disableButton: !enableExportToCSV, + }); + if (showCancel) { topNavMenu.push({ label: i18n.translate('xpack.lens.app.cancel', { diff --git a/x-pack/plugins/lens/public/app_plugin/mounter.tsx b/x-pack/plugins/lens/public/app_plugin/mounter.tsx index bd43a1dcc20bd7..3bc2a8956e61a5 100644 --- a/x-pack/plugins/lens/public/app_plugin/mounter.tsx +++ b/x-pack/plugins/lens/public/app_plugin/mounter.tsx @@ -107,6 +107,23 @@ export async function mountApp( } }; + const redirectToDashboard = (embeddableInput: LensEmbeddableInput, dashboardId: string) => { + if (!lensServices.dashboardFeatureFlag.allowByValueEmbeddables) { + throw new Error('redirectToDashboard called with by-value embeddables disabled'); + } + + const state = { + input: embeddableInput, + type: LENS_EMBEDDABLE_TYPE, + }; + + const path = dashboardId === 'new' ? '#/create' : `#/view/${dashboardId}`; + stateTransfer.navigateToWithEmbeddablePackage('dashboards', { + state, + path, + }); + }; + const redirectToOrigin = (props?: RedirectToOriginProps) => { if (!embeddableEditorIncomingState?.originatingApp) { throw new Error('redirectToOrigin called without an originating app'); @@ -135,6 +152,7 @@ export async function mountApp( initialInput={getInitialInput(routeProps)} redirectTo={(savedObjectId?: string) => redirectTo(routeProps, savedObjectId)} redirectToOrigin={redirectToOrigin} + redirectToDashboard={redirectToDashboard} onAppLeave={params.onAppLeave} setHeaderActionMenu={params.setHeaderActionMenu} history={routeProps.history} diff --git a/x-pack/plugins/lens/public/app_plugin/save_modal.tsx b/x-pack/plugins/lens/public/app_plugin/save_modal.tsx new file mode 100644 index 00000000000000..88d697ff47f8cd --- /dev/null +++ b/x-pack/plugins/lens/public/app_plugin/save_modal.tsx @@ -0,0 +1,106 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React from 'react'; +import { i18n } from '@kbn/i18n'; + +import { SavedObjectsStart } from '../../../../../src/core/public'; + +import { Document } from '../persistence'; +import type { SavedObjectTaggingPluginStart } from '../../../saved_objects_tagging/public'; + +import { + TagEnhancedSavedObjectSaveModalOrigin, + OriginSaveProps, +} from './tags_saved_object_save_modal_origin_wrapper'; +import { + TagEnhancedSavedObjectSaveModalDashboard, + DashboardSaveProps, +} from './tags_saved_object_save_modal_dashboard_wrapper'; + +export type SaveProps = OriginSaveProps | DashboardSaveProps; + +export interface Props { + isVisible: boolean; + + originatingApp?: string; + allowByValueEmbeddables: boolean; + + savedObjectsClient: SavedObjectsStart['client']; + + savedObjectsTagging?: SavedObjectTaggingPluginStart; + tagsIds: string[]; + + lastKnownDoc?: Document; + + getAppNameFromId: () => string | undefined; + returnToOriginSwitchLabel?: string; + + onClose: () => void; + onSave: (props: SaveProps, options: { saveToLibrary: boolean }) => void; +} + +export const SaveModal = (props: Props) => { + if (!props.isVisible || !props.lastKnownDoc) { + return null; + } + + const { + originatingApp, + savedObjectsTagging, + savedObjectsClient, + tagsIds, + lastKnownDoc, + allowByValueEmbeddables, + returnToOriginSwitchLabel, + getAppNameFromId, + onClose, + onSave, + } = props; + + // Use the modal with return-to-origin features if we're in an app's edit flow or if by-value embeddables are disabled + if (originatingApp || !allowByValueEmbeddables) { + return ( + onSave(saveProps, { saveToLibrary: true })} + getAppNameFromId={getAppNameFromId} + documentInfo={{ + id: lastKnownDoc.savedObjectId, + title: lastKnownDoc.title || '', + description: lastKnownDoc.description || '', + }} + returnToOriginSwitchLabel={returnToOriginSwitchLabel} + objectType={i18n.translate('xpack.lens.app.saveModalType', { + defaultMessage: 'Lens visualization', + })} + data-test-subj="lnsApp_saveModalOrigin" + /> + ); + } + + return ( + onSave(saveProps, { saveToLibrary: false })} + onClose={onClose} + documentInfo={{ + id: lastKnownDoc.savedObjectId, + title: lastKnownDoc.title || '', + description: lastKnownDoc.description || '', + }} + objectType={i18n.translate('xpack.lens.app.saveModalType', { + defaultMessage: 'Lens visualization', + })} + data-test-subj="lnsApp_saveModalDashboard" + /> + ); +}; diff --git a/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_dashboard_wrapper.tsx b/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_dashboard_wrapper.tsx new file mode 100644 index 00000000000000..087cfdc9f3a8af --- /dev/null +++ b/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_dashboard_wrapper.tsx @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, useState, useMemo, useCallback } from 'react'; +import { OnSaveProps } from '../../../../../src/plugins/saved_objects/public'; +import { + DashboardSaveModalProps, + SavedObjectSaveModalDashboard, +} from '../../../../../src/plugins/presentation_util/public'; +import { SavedObjectTaggingPluginStart } from '../../../saved_objects_tagging/public'; + +export type DashboardSaveProps = OnSaveProps & { + returnToOrigin: boolean; + dashboardId?: string | null; + newTags?: string[]; +}; + +export type TagEnhancedSavedObjectSaveModalDashboardProps = Omit< + DashboardSaveModalProps, + 'onSave' +> & { + initialTags: string[]; + savedObjectsTagging?: SavedObjectTaggingPluginStart; + onSave: (props: DashboardSaveProps) => void; +}; + +export const TagEnhancedSavedObjectSaveModalDashboard: FC = ({ + initialTags, + onSave, + savedObjectsTagging, + ...otherProps +}) => { + const [selectedTags, setSelectedTags] = useState(initialTags); + + const tagSelectorOption = useMemo( + () => + savedObjectsTagging ? ( + + ) : undefined, + [savedObjectsTagging, initialTags] + ); + + const tagEnhancedOptions = <>{tagSelectorOption}; + + const tagEnhancedOnSave: DashboardSaveModalProps['onSave'] = useCallback( + (saveOptions) => { + onSave({ + ...saveOptions, + returnToOrigin: false, + newTags: selectedTags, + }); + }, + [onSave, selectedTags] + ); + + return ( + + ); +}; diff --git a/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_origin_wrapper.tsx b/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_origin_wrapper.tsx index a904ecd05909af..9f12b1ed7a8c86 100644 --- a/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_origin_wrapper.tsx +++ b/x-pack/plugins/lens/public/app_plugin/tags_saved_object_save_modal_origin_wrapper.tsx @@ -13,10 +13,12 @@ import { } from '../../../../../src/plugins/saved_objects/public'; import { SavedObjectTaggingPluginStart } from '../../../saved_objects_tagging/public'; -type TagEnhancedSavedObjectSaveModalOriginProps = Omit & { +export type OriginSaveProps = OnSaveProps & { returnToOrigin: boolean; newTags?: string[] }; + +export type TagEnhancedSavedObjectSaveModalOriginProps = Omit & { initialTags: string[]; savedObjectsTagging?: SavedObjectTaggingPluginStart; - onSave: (props: OnSaveProps & { returnToOrigin: boolean; newTags?: string[] }) => void; + onSave: (props: OriginSaveProps) => void; }; export const TagEnhancedSavedObjectSaveModalOrigin: FC = ({ diff --git a/x-pack/plugins/lens/public/app_plugin/types.ts b/x-pack/plugins/lens/public/app_plugin/types.ts index 6c222bed7a83fe..e09d7389b9d46a 100644 --- a/x-pack/plugins/lens/public/app_plugin/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/types.ts @@ -34,6 +34,7 @@ import { ACTION_VISUALIZE_LENS_FIELD, } from '../../../../../src/plugins/ui_actions/public'; import { EmbeddableEditorState } from '../../../../../src/plugins/embeddable/public'; +import { TableInspectorAdapter } from '../editor_frame_service/types'; import { EditorFrameInstance } from '..'; export interface LensAppState { @@ -60,6 +61,7 @@ export interface LensAppState { filters: Filter[]; savedQuery?: SavedQuery; isSaveable: boolean; + activeData?: TableInspectorAdapter; } export interface RedirectToOriginProps { @@ -74,6 +76,7 @@ export interface LensAppProps { setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; redirectTo: (savedObjectId?: string) => void; redirectToOrigin?: (props?: RedirectToOriginProps) => void; + redirectToDashboard?: (input: LensEmbeddableInput, dashboardId: string) => void; // The initial input passed in by the container when editing. Can be either by reference or by value. initialInput?: LensEmbeddableInput; @@ -111,4 +114,5 @@ export interface LensTopNavActions { saveAndReturn: () => void; showSaveModal: () => void; cancel: () => void; + exportToCSV: () => void; } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx index 6b7e5ba8ea89d8..c39c46c1f4152a 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/config_panel.tsx @@ -19,10 +19,9 @@ export const ConfigPanelWrapper = memo(function ConfigPanelWrapper(props: Config const activeVisualization = props.visualizationMap[props.activeVisualizationId || '']; const { visualizationState } = props; - return ( - activeVisualization && - visualizationState && - ); + return activeVisualization && visualizationState ? ( + + ) : null; }); function LayerPanels( @@ -95,7 +94,7 @@ function LayerPanels( {...props} key={layerId} layerId={layerId} - dataTestSubj={`lns-layerPanel-${index}`} + index={index} visualizationState={visualizationState} updateVisualization={setVisualizationState} updateDatasource={updateDatasource} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.scss index bd2789cf645c72..5947d62540a0db 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.scss @@ -13,7 +13,39 @@ animation: euiFlyout $euiAnimSpeedNormal $euiAnimSlightResistance; } -.lnsDimensionContainer__footer, -.lnsDimensionContainer__header { +.lnsDimensionContainer__footer { padding: $euiSizeS; } + +.lnsDimensionContainer__header { + padding: $euiSizeS $euiSizeXS; +} + +.lnsDimensionContainer__headerTitle { + padding: $euiSizeS $euiSizeXS; + cursor: pointer; + + &:hover { + text-decoration: underline; + } +} + +.lnsDimensionContainer__headerLink { + &:focus-within { + background-color: transparentize($euiColorVis1, .9); + + .lnsDimensionContainer__headerTitle { + text-decoration: underline; + } + } +} + +.lnsDimensionContainer__backIcon { + &:hover { + transform: none !important; // sass-lint:disable-line no-important + } + + &:focus { + background-color: transparent; + } +} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.tsx index 8f1b441d1d285c..748079cc7a4006 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/dimension_container.tsx @@ -10,7 +10,9 @@ import { EuiFlyoutHeader, EuiFlyoutFooter, EuiTitle, + EuiButtonIcon, EuiButtonEmpty, + EuiFlexGroup, EuiFlexItem, EuiFocusTrap, EuiOutsideClickDetector, @@ -54,24 +56,42 @@ export function DimensionContainer({ className="lnsDimensionContainer" > - - - - {i18n.translate('xpack.lens.configure.configurePanelTitle', { - defaultMessage: '{groupLabel} configuration', - values: { - groupLabel, - }, + + + - - + /> + + + +

    + + {i18n.translate('xpack.lens.configure.configurePanelTitle', { + defaultMessage: '{groupLabel} configuration', + values: { + groupLabel, + }, + })} + +

    +
    +
    +
    {panel} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx index 37dc039df498b3..bdf6f9aa416434 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx @@ -58,7 +58,7 @@ describe('LayerPanel', () => { onRemoveLayer: jest.fn(), dispatch: jest.fn(), core: coreMock.createStart(), - dataTestSubj: 'lns_layerPanel-0', + index: 0, }; } @@ -274,6 +274,69 @@ describe('LayerPanel', () => { expect(component.find('EuiFlyoutHeader').exists()).toBe(true); }); + it('should not update the visualization if the datasource is incomplete', () => { + (generateId as jest.Mock).mockReturnValueOnce(`newid`); + const updateAll = jest.fn(); + const updateDatasource = jest.fn(); + + mockVisualization.getConfiguration.mockReturnValue({ + groups: [ + { + groupLabel: 'A', + groupId: 'a', + accessors: [], + filterOperations: () => true, + supportsMoreColumns: true, + dataTestSubj: 'lnsGroup', + }, + ], + }); + + const component = mountWithIntl( + + ); + + act(() => { + component.find('[data-test-subj="lns-empty-dimension"]').first().simulate('click'); + }); + component.update(); + + expect(mockDatasource.renderDimensionEditor).toHaveBeenCalledWith( + expect.any(Element), + expect.objectContaining({ columnId: 'newid' }) + ); + const stateFn = + mockDatasource.renderDimensionEditor.mock.calls[ + mockDatasource.renderDimensionEditor.mock.calls.length - 1 + ][1].setState; + + act(() => { + stateFn({ + indexPatternId: '1', + columns: {}, + columnOrder: [], + incompleteColumns: { newId: { operationType: 'count' } }, + }); + }); + expect(updateAll).not.toHaveBeenCalled(); + + act(() => { + stateFn( + { + indexPatternId: '1', + columns: {}, + columnOrder: [], + }, + true + ); + }); + expect(updateAll).toHaveBeenCalled(); + }); + it('should close the DimensionContainer when the active visualization changes', () => { /** * The ID generation system for new dimensions has been messy before, so @@ -323,6 +386,47 @@ describe('LayerPanel', () => { component.update(); expect(component.find('EuiFlyoutHeader').exists()).toBe(false); }); + + it('should only update the state on close when needed', () => { + const updateDatasource = jest.fn(); + mockVisualization.getConfiguration.mockReturnValue({ + groups: [ + { + groupLabel: 'A', + groupId: 'a', + accessors: [{ columnId: 'a' }], + filterOperations: () => true, + supportsMoreColumns: false, + dataTestSubj: 'lnsGroup', + }, + ], + }); + + const component = mountWithIntl( + + ); + + // Close without a state update + mockDatasource.updateStateOnCloseDimension = jest.fn(); + component.find('[data-test-subj="lnsLayerPanel-dimensionLink"]').first().simulate('click'); + act(() => { + (component.find('DimensionContainer').first().prop('handleClose') as () => void)(); + }); + component.update(); + expect(mockDatasource.updateStateOnCloseDimension).toHaveBeenCalled(); + expect(updateDatasource).not.toHaveBeenCalled(); + + // Close with a state update + mockDatasource.updateStateOnCloseDimension = jest.fn().mockReturnValue({ newState: true }); + + component.find('[data-test-subj="lnsLayerPanel-dimensionLink"]').first().simulate('click'); + act(() => { + (component.find('DimensionContainer').first().prop('handleClose') as () => void)(); + }); + component.update(); + expect(mockDatasource.updateStateOnCloseDimension).toHaveBeenCalled(); + expect(updateDatasource).toHaveBeenCalledWith('ds1', { newState: true }); + }); }); // This test is more like an integration test, since the layer panel owns all diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx index f5b31fb8811672..5a068e711ff5ee 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx @@ -29,6 +29,12 @@ import { DimensionContainer } from './dimension_container'; import { ColorIndicator } from './color_indicator'; import { PaletteIndicator } from './palette_indicator'; +const triggerLinkA11yText = (label: string) => + i18n.translate('xpack.lens.configure.editConfig', { + defaultMessage: 'Click to edit configuration for {label} or drag to move', + values: { label }, + }); + const initialActiveDimensionState = { isNew: false, }; @@ -37,9 +43,9 @@ function isConfiguration( value: unknown ): value is { columnId: string; groupId: string; layerId: string } { return ( - value && + Boolean(value) && typeof value === 'object' && - 'columnId' in value && + 'columnId' in value! && 'groupId' in value && 'layerId' in value ); @@ -58,7 +64,7 @@ function isSameConfiguration(config1: unknown, config2: unknown) { export function LayerPanel( props: Exclude & { layerId: string; - dataTestSubj: string; + index: number; isOnlyLayer: boolean; updateVisualization: StateSetter; updateDatasource: (datasourceId: string, newState: unknown) => void; @@ -75,7 +81,7 @@ export function LayerPanel( initialActiveDimensionState ); - const { framePublicAPI, layerId, isOnlyLayer, onRemoveLayer, dataTestSubj } = props; + const { framePublicAPI, layerId, isOnlyLayer, onRemoveLayer, index } = props; const datasourcePublicAPI = framePublicAPI.datasourceLayers[layerId]; useEffect(() => { @@ -125,7 +131,11 @@ export function LayerPanel( const columnLabelMap = layerDatasource.uniqueLabels(layerDatasourceConfigProps.state); return ( - + - {groups.map((group, index) => { + {groups.map((group, groupIndex) => { const newId = generateId(); const isMissing = !isEmptyLayer && group.required && group.accessors.length === 0; - const triggerLinkA11yText = i18n.translate('xpack.lens.configure.editConfig', { - defaultMessage: 'Click to edit configuration or drag to move', - }); - return ( {group.groupLabel}} labelType="legend" - key={index} + key={groupIndex} isInvalid={isMissing} error={ isMissing ? ( @@ -241,8 +247,7 @@ export function LayerPanel( const isFromTheSameGroup = isDraggedOperation(dragging) && dragging.groupId === group.groupId && - dragging.columnId !== accessor && - dragging.groupId !== 'y'; // TODO: remove this line when https://github.com/elastic/elastic-charts/issues/868 is fixed + dragging.columnId !== accessor; const isDroppable = isDraggedOperation(dragging) ? dragType === 'reorder' @@ -316,6 +321,7 @@ export function LayerPanel(
    { if (activeId) { setActiveDimension(initialActiveDimensionState); @@ -327,12 +333,12 @@ export function LayerPanel( }); } }} - aria-label={triggerLinkA11yText} - title={triggerLinkA11yText} + aria-label={triggerLinkA11yText(columnLabelMap[accessor])} + title={triggerLinkA11yText(columnLabelMap[accessor])} > { trackUiEvent('indexpattern_dimension_removed'); @@ -435,6 +443,13 @@ export function LayerPanel( contentProps={{ className: 'lnsLayerPanel__triggerTextContent', }} + aria-label={i18n.translate( + 'xpack.lens.indexPattern.removeColumnAriaLabel', + { + defaultMessage: 'Drop a field or click to add to {groupLabel}', + values: { groupLabel: group.groupLabel }, + } + )} data-test-subj="lns-empty-dimension" onClick={() => { if (activeId) { @@ -464,29 +479,45 @@ export function LayerPanel( setActiveDimension(initialActiveDimensionState)} + handleClose={() => { + if (layerDatasource.updateStateOnCloseDimension) { + const newState = layerDatasource.updateStateOnCloseDimension({ + state: layerDatasourceState, + layerId, + columnId: activeId!, + }); + if (newState) { + props.updateDatasource(datasourceId, newState); + } + } + setActiveDimension(initialActiveDimensionState); + }} panel={ <> {activeGroup && activeId && ( { - props.updateAll( - datasourceId, - newState, - activeVisualization.setDimension({ - layerId, - groupId: activeGroup.groupId, - columnId: activeId, - prevState: props.visualizationState, - }) - ); + setState: (newState: unknown, shouldUpdateVisualization?: boolean) => { + if (shouldUpdateVisualization) { + props.updateAll( + datasourceId, + newState, + activeVisualization.setDimension({ + layerId, + groupId: activeGroup.groupId, + columnId: activeId, + prevState: props.visualizationState, + }) + ); + } else { + props.updateDatasource(datasourceId, newState); + } setActiveDimension({ ...activeDimension, isNew: false, @@ -525,6 +556,17 @@ export function LayerPanel( iconType="trash" color="danger" data-test-subj="lnsLayerRemove" + aria-label={ + isOnlyLayer + ? i18n.translate('xpack.lens.resetLayerAriaLabel', { + defaultMessage: 'Reset layer {index}', + values: { index: index + 1 }, + }) + : i18n.translate('xpack.lens.deleteLayerAriaLabel', { + defaultMessage: `Delete layer {index}`, + values: { index: index + 1 }, + }) + } onClick={() => { // If we don't blur the remove / clear button, it remains focused // which is a strange UX in this case. e.target.blur doesn't work @@ -544,7 +586,7 @@ export function LayerPanel( defaultMessage: 'Reset layer', }) : i18n.translate('xpack.lens.deleteLayer', { - defaultMessage: 'Delete layer', + defaultMessage: `Delete layer`, })} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_settings.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_settings.tsx index abbd7e0838bed0..bc537e5a7d689f 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_settings.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_settings.tsx @@ -26,10 +26,21 @@ export function LayerSettings({ return null; } - const a11yText = i18n.translate('xpack.lens.editLayerSettings', { - defaultMessage: 'Edit layer settings', - }); + const a11yText = (chartType?: string) => { + if (chartType) { + return i18n.translate('xpack.lens.editLayerSettingsChartType', { + defaultMessage: 'Edit layer settings, {chartType}', + values: { + chartType, + }, + }); + } + return i18n.translate('xpack.lens.editLayerSettings', { + defaultMessage: 'Edit layer settings', + }); + }; + const contextMenuIcon = activeVisualization.getLayerContextMenuIcon?.(layerConfigProps); return ( setIsOpen(!isOpen)} data-test-subj="lns_layer_settings" /> diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx index 53d94f24d616ca..7402a712793faa 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx @@ -1143,7 +1143,7 @@ describe('editor_frame', () => { .find(EuiPanel) .map((el) => el.parents(EuiToolTip).prop('content')) ).toEqual([ - 'Current', + 'Current visualization', 'Suggestion1', 'Suggestion2', 'Suggestion3', diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx index 935d65bfb6c08b..fea9723aa700d4 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.tsx @@ -244,6 +244,7 @@ export function EditorFrame(props: EditorFrameProps) { activeVisualization, state.datasourceStates, state.visualization, + state.activeData, props.query, props.dateRange, props.filters, diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.scss index ac52190dc7b0d6..3599254a285b77 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.scss @@ -12,15 +12,18 @@ } .lnsFrameLayout__pageContent { - display: flex; overflow: hidden; flex-grow: 1; + flex-direction: row; } .lnsFrameLayout__pageBody { @include euiScrollBar; min-width: $lnsPanelMinWidth + $euiSizeXL; overflow: hidden auto; + display: flex; + flex-direction: column; + flex: 1 1 100%; // Leave out bottom padding so the suggestions scrollbar stays flush to window edge // Leave out left padding so the left sidebar's focus states are visible outside of content bounds // This also means needing to add same amount of margin to page content and suggestion items diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.tsx index 6a0b2c33011190..8e19ceb898b551 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/frame_layout.tsx @@ -7,7 +7,8 @@ import './frame_layout.scss'; import React from 'react'; -import { EuiPage, EuiPageSideBar, EuiPageBody } from '@elastic/eui'; +import { EuiPage, EuiPageBody, EuiScreenReaderOnly } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; export interface FrameLayoutProps { dataPanel: React.ReactNode; @@ -19,16 +20,46 @@ export interface FrameLayoutProps { export function FrameLayout(props: FrameLayoutProps) { return ( -
    - {props.dataPanel} - + +
    + +

    + {i18n.translate('xpack.lens.section.dataPanelLabel', { + defaultMessage: 'Data panel', + })} +

    +
    + {props.dataPanel} +
    +
    + +

    + {i18n.translate('xpack.lens.section.workspaceLabel', { + defaultMessage: 'Visualization workspace', + })} +

    +
    {props.workspacePanel} {props.suggestionsPanel} - - +
    +
    + +

    + {i18n.translate('xpack.lens.section.configPanelLabel', { + defaultMessage: 'Config panel', + })} +

    +
    {props.configPanel} - -
    +
    + ); } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts index 4cb523f128a8ce..eec3f68ced5fcd 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/save.ts @@ -6,6 +6,7 @@ import _ from 'lodash'; import { SavedObjectReference } from 'kibana/public'; +import { Datatable } from 'src/plugins/expressions'; import { EditorFrameState } from './state_management'; import { Document } from '../../persistence/saved_object_store'; import { Datasource, Visualization, FramePublicAPI } from '../../types'; @@ -28,6 +29,7 @@ export function getSavedObjectFormat({ doc: Document; filterableIndexPatterns: string[]; isSaveable: boolean; + activeData: Record | undefined; } { const datasourceStates: Record = {}; const references: SavedObjectReference[] = []; @@ -74,5 +76,6 @@ export function getSavedObjectFormat({ }, filterableIndexPatterns: uniqueFilterableIndexPatternIds, isSaveable: expression !== null, + activeData: state.activeData, }; } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts index 0c96fc45de1284..9c5eafc300abc0 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts @@ -110,21 +110,21 @@ export const validateDatasourceAndVisualization = ( longMessage: string; }> | undefined => { - const layersGroups = - currentVisualizationState && - currentVisualization - ?.getLayerIds(currentVisualizationState) - .reduce>((memo, layerId) => { - const groups = currentVisualization?.getConfiguration({ - frame: frameAPI, - layerId, - state: currentVisualizationState, - }).groups; - if (groups) { - memo[layerId] = groups; - } - return memo; - }, {}); + const layersGroups = currentVisualizationState + ? currentVisualization + ?.getLayerIds(currentVisualizationState) + .reduce>((memo, layerId) => { + const groups = currentVisualization?.getConfiguration({ + frame: frameAPI, + layerId, + state: currentVisualizationState, + }).groups; + if (groups) { + memo[layerId] = groups; + } + return memo; + }, {}) + : undefined; const datasourceValidationErrors = currentDatasourceState ? currentDataSource?.getErrorMessages(currentDatasourceState, layersGroups) diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.ts index e0101493b27aab..55a4cb567fda1d 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_management.ts @@ -148,7 +148,7 @@ export const reducer = (state: EditorFrameState, action: Action): EditorFrameSta case 'UPDATE_ACTIVE_DATA': return { ...state, - activeData: action.tables, + activeData: { ...action.tables }, }; case 'UPDATE_LAYER': return { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss index 007d833e97e9d0..b3e6f68b0a68c8 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.scss @@ -16,6 +16,7 @@ // Padding / negative margins to make room for overflow shadow padding-left: $euiSizeXS; margin-left: -$euiSizeXS; + padding-bottom: $euiSizeXS; } .lnsSuggestionPanel__button { @@ -27,13 +28,31 @@ margin-left: $euiSizeXS / 2; margin-bottom: $euiSizeXS / 2; + &:focus { + @include euiFocusRing; + transform: none !important; // sass-lint:disable-line no-important + } + .lnsSuggestionPanel__expressionRenderer { position: static; // Let the progress indicator position itself against the button } } .lnsSuggestionPanel__button-isSelected { - @include euiFocusRing; + background-color: $euiColorLightestShade !important; // sass-lint:disable-line no-important + border-color: $euiColorMediumShade; + + &:not(:focus) { + box-shadow: none !important; // sass-lint:disable-line no-important + } + + &:focus { + @include euiFocusRing; + } + + &:hover { + transform: none !important; // sass-lint:disable-line no-important + } } .lnsSuggestionPanel__suggestionIcon { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx index 382178a14793bf..9a1d7b23fa3dd3 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.test.tsx @@ -98,7 +98,7 @@ describe('suggestion_panel', () => { .find('[data-test-subj="lnsSuggestion"]') .find(EuiPanel) .map((el) => el.parents(EuiToolTip).prop('content')) - ).toEqual(['Current', 'Suggestion1', 'Suggestion2']); + ).toEqual(['Current visualization', 'Suggestion1', 'Suggestion2']); }); describe('uncommitted suggestions', () => { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx index 913b3966225181..e42d4daffbb66d 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/suggestion_panel.tsx @@ -136,6 +136,8 @@ const SuggestionPreview = ({ paddingSize="none" data-test-subj="lnsSuggestion" onClick={onSelect} + aria-current={!!selected} + aria-label={preview.title} > {preview.expression || preview.error ? ( { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + if (!children) { + return null; + } + + const onButtonClick = () => setIsPopoverOpen((isOpen) => !isOpen); + const closePopover = () => setIsPopoverOpen(false); + const warningsCount = React.Children.count(children); + return ( + + {i18n.translate('xpack.lens.chartWarnings.number', { + defaultMessage: `{warningsCount} {warningsCount, plural, one {warning} other {warnings}}`, + values: { + warningsCount, + }, + })} + + } + isOpen={isPopoverOpen} + closePopover={closePopover} + > +
      + {React.Children.map(children, (child, index) => ( +
    • + {child} +
    • + ))} +
    +
    + ); +}; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx index 95aeedbd857cad..6c2c01d944cd92 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx @@ -161,7 +161,7 @@ export function WorkspacePanel({ const expression = useMemo( () => { - if (!configurationValidationError) { + if (!configurationValidationError || configurationValidationError.length === 0) { try { return buildExpression({ visualization: activeVisualization, diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx index 33ddc23312a966..97a842f9e0243a 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel_wrapper.tsx @@ -19,6 +19,7 @@ import { Datasource, FramePublicAPI, Visualization } from '../../../types'; import { NativeRenderer } from '../../../native_renderer'; import { Action } from '../state_management'; import { ChartSwitch } from './chart_switch'; +import { WarningsPopover } from './warnings_popover'; export interface WorkspacePanelWrapperProps { children: React.ReactNode | React.ReactNode[]; @@ -64,47 +65,68 @@ export function WorkspacePanelWrapper({ }, [dispatch, activeVisualization] ); + const warningMessages = + activeVisualization?.getWarningMessages && + activeVisualization.getWarningMessages(visualizationState, framePublicAPI); return ( <>
    - + + + + + {activeVisualization && activeVisualization.renderToolbar && ( + + + + )} + + + + {warningMessages && warningMessages.length ? ( + {warningMessages} + ) : null} - {activeVisualization && activeVisualization.renderToolbar && ( - - - - )}
    -

    +

    {title || - i18n.translate('xpack.lens.chartTitle.unsaved', { defaultMessage: 'Unsaved' })} + i18n.translate('xpack.lens.chartTitle.unsaved', { + defaultMessage: 'Unsaved visualization', + })}

    diff --git a/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.test.tsx index 9f9d7fef9c7b4f..3a3258a79c59f8 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.test.tsx @@ -262,6 +262,45 @@ describe('embeddable', () => { expect(expressionRenderer.mock.calls[0][0].searchSessionId).toBe(input.searchSessionId); }); + it('should pass render mode to expression', async () => { + const timeRange: TimeRange = { from: 'now-15d', to: 'now' }; + const query: Query = { language: 'kquery', query: '' }; + const filters: Filter[] = [{ meta: { alias: 'test', negate: false, disabled: false } }]; + + const input = { + savedObjectId: '123', + timeRange, + query, + filters, + renderMode: 'noInteractivity', + } as LensEmbeddableInput; + + const embeddable = new Embeddable( + { + timefilter: dataPluginMock.createSetupContract().query.timefilter.timefilter, + attributeService, + expressionRenderer, + basePath, + indexPatternService: {} as IndexPatternsContract, + editable: true, + getTrigger, + documentToExpression: () => + Promise.resolve({ + type: 'expression', + chain: [ + { type: 'function', function: 'my', arguments: {} }, + { type: 'function', function: 'expression', arguments: {} }, + ], + }), + }, + input + ); + await embeddable.initializeSavedVis(input); + embeddable.render(mountpoint); + + expect(expressionRenderer.mock.calls[0][0].renderMode).toEqual('noInteractivity'); + }); + it('should merge external context with query and filters of the saved object', async () => { const timeRange: TimeRange = { from: 'now-15d', to: 'now' }; const query: Query = { language: 'kquery', query: 'external filter' }; diff --git a/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.tsx index 8139631daa971a..56d471be63d3e2 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/embeddable/embeddable.tsx @@ -20,6 +20,7 @@ import { PaletteOutput } from 'src/plugins/charts/public'; import { Subscription } from 'rxjs'; import { toExpression, Ast } from '@kbn/interpreter/common'; +import { RenderMode } from 'src/plugins/expressions'; import { ExpressionRendererEvent, ReactExpressionRendererType, @@ -43,6 +44,7 @@ import { IndexPatternsContract } from '../../../../../../src/plugins/data/public import { getEditPath, DOC_TYPE } from '../../../common'; import { IBasePath } from '../../../../../../src/core/public'; import { LensAttributeService } from '../../lens_attribute_service'; +import { LensInspectorAdapters } from '../types'; export type LensSavedObjectAttributes = Omit; @@ -53,6 +55,7 @@ export type LensByValueInput = { export type LensByReferenceInput = SavedObjectEmbeddableInput & EmbeddableInput; export type LensEmbeddableInput = (LensByValueInput | LensByReferenceInput) & { palette?: PaletteOutput; + renderMode?: RenderMode; }; export interface LensEmbeddableOutput extends EmbeddableOutput { @@ -82,6 +85,7 @@ export class Embeddable private subscription: Subscription; private autoRefreshFetchSubscription: Subscription; private isInitialized = false; + private activeData: LensInspectorAdapters | undefined; private externalSearchContext: { timeRange?: TimeRange; @@ -129,6 +133,10 @@ export class Embeddable } } + public getInspectorAdapters() { + return this.activeData; + } + async initializeSavedVis(input: LensEmbeddableInput) { const attributes: | LensSavedObjectAttributes @@ -173,6 +181,13 @@ export class Embeddable } } + private updateActiveData = ( + data: unknown, + inspectorAdapters?: LensInspectorAdapters | undefined + ) => { + this.activeData = inspectorAdapters; + }; + /** * * @param {HTMLElement} domNode @@ -192,6 +207,8 @@ export class Embeddable variables={input.palette ? { theme: { palette: input.palette } } : {}} searchSessionId={this.input.searchSessionId} handleEvent={this.handleEvent} + onData$={this.updateActiveData} + renderMode={input.renderMode} />, domNode ); diff --git a/x-pack/plugins/lens/public/editor_frame_service/embeddable/expression_wrapper.tsx b/x-pack/plugins/lens/public/editor_frame_service/embeddable/expression_wrapper.tsx index 4a3ba971381fb3..46454208983142 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/embeddable/expression_wrapper.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/embeddable/expression_wrapper.tsx @@ -13,7 +13,9 @@ import { ReactExpressionRendererType, } from 'src/plugins/expressions/public'; import { ExecutionContextSearch } from 'src/plugins/data/public'; +import { RenderMode } from 'src/plugins/expressions'; import { getOriginalRequestErrorMessage } from '../error_helper'; +import { LensInspectorAdapters } from '../types'; export interface ExpressionWrapperProps { ExpressionRenderer: ReactExpressionRendererType; @@ -22,6 +24,8 @@ export interface ExpressionWrapperProps { searchContext: ExecutionContextSearch; searchSessionId?: string; handleEvent: (event: ExpressionRendererEvent) => void; + onData$: (data: unknown, inspectorAdapters?: LensInspectorAdapters | undefined) => void; + renderMode?: RenderMode; } export function ExpressionWrapper({ @@ -31,6 +35,8 @@ export function ExpressionWrapper({ variables, handleEvent, searchSessionId, + onData$, + renderMode, }: ExpressionWrapperProps) { return ( @@ -57,6 +63,8 @@ export function ExpressionWrapper({ expression={expression} searchContext={searchContext} searchSessionId={searchSessionId} + onData$={onData$} + renderMode={renderMode} renderError={(errorMessage, error) => (
    diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx index 3c9e19d30d38fc..25cb34d19beb8d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx @@ -6,8 +6,7 @@ import { i18n } from '@kbn/i18n'; import React, { useState } from 'react'; -import { EuiPopover, EuiPopoverTitle, EuiSelectable } from '@elastic/eui'; -import { EuiSelectableProps } from '@elastic/eui/src/components/selectable/selectable'; +import { EuiPopover, EuiPopoverTitle, EuiSelectable, EuiSelectableProps } from '@elastic/eui'; import { IndexPatternRef } from './types'; import { trackUiEvent } from '../lens_ui_telemetry'; import { ToolbarButtonProps, ToolbarButton } from '../shared_components'; @@ -63,7 +62,12 @@ export function ChangeIndexPattern({ defaultMessage: 'Change index pattern', })} - {...selectableProps} searchable singleSelection="always" diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx index ac82caf9d52273..3d55494fd260c4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.test.tsx @@ -718,6 +718,25 @@ describe('IndexPattern Data Panel', () => { ]); }); + it('should announce filter in live region', () => { + const wrapper = mountWithIntl(); + act(() => { + wrapper.find('[data-test-subj="lnsIndexPatternFieldSearch"]').prop('onChange')!({ + target: { value: 'me' }, + } as ChangeEvent); + }); + + wrapper + .find('[data-test-subj="lnsIndexPatternEmptyFields"]') + .find('button') + .first() + .simulate('click'); + + expect(wrapper.find('[aria-live="polite"]').text()).toEqual( + '1 available field. 1 empty field. 0 meta fields.' + ); + }); + it('should filter down by type', () => { const wrapper = mountWithIntl(); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx index f2c7d7fc20926f..5121714050c680 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/datapanel.tsx @@ -18,10 +18,12 @@ import { EuiSpacer, EuiFilterGroup, EuiFilterButton, + EuiScreenReaderOnly, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { DataPublicPluginStart, EsQueryConfig, Query, Filter } from 'src/plugins/data/public'; +import { htmlIdGenerator } from '@elastic/eui'; import { DatasourceDataPanelProps, DataType, StateSetter } from '../types'; import { ChildDragDropProvider, DragContextState } from '../drag_drop'; import { @@ -222,6 +224,9 @@ const fieldFiltersLabel = i18n.translate('xpack.lens.indexPatterns.fieldFiltersL defaultMessage: 'Field filters', }); +const htmlId = htmlIdGenerator('datapanel'); +const fieldSearchDescriptionId = htmlId(); + export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ currentIndexPatternId, indexPatternRefs, @@ -489,6 +494,7 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ aria-label={i18n.translate('xpack.lens.indexPatterns.filterByNameAriaLabel', { defaultMessage: 'Search fields', })} + aria-describedby={fieldSearchDescriptionId} /> @@ -550,6 +556,20 @@ export const InnerIndexPatternDataPanel = function InnerIndexPatternDataPanel({ + +
    + {i18n.translate('xpack.lens.indexPatterns.fieldSearchLiveRegion', { + defaultMessage: + '{availableFields} available {availableFields, plural, one {field} other {fields}}. {emptyFields} empty {emptyFields, plural, one {field} other {fields}}. {metaFields} meta {metaFields, plural, one {field} other {fields}}.', + values: { + availableFields: fieldGroups.AvailableFields.fields.length, + // empty fields can be undefined if there is no existence information to be fetched + emptyFields: fieldGroups.EmptyFields?.fields.length || 0, + metaFields: fieldGroups.MetaFields.fields.length, + }, + })} +
    +
    diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.scss b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.scss index 096047da681b91..6bd6808f17b35f 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.scss +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.scss @@ -15,6 +15,10 @@ column-gap: $euiSizeXL; } +.lnsIndexPatternDimensionEditor__operation .euiListGroupItem__label { + width: 100%; +} + .lnsIndexPatternDimensionEditor__operation > button { padding-top: 0; padding-bottom: 0; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx index e5c05a1cf8c7a9..df3b769acf8504 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_editor.tsx @@ -6,7 +6,7 @@ import './dimension_editor.scss'; import _ from 'lodash'; -import React, { useState, useMemo, useEffect } from 'react'; +import React, { useState, useMemo, useEffect, useRef } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiListGroup, @@ -15,10 +15,11 @@ import { EuiSpacer, EuiListGroupItemProps, EuiFormLabel, + EuiToolTip, } from '@elastic/eui'; import { IndexPatternDimensionEditorProps } from './dimension_panel'; import { OperationSupportMatrix } from './operation_support'; -import { IndexPatternColumn, OperationType } from '../indexpattern'; +import { IndexPatternColumn } from '../indexpattern'; import { operationDefinitionMap, getOperationDisplay, @@ -26,6 +27,8 @@ import { replaceColumn, deleteColumn, updateColumnParam, + resetIncomplete, + FieldBasedIndexPatternColumn, } from '../operations'; import { mergeLayer } from '../state_helpers'; import { FieldSelect } from './field_select'; @@ -34,6 +37,7 @@ import { BucketNestingEditor } from './bucket_nesting_editor'; import { IndexPattern, IndexPatternLayer } from '../types'; import { trackUiEvent } from '../../lens_ui_telemetry'; import { FormatSelector } from './format_selector'; +import { TimeScaling } from './time_scaling'; const operationPanels = getOperationDisplay(); @@ -43,14 +47,30 @@ export interface DimensionEditorProps extends IndexPatternDimensionEditorProps { currentIndexPattern: IndexPattern; } +/** + * This component shows a debounced input for the label of a dimension. It will update on root state changes + * if no debounced changes are in flight because the user is currently typing into the input. + */ const LabelInput = ({ value, onChange }: { value: string; onChange: (value: string) => void }) => { const [inputValue, setInputValue] = useState(value); + const unflushedChanges = useRef(false); + + const onChangeDebounced = useMemo(() => { + const callback = _.debounce((val: string) => { + onChange(val); + unflushedChanges.current = false; + }, 256); + return (val: string) => { + unflushedChanges.current = true; + callback(val); + }; + }, [onChange]); useEffect(() => { - setInputValue(value); - }, [value, setInputValue]); - - const onChangeDebounced = useMemo(() => _.debounce(onChange, 256), [onChange]); + if (!unflushedChanges.current && value !== inputValue) { + setInputValue(value); + } + }, [value, inputValue]); const handleInputChange = (e: React.ChangeEvent) => { const val = String(e.target.value); @@ -89,14 +109,18 @@ export function DimensionEditor(props: DimensionEditorProps) { hideGrouping, } = props; const { fieldByOperation, operationWithoutField } = operationSupportMatrix; - const [ - incompatibleSelectedOperationType, - setInvalidOperationType, - ] = useState(null); + + const setStateWrapper = (layer: IndexPatternLayer) => { + setState(mergeLayer({ state, layerId, newLayer: layer }), Boolean(layer.columns[columnId])); + }; const selectedOperationDefinition = selectedColumn && operationDefinitionMap[selectedColumn.operationType]; + const incompleteInfo = (state.layers[layerId].incompleteColumns ?? {})[columnId]; + const incompleteOperation = incompleteInfo?.operationType; + const incompleteField = incompleteInfo?.sourceField ?? null; + const ParamEditor = selectedOperationDefinition?.paramEditor; const possibleOperations = useMemo(() => { @@ -121,26 +145,23 @@ export function DimensionEditor(props: DimensionEditorProps) { hasField(selectedColumn) && definition.input === 'field' && fieldByOperation[operationType]?.has(selectedColumn.sourceField)) || - (selectedColumn && !hasField(selectedColumn) && definition.input !== 'field'), + (selectedColumn && !hasField(selectedColumn) && definition.input === 'none'), + disabledStatus: + definition.getDisabledStatus && + definition.getDisabledStatus(state.indexPatterns[state.currentIndexPatternId]), }; }); - const selectedColumnSourceField = - selectedColumn && 'sourceField' in selectedColumn ? selectedColumn.sourceField : undefined; - - const currentFieldIsInvalid = useMemo( - () => - fieldIsInvalid(selectedColumnSourceField, selectedColumn?.operationType, currentIndexPattern), - [selectedColumnSourceField, selectedColumn?.operationType, currentIndexPattern] - ); + const currentFieldIsInvalid = useMemo(() => fieldIsInvalid(selectedColumn, currentIndexPattern), [ + selectedColumn, + currentIndexPattern, + ]); const sideNavItems: EuiListGroupItemProps[] = operationsWithCompatibility.map( - ({ operationType, compatibleWithCurrentField }) => { + ({ operationType, compatibleWithCurrentField, disabledStatus }) => { const isActive = Boolean( - incompatibleSelectedOperationType === operationType || - (!incompatibleSelectedOperationType && - selectedColumn && - selectedColumn.operationType === operationType) + incompleteOperation === operationType || + (!incompleteOperation && selectedColumn && selectedColumn.operationType === operationType) ); let color: EuiListGroupItemProps['color'] = 'primary'; @@ -151,7 +172,13 @@ export function DimensionEditor(props: DimensionEditorProps) { } let label: EuiListGroupItemProps['label'] = operationPanels[operationType].displayName; - if (isActive) { + if (disabledStatus) { + label = ( + + {operationPanels[operationType].displayName} + + ); + } else if (isActive) { label = {operationPanels[operationType].displayName}; } @@ -161,15 +188,18 @@ export function DimensionEditor(props: DimensionEditorProps) { color, isActive, size: 's', + isDisabled: !!disabledStatus, className: 'lnsIndexPatternDimensionEditor__operation', 'data-test-subj': `lns-indexPatternDimension-${operationType}${ compatibleWithCurrentField ? '' : ' incompatible' }`, onClick() { if (operationDefinitionMap[operationType].input === 'none') { - // Clear invalid state because we are creating a valid column - setInvalidOperationType(null); if (selectedColumn?.operationType === operationType) { + // Clear invalid state because we are reseting to a valid column + if (incompleteInfo) { + setStateWrapper(resetIncomplete(state.layers[layerId], columnId)); + } return; } const newLayer = insertOrReplaceColumn({ @@ -178,36 +208,41 @@ export function DimensionEditor(props: DimensionEditorProps) { columnId, op: operationType, }); - setState(mergeLayer({ state, layerId, newLayer })); + setStateWrapper(newLayer); trackUiEvent(`indexpattern_dimension_operation_${operationType}`); return; } else if (!selectedColumn || !compatibleWithCurrentField) { const possibleFields = fieldByOperation[operationType] || new Set(); if (possibleFields.size === 1) { - setState( - mergeLayer({ - state, - layerId, - newLayer: insertOrReplaceColumn({ - layer: props.state.layers[props.layerId], - indexPattern: currentIndexPattern, - columnId, - op: operationType, - field: currentIndexPattern.getFieldByName(possibleFields.values().next().value), - }), + setStateWrapper( + insertOrReplaceColumn({ + layer: props.state.layers[props.layerId], + indexPattern: currentIndexPattern, + columnId, + op: operationType, + field: currentIndexPattern.getFieldByName(possibleFields.values().next().value), }) ); } else { - setInvalidOperationType(operationType); + setStateWrapper( + insertOrReplaceColumn({ + layer: props.state.layers[props.layerId], + indexPattern: currentIndexPattern, + columnId, + op: operationType, + field: undefined, + }) + ); } trackUiEvent(`indexpattern_dimension_operation_${operationType}`); return; } - setInvalidOperationType(null); - if (selectedColumn.operationType === operationType) { + if (incompleteInfo) { + setStateWrapper(resetIncomplete(state.layers[layerId], columnId)); + } return; } @@ -220,8 +255,7 @@ export function DimensionEditor(props: DimensionEditorProps) { ? currentIndexPattern.getFieldByName(selectedColumn.sourceField) : undefined, }); - - setState(mergeLayer({ state, layerId, newLayer })); + setStateWrapper(newLayer); }, }; } @@ -251,18 +285,17 @@ export function DimensionEditor(props: DimensionEditorProps) {
    {!selectedColumn || selectedOperationDefinition?.input === 'field' || - (incompatibleSelectedOperationType && - operationDefinitionMap[incompatibleSelectedOperationType].input === 'field') ? ( + (incompleteOperation && operationDefinitionMap[incompleteOperation].input === 'field') ? ( { - setState( - mergeLayer({ - state, - layerId, - newLayer: deleteColumn({ layer: state.layers[layerId], columnId }), - }) - ); + setStateWrapper(deleteColumn({ layer: state.layers[layerId], columnId })); }} onChoose={(choice) => { - let newLayer: IndexPatternLayer; - if ( - !incompatibleSelectedOperationType && - selectedColumn && - 'field' in choice && - choice.operationType === selectedColumn.operationType - ) { - // Replaces just the field - newLayer = replaceColumn({ + setStateWrapper( + insertOrReplaceColumn({ layer: state.layers[layerId], columnId, indexPattern: currentIndexPattern, op: choice.operationType, - field: currentIndexPattern.getFieldByName(choice.field)!, - }); - } else { - // Finds a new operation - const compatibleOperations = - ('field' in choice && operationSupportMatrix.operationByField[choice.field]) || - new Set(); - let operation; - if (compatibleOperations.size > 0) { - operation = - incompatibleSelectedOperationType && - compatibleOperations.has(incompatibleSelectedOperationType) - ? incompatibleSelectedOperationType - : compatibleOperations.values().next().value; - } else if ('field' in choice) { - operation = choice.operationType; - } - newLayer = insertOrReplaceColumn({ - layer: state.layers[layerId], - columnId, field: currentIndexPattern.getFieldByName(choice.field), - indexPattern: currentIndexPattern, - op: operation as OperationType, - }); - } - - setState(mergeLayer({ state, layerId, newLayer })); - setInvalidOperationType(null); + }) + ); }} /> ) : null} - {!currentFieldIsInvalid && - !incompatibleSelectedOperationType && - selectedColumn && - ParamEditor && ( - <> - - - )} + {!currentFieldIsInvalid && !incompleteInfo && selectedColumn && ( + + )} + + {!currentFieldIsInvalid && !incompleteInfo && selectedColumn && ParamEditor && ( + <> + + + )}
    {!currentFieldIsInvalid && (
    - {!incompatibleSelectedOperationType && selectedColumn && ( + {!incompleteInfo && selectedColumn && ( { @@ -383,7 +390,7 @@ export function DimensionEditor(props: DimensionEditorProps) { /> )} - {!incompatibleSelectedOperationType && !hideGrouping && ( + {!incompleteInfo && !hideGrouping && ( { let defaultProps: IndexPatternDimensionEditorProps; function getStateWithColumns(columns: Record) { - return { ...state, layers: { first: { ...state.layers.first, columns } } }; + return { + ...state, + layers: { first: { ...state.layers.first, columns, columnOrder: Object.keys(columns) } }, + }; } beforeEach(() => { @@ -135,6 +142,7 @@ describe('IndexPatternDimensionEditorPanel', () => { columns: { col1: { label: 'Date histogram of timestamp', + customLabel: true, dataType: 'date', isBucketed: true, @@ -146,11 +154,16 @@ describe('IndexPatternDimensionEditorPanel', () => { sourceField: 'timestamp', }, }, + incompleteColumns: {}, }, }, }; - setState = jest.fn(); + setState = jest.fn().mockImplementation((newState) => { + if (wrapper instanceof ReactWrapper) { + wrapper.setProps({ state: newState }); + } + }); defaultProps = { state, @@ -354,23 +367,26 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([option]); }); - expect(setState).toHaveBeenCalledWith({ - ...initialState, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - operationType: 'max', - sourceField: 'memory', - params: { format: { id: 'bytes' } }, - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...initialState, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + operationType: 'max', + sourceField: 'memory', + params: { format: { id: 'bytes' } }, + // Other parts of this don't matter for this test + }), + }, }, }, }, - }); + true + ); }); it('should switch operations when selecting a field that requires another operation', () => { @@ -385,22 +401,25 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([option]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - operationType: 'terms', - sourceField: 'source', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + operationType: 'terms', + sourceField: 'source', + // Other parts of this don't matter for this test + }), + }, }, }, }, - }); + true + ); }); it('should keep the field when switching to another operation compatible for this field', () => { @@ -415,23 +434,26 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-min"]').simulate('click'); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - operationType: 'min', - sourceField: 'bytes', - params: { format: { id: 'bytes' } }, - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + operationType: 'min', + sourceField: 'bytes', + params: { format: { id: 'bytes' } }, + // Other parts of this don't matter for this test + }), + }, }, }, }, - }); + true + ); }); it('should not set the state if selecting the currently active operation', () => { @@ -485,20 +507,23 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-min"]').simulate('click'); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - label: 'Minimum of bytes', - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + label: 'Minimum of bytes', + }), + }, }, }, }, - }); + true + ); }); it('should keep the label on operation change if it is custom', () => { @@ -519,25 +544,28 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-min"]').simulate('click'); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - label: 'Custom label', - customLabel: true, - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + label: 'Custom label', + customLabel: true, + }), + }, }, }, }, - }); + true + ); }); describe('transient invalid state', () => { - it('should not set the state if selecting an operation incompatible with the current field', () => { + it('should set the state if selecting an operation incompatible with the current field', () => { wrapper = mount(); act(() => { @@ -546,7 +574,23 @@ describe('IndexPatternDimensionEditorPanel', () => { .simulate('click'); }); - expect(setState).not.toHaveBeenCalled(); + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + }, + incompleteColumns: { + col1: { operationType: 'terms' }, + }, + }, + }, + }, + true + ); }); it('should show error message in invalid state', () => { @@ -559,8 +603,6 @@ describe('IndexPatternDimensionEditorPanel', () => { expect( wrapper.find('[data-test-subj="indexPattern-field-selection-row"]').first().prop('error') ).toBeDefined(); - - expect(setState).not.toHaveBeenCalled(); }); it('should leave error state if a compatible operation is selected', () => { @@ -657,6 +699,20 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper = mount(); wrapper.find('button[data-test-subj="lns-indexPatternDimension-avg"]').simulate('click'); + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + incompleteColumns: { + col2: { operationType: 'avg' }, + }, + }, + }, + }, + false + ); const comboBox = wrapper .find(EuiComboBox) @@ -668,23 +724,26 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([options![1].options![2]]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - sourceField: 'source', - operationType: 'terms', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenLastCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + sourceField: 'source', + operationType: 'terms', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col2', 'col1'], }, - columnOrder: ['col2', 'col1'], }, }, - }); + true + ); }); it('should select the Records field when count is selected', () => { @@ -752,11 +811,9 @@ describe('IndexPatternDimensionEditorPanel', () => { it('should set datasource state if compatible field is selected for operation', () => { wrapper = mount(); - act(() => { - wrapper - .find('button[data-test-subj="lns-indexPatternDimension-terms incompatible"]') - .simulate('click'); - }); + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-terms incompatible"]') + .simulate('click'); const comboBox = wrapper .find(EuiComboBox) @@ -767,21 +824,262 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([option]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: expect.objectContaining({ - sourceField: 'source', - operationType: 'terms', - }), + expect(setState).toHaveBeenLastCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col1: expect.objectContaining({ + sourceField: 'source', + operationType: 'terms', + }), + }, + }, + }, + }, + true + ); + }); + }); + + describe('time scaling', () => { + function getProps(colOverrides: Partial) { + return { + ...defaultProps, + state: getStateWithColumns({ + datecolumn: { + dataType: 'date', + isBucketed: true, + label: '', + operationType: 'date_histogram', + sourceField: 'ts', + params: { + interval: '1d', + }, + }, + col2: { + dataType: 'number', + isBucketed: false, + label: 'Count of records', + operationType: 'count', + sourceField: 'Records', + ...colOverrides, + } as IndexPatternColumn, + }), + columnId: 'col2', + }; + } + it('should not show custom options if time scaling is not available', () => { + wrapper = mount( + + ); + expect(wrapper.find('[data-test-subj="indexPattern-time-scaling"]')).toHaveLength(0); + }); + + it('should show custom options if time scaling is available', () => { + wrapper = mount(); + expect( + wrapper + .find(TimeScaling) + .find('[data-test-subj="indexPattern-time-scaling-popover"]') + .exists() + ).toBe(true); + }); + + it('should show current time scaling if set', () => { + wrapper = mount(); + expect( + wrapper + .find('[data-test-subj="indexPattern-time-scaling-unit"]') + .find(EuiSelect) + .prop('value') + ).toEqual('d'); + }); + + it('should allow to set time scaling initially', () => { + const props = getProps({}); + wrapper = shallow(); + wrapper + .find(DimensionEditor) + .dive() + .find(TimeScaling) + .dive() + .find('[data-test-subj="indexPattern-time-scaling-enable"]') + .prop('onClick')!({} as MouseEvent); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: 's', + label: 'Count of records per second', + }), + }, + }, + }, + }, + true + ); + }); + + it('should carry over time scaling to other operation if possible', () => { + const props = getProps({ + timeScale: 'h', + sourceField: 'bytes', + operationType: 'sum', + label: 'Sum of bytes per hour', + }); + wrapper = mount(); + wrapper + .find('button[data-test-subj="lns-indexPatternDimension-count incompatible"]') + .simulate('click'); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: 'h', + label: 'Count of records per hour', + }), + }, }, }, }, + true + ); + }); + + it('should not carry over time scaling if the other operation does not support it', () => { + const props = getProps({ + timeScale: 'h', + sourceField: 'bytes', + operationType: 'sum', + label: 'Sum of bytes per hour', }); + wrapper = mount(); + wrapper.find('button[data-test-subj="lns-indexPatternDimension-avg"]').simulate('click'); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: undefined, + label: 'Average of bytes', + }), + }, + }, + }, + }, + true + ); + }); + + it('should allow to change time scaling', () => { + const props = getProps({ timeScale: 's', label: 'Count of records per second' }); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-time-scaling-unit"]') + .find(EuiSelect) + .prop('onChange')!(({ + target: { value: 'h' }, + } as unknown) as ChangeEvent); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: 'h', + label: 'Count of records per hour', + }), + }, + }, + }, + }, + true + ); + }); + + it('should not adjust label if it is custom', () => { + const props = getProps({ timeScale: 's', customLabel: true, label: 'My label' }); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-time-scaling-unit"]') + .find(EuiSelect) + .prop('onChange')!(({ + target: { value: 'h' }, + } as unknown) as ChangeEvent); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: 'h', + label: 'My label', + }), + }, + }, + }, + }, + true + ); + }); + + it('should allow to remove time scaling', () => { + const props = getProps({ timeScale: 's', label: 'Count of records per second' }); + wrapper = mount(); + wrapper + .find('[data-test-subj="indexPattern-time-scaling-remove"]') + .find(EuiButtonIcon) + .prop('onClick')!( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + {} as any + ); + expect(props.setState).toHaveBeenCalledWith( + { + ...props.state, + layers: { + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col2: expect.objectContaining({ + timeScale: undefined, + label: 'Count of records', + }), + }, + }, + }, + }, + true + ); }); }); @@ -819,6 +1117,23 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-avg"]').simulate('click'); + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + incompleteColumns: { + col2: { + operationType: 'avg', + }, + }, + }, + }, + }, + false + ); + const comboBox = wrapper .find(EuiComboBox) .filter('[data-test-subj="indexPattern-dimension-field"]'); @@ -828,23 +1143,26 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([options![1].options![0]]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - sourceField: 'bytes', - operationType: 'avg', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + sourceField: 'bytes', + operationType: 'avg', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col1', 'col2'], }, - columnOrder: ['col1', 'col2'], }, }, - }); + true + ); }); it('should select operation directly if only one field is possible', () => { @@ -868,23 +1186,26 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-avg"]').simulate('click'); - expect(setState).toHaveBeenCalledWith({ - ...initialState, - layers: { - first: { - ...initialState.layers.first, - columns: { - ...initialState.layers.first.columns, - col2: expect.objectContaining({ - sourceField: 'bytes', - operationType: 'avg', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...initialState, + layers: { + first: { + ...initialState.layers.first, + columns: { + ...initialState.layers.first.columns, + col2: expect.objectContaining({ + sourceField: 'bytes', + operationType: 'avg', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col1', 'col2'], }, - columnOrder: ['col1', 'col2'], }, }, - }); + true + ); }); it('should select operation directly if only document is possible', () => { @@ -892,22 +1213,25 @@ describe('IndexPatternDimensionEditorPanel', () => { wrapper.find('button[data-test-subj="lns-indexPatternDimension-count"]').simulate('click'); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - operationType: 'count', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + operationType: 'count', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col1', 'col2'], }, - columnOrder: ['col1', 'col2'], }, }, - }); + true + ); }); it('should indicate compatible fields when selecting the operation first', () => { @@ -962,6 +1286,24 @@ describe('IndexPatternDimensionEditorPanel', () => { ); }); + it('should not update when selecting the current field again', () => { + wrapper = mount(); + + const comboBox = wrapper + .find(EuiComboBox) + .filter('[data-test-subj="indexPattern-dimension-field"]'); + + const option = comboBox + .prop('options')![1] + .options!.find(({ label }) => label === 'timestampLabel')!; + + act(() => { + comboBox.prop('onChange')!([option]); + }); + + expect(setState).not.toHaveBeenCalled(); + }); + it('should show all operations that are not filtered out', () => { wrapper = mount( { expect(items.map(({ label }: { label: React.ReactNode }) => label)).toEqual([ 'Average', 'Count', + 'Last value', 'Maximum', 'Median', 'Minimum', 'Sum', 'Unique count', - '\u00a0', ]); }); it('should add a column on selection of a field', () => { + // Prevents field format from being loaded + setState.mockImplementation(() => {}); + wrapper = mount(); const comboBox = wrapper @@ -996,22 +1341,26 @@ describe('IndexPatternDimensionEditorPanel', () => { comboBox.prop('onChange')!([option]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - sourceField: 'bytes', - // Other parts of this don't matter for this test - }), + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + ...state.layers.first, + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + operationType: 'range', + sourceField: 'bytes', + // Other parts of this don't matter for this test + }), + }, + columnOrder: ['col1', 'col2'], }, - columnOrder: ['col1', 'col2'], }, }, - }); + true + ); }); it('should use helper function when changing the function', () => { @@ -1024,7 +1373,7 @@ describe('IndexPatternDimensionEditorPanel', () => { act(() => { wrapper.find('[data-test-subj="lns-indexPatternDimension-min"]').first().prop('onClick')!( - {} as React.MouseEvent<{}, MouseEvent> + {} as MouseEvent ); }); @@ -1047,17 +1396,20 @@ describe('IndexPatternDimensionEditorPanel', () => { .prop('onChange')!([]); }); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - indexPatternId: '1', - columns: {}, - columnOrder: [], - incompleteColumns: {}, + expect(setState).toHaveBeenCalledWith( + { + ...state, + layers: { + first: { + indexPatternId: '1', + columns: {}, + columnOrder: [], + incompleteColumns: {}, + }, }, }, - }); + false + ); }); it('allows custom format', () => { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx index 2444a6a81c2a09..a6c924998f9deb 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/dimension_panel.tsx @@ -12,7 +12,7 @@ import { IStorageWrapper } from 'src/plugins/kibana_utils/public'; import { DatasourceDimensionTriggerProps, DatasourceDimensionEditorProps } from '../../types'; import { DataPublicPluginStart } from '../../../../../../src/plugins/data/public'; import { IndexPatternColumn } from '../indexpattern'; -import { fieldIsInvalid } from '../utils'; +import { isColumnInvalid } from '../utils'; import { IndexPatternPrivateState } from '../types'; import { DimensionEditor } from './dimension_editor'; import { DateRange } from '../../../common'; @@ -45,24 +45,22 @@ export const IndexPatternDimensionTriggerComponent = function IndexPatternDimens ) { const layerId = props.layerId; const layer = props.state.layers[layerId]; - const selectedColumn: IndexPatternColumn | null = layer.columns[props.columnId] || null; const currentIndexPattern = props.state.indexPatterns[layer.indexPatternId]; + const { columnId, uniqueLabel } = props; - const selectedColumnSourceField = - selectedColumn && 'sourceField' in selectedColumn ? selectedColumn.sourceField : undefined; - const currentFieldIsInvalid = useMemo( - () => - fieldIsInvalid(selectedColumnSourceField, selectedColumn?.operationType, currentIndexPattern), - [selectedColumnSourceField, selectedColumn?.operationType, currentIndexPattern] + const currentColumnHasErrors = useMemo( + () => isColumnInvalid(layer, columnId, currentIndexPattern), + [layer, columnId, currentIndexPattern] ); - const { columnId, uniqueLabel } = props; + const selectedColumn: IndexPatternColumn | null = layer.columns[props.columnId] ?? null; + if (!selectedColumn) { return null; } const formattedLabel = wrapOnDot(uniqueLabel); - if (currentFieldIsInvalid) { + if (currentColumnHasErrors) { return ( { columns: { col1: { label: 'Date histogram of timestamp', + customLabel: true, dataType: 'date', isBucketed: true, @@ -117,6 +116,7 @@ describe('IndexPatternDimensionEditorPanel', () => { sourceField: 'timestamp', }, }, + incompleteColumns: {}, }, }, }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx index 9bc3e52822cf47..406a32f62b2c7e 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/field_select.tsx @@ -28,14 +28,14 @@ import { fieldExists } from '../pure_helpers'; export interface FieldChoice { type: 'field'; field: string; - operationType?: OperationType; + operationType: OperationType; } export interface FieldSelectProps extends EuiComboBoxProps<{}> { currentIndexPattern: IndexPattern; - incompatibleSelectedOperationType: OperationType | null; - selectedColumnOperationType?: OperationType; - selectedColumnSourceField?: string; + selectedOperationType?: OperationType; + selectedField?: string; + incompleteOperation?: OperationType; operationSupportMatrix: OperationSupportMatrix; onChoose: (choice: FieldChoice) => void; onDeleteColumn: () => void; @@ -45,9 +45,9 @@ export interface FieldSelectProps extends EuiComboBoxProps<{}> { export function FieldSelect({ currentIndexPattern, - incompatibleSelectedOperationType, - selectedColumnOperationType, - selectedColumnSourceField, + incompleteOperation, + selectedOperationType, + selectedField, operationSupportMatrix, onChoose, onDeleteColumn, @@ -59,14 +59,10 @@ export function FieldSelect({ const memoizedFieldOptions = useMemo(() => { const fields = Object.keys(operationByField).sort(); + const currentOperationType = incompleteOperation ?? selectedOperationType; + function isCompatibleWithCurrentOperation(fieldName: string) { - if (incompatibleSelectedOperationType) { - return operationByField[fieldName]!.has(incompatibleSelectedOperationType); - } - return ( - !selectedColumnOperationType || - operationByField[fieldName]!.has(selectedColumnOperationType) - ); + return !currentOperationType || operationByField[fieldName]!.has(currentOperationType); } const [specialFields, normalFields] = _.partition( @@ -81,20 +77,25 @@ export function FieldSelect({ function fieldNamesToOptions(items: string[]) { return items .filter((field) => currentIndexPattern.getFieldByName(field)?.displayName) - .map((field) => ({ - label: currentIndexPattern.getFieldByName(field)?.displayName, - value: { - type: 'field', - field, - dataType: currentIndexPattern.getFieldByName(field)?.type, - operationType: - selectedColumnOperationType && isCompatibleWithCurrentOperation(field) - ? selectedColumnOperationType - : undefined, - }, - exists: containsData(field), - compatible: isCompatibleWithCurrentOperation(field), - })) + .map((field) => { + return { + label: currentIndexPattern.getFieldByName(field)?.displayName, + value: { + type: 'field', + field, + dataType: currentIndexPattern.getFieldByName(field)?.type, + // Use the operation directly, or choose the first compatible operation. + // All fields are guaranteed to have at least one operation because they + // won't appear in the list otherwise + operationType: + currentOperationType && isCompatibleWithCurrentOperation(field) + ? currentOperationType + : operationByField[field]!.values().next().value, + }, + exists: containsData(field), + compatible: isCompatibleWithCurrentOperation(field), + }; + }) .sort((a, b) => { if (a.compatible && !b.compatible) { return -1; @@ -157,8 +158,8 @@ export function FieldSelect({ metaFieldsOptions, ].filter(Boolean); }, [ - incompatibleSelectedOperationType, - selectedColumnOperationType, + incompleteOperation, + selectedOperationType, currentIndexPattern, operationByField, existingFields, @@ -174,15 +175,15 @@ export function FieldSelect({ defaultMessage: 'Field', })} options={(memoizedFieldOptions as unknown) as EuiComboBoxOptionOption[]} - isInvalid={Boolean(incompatibleSelectedOperationType || fieldIsInvalid)} + isInvalid={Boolean(incompleteOperation || fieldIsInvalid)} selectedOptions={ - ((selectedColumnOperationType && selectedColumnSourceField + ((selectedOperationType && selectedField ? [ { label: fieldIsInvalid - ? selectedColumnSourceField - : currentIndexPattern.getFieldByName(selectedColumnSourceField)?.displayName, - value: { type: 'field', field: selectedColumnSourceField }, + ? selectedField + : currentIndexPattern.getFieldByName(selectedField)?.displayName, + value: { type: 'field', field: selectedField }, }, ] : []) as unknown) as EuiComboBoxOptionOption[] @@ -194,9 +195,12 @@ export function FieldSelect({ return; } - trackUiEvent('indexpattern_dimension_field_changed'); + const choice = (choices[0].value as unknown) as FieldChoice; - onChoose((choices[0].value as unknown) as FieldChoice); + if (choice.field !== selectedField) { + trackUiEvent('indexpattern_dimension_field_changed'); + onChoose(choice); + } }} renderOption={(option, searchValue) => { return ( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/time_scaling.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/time_scaling.tsx new file mode 100644 index 00000000000000..d5a90f72752797 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/time_scaling.tsx @@ -0,0 +1,177 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { EuiToolTip } from '@elastic/eui'; +import { EuiIcon } from '@elastic/eui'; +import { + EuiLink, + EuiFormRow, + EuiSelect, + EuiFlexItem, + EuiFlexGroup, + EuiButtonIcon, + EuiText, + EuiPopover, + EuiButtonEmpty, + EuiSpacer, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; +import { + adjustTimeScaleLabelSuffix, + DEFAULT_TIME_SCALE, + IndexPatternColumn, + operationDefinitionMap, +} from '../operations'; +import { unitSuffixesLong } from '../suffix_formatter'; +import { TimeScaleUnit } from '../time_scale'; +import { IndexPatternLayer } from '../types'; + +export function setTimeScaling( + columnId: string, + layer: IndexPatternLayer, + timeScale: TimeScaleUnit | undefined +) { + const currentColumn = layer.columns[columnId]; + const label = currentColumn.customLabel + ? currentColumn.label + : adjustTimeScaleLabelSuffix(currentColumn.label, currentColumn.timeScale, timeScale); + return { + ...layer, + columns: { + ...layer.columns, + [columnId]: { + ...layer.columns[columnId], + label, + timeScale, + }, + }, + }; +} + +export function TimeScaling({ + selectedColumn, + columnId, + layer, + updateLayer, +}: { + selectedColumn: IndexPatternColumn; + columnId: string; + layer: IndexPatternLayer; + updateLayer: (newLayer: IndexPatternLayer) => void; +}) { + const [popoverOpen, setPopoverOpen] = useState(false); + const hasDateHistogram = layer.columnOrder.some( + (colId) => layer.columns[colId].operationType === 'date_histogram' + ); + const selectedOperation = operationDefinitionMap[selectedColumn.operationType]; + if ( + !selectedOperation.timeScalingMode || + selectedOperation.timeScalingMode === 'disabled' || + !hasDateHistogram + ) { + return null; + } + + if (!selectedColumn.timeScale) { + return ( + + + { + setPopoverOpen(true); + }} + > + {i18n.translate('xpack.lens.indexPattern.timeScale.advancedSettings', { + defaultMessage: 'Add advanced options', + })} + + } + isOpen={popoverOpen} + closePopover={() => { + setPopoverOpen(false); + }} + > + + { + setPopoverOpen(false); + updateLayer(setTimeScaling(columnId, layer, DEFAULT_TIME_SCALE)); + }} + > + {i18n.translate('xpack.lens.indexPattern.timeScale.enableTimeScale', { + defaultMessage: 'Normalize by unit', + })} + + + + + ); + } + + return ( + + + {i18n.translate('xpack.lens.indexPattern.timeScale.label', { + defaultMessage: 'Normalize by unit', + })}{' '} + + + + } + > + + + ({ + value: unit, + text, + }))} + data-test-subj="indexPattern-time-scaling-unit" + value={selectedColumn.timeScale} + onChange={(e) => { + updateLayer(setTimeScaling(columnId, layer, e.target.value as TimeScaleUnit)); + }} + /> + + {selectedOperation.timeScalingMode === 'optional' && ( + + { + updateLayer(setTimeScaling(columnId, layer, undefined)); + }} + iconType="cross" + /> + + )} + + + ); +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx index fa4b5637f11f32..d070a01240b2e8 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_item.tsx @@ -181,49 +181,56 @@ export const InnerFieldItem = function InnerFieldItem(props: FieldItemProps) { /> ); return ( - ('.application') || undefined} - button={ - - - {wrapOnDot(field.displayName)} - - } - fieldInfoIcon={lensInfoIcon} - /> - - } - isOpen={infoIsOpen} - closePopover={() => setOpen(false)} - anchorPosition="rightUp" - panelClassName="lnsFieldItem__fieldPanel" - > - - +
  • + ('.application') || undefined} + button={ + + + {wrapOnDot(field.displayName)} + + } + fieldInfoIcon={lensInfoIcon} + /> + + } + isOpen={infoIsOpen} + closePopover={() => setOpen(false)} + anchorPosition="rightUp" + panelClassName="lnsFieldItem__fieldPanel" + > + + +
  • ); }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx index eb7730677d52ab..16d1ecbf3296b6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/field_list.tsx @@ -14,13 +14,6 @@ import { IndexPatternField } from './types'; import { FieldItemSharedProps, FieldsAccordion } from './fields_accordion'; const PAGINATION_SIZE = 50; -export interface FieldsGroup { - specialFields: IndexPatternField[]; - availableFields: IndexPatternField[]; - emptyFields: IndexPatternField[]; - metaFields: IndexPatternField[]; -} - export type FieldGroups = Record< string, { @@ -132,19 +125,21 @@ export function FieldList({ onScroll={throttle(lazyScroll, 100)} >
    - {Object.entries(fieldGroups) - .filter(([, { showInAccordion }]) => !showInAccordion) - .flatMap(([, { fields }]) => - fields.map((field) => ( - - )) - )} +
      + {Object.entries(fieldGroups) + .filter(([, { showInAccordion }]) => !showInAccordion) + .flatMap(([, { fields }]) => + fields.map((field) => ( + + )) + )} +
    {Object.entries(fieldGroups) .filter(([, { showInAccordion }]) => showInAccordion) diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx index e531eb72f94caa..19f478c3357840 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/fields_accordion.tsx @@ -113,9 +113,9 @@ export const InnerFieldsAccordion = function InnerFieldsAccordion({ {hasLoaded && (!!fieldsCount ? ( -
    +
      {paginatedFields && paginatedFields.map(renderField)} -
    + ) : ( renderCallout ))} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts index 793f3387e707d3..5f7eddd807c932 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/index.ts @@ -37,12 +37,14 @@ export class IndexPatternDatasource { getIndexPatternDatasource, renameColumns, formatColumn, + counterRate, getTimeScaleFunction, getSuffixFormatter, } = await import('../async_services'); return core.getStartServices().then(([coreStart, { data }]) => { data.fieldFormats.register([getSuffixFormatter(data.fieldFormats.deserialize)]); expressions.registerFunction(getTimeScaleFunction(data)); + expressions.registerFunction(counterRate); expressions.registerFunction(renameColumns); expressions.registerFunction(formatColumn); return getIndexPatternDatasource({ diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts index 3cf9bdc3a92f17..f70ab7ce5f87d0 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts @@ -407,6 +407,86 @@ describe('IndexPattern Data Source', () => { expect(ast.chain[0].arguments.timeFields).toEqual(['timestamp', 'another_datefield']); }); + it('should add time_scale and format function if time scale is set and supported', async () => { + const queryBaseState: IndexPatternBaseState = { + currentIndexPatternId: '1', + layers: { + first: { + indexPatternId: '1', + columnOrder: ['col1', 'col2', 'col3'], + columns: { + col1: { + label: 'Count of records', + dataType: 'number', + isBucketed: false, + sourceField: 'Records', + operationType: 'count', + timeScale: 'h', + }, + col2: { + label: 'Average of bytes', + dataType: 'number', + isBucketed: false, + sourceField: 'bytes', + operationType: 'avg', + timeScale: 'h', + }, + col3: { + label: 'Date', + dataType: 'date', + isBucketed: true, + operationType: 'date_histogram', + sourceField: 'timestamp', + params: { + interval: 'auto', + }, + }, + }, + }, + }, + }; + + const state = enrichBaseState(queryBaseState); + + const ast = indexPatternDatasource.toExpression(state, 'first') as Ast; + const timeScaleCalls = ast.chain.filter((fn) => fn.function === 'lens_time_scale'); + const formatCalls = ast.chain.filter((fn) => fn.function === 'lens_format_column'); + expect(timeScaleCalls).toHaveLength(1); + expect(timeScaleCalls[0].arguments).toMatchInlineSnapshot(` + Object { + "dateColumnId": Array [ + "col3", + ], + "inputColumnId": Array [ + "col1", + ], + "outputColumnId": Array [ + "col1", + ], + "targetUnit": Array [ + "h", + ], + } + `); + expect(formatCalls[0]).toMatchInlineSnapshot(` + Object { + "arguments": Object { + "columnId": Array [ + "col1", + ], + "format": Array [ + "", + ], + "parentFormat": Array [ + "{\\"id\\":\\"suffix\\",\\"params\\":{\\"unit\\":\\"h\\"}}", + ], + }, + "function": "lens_format_column", + "type": "function", + } + `); + }); + it('should rename the output from esaggs when using flat query', () => { const queryBaseState: IndexPatternBaseState = { currentIndexPatternId: '1', @@ -661,19 +741,30 @@ describe('IndexPattern Data Source', () => { it('should skip columns that are being referenced', () => { publicAPI = indexPatternDatasource.getPublicAPI({ state: { + ...enrichBaseState(baseState), layers: { first: { indexPatternId: '1', columnOrder: ['col1', 'col2'], columns: { - // @ts-ignore this is too little information for a real column col1: { + label: 'Sum', dataType: 'number', - }, + isBucketed: false, + + operationType: 'sum', + sourceField: 'test', + params: {}, + } as IndexPatternColumn, col2: { - // @ts-expect-error update once we have a reference operation outside tests + label: 'Cumulative sum', + dataType: 'number', + isBucketed: false, + + operationType: 'cumulative_sum', references: ['col1'], - }, + params: {}, + } as IndexPatternColumn, }, }, }, @@ -728,7 +819,7 @@ describe('IndexPattern Data Source', () => { expect(messages).toHaveLength(1); expect(messages![0]).toEqual({ shortMessage: 'Invalid reference.', - longMessage: 'Field "bytes" has an invalid reference.', + longMessage: '"Foo" has an invalid reference.', }); }); @@ -753,7 +844,7 @@ describe('IndexPattern Data Source', () => { col2: { dataType: 'number', isBucketed: false, - label: 'Foo', + label: 'Foo2', operationType: 'count', // <= invalid sourceField: 'memory', }, @@ -766,7 +857,7 @@ describe('IndexPattern Data Source', () => { expect(messages).toHaveLength(1); expect(messages![0]).toEqual({ shortMessage: 'Invalid references.', - longMessage: 'Fields "bytes", "memory" have invalid reference.', + longMessage: '"Foo", "Foo2" have invalid reference.', }); }); @@ -791,7 +882,7 @@ describe('IndexPattern Data Source', () => { col2: { dataType: 'number', isBucketed: false, - label: 'Foo', + label: 'Foo2', operationType: 'count', // <= invalid sourceField: 'memory', }, @@ -818,11 +909,11 @@ describe('IndexPattern Data Source', () => { expect(messages).toEqual([ { shortMessage: 'Invalid references on Layer 1.', - longMessage: 'Layer 1 has invalid references in fields "bytes", "memory".', + longMessage: 'Layer 1 has invalid references in "Foo", "Foo2".', }, { shortMessage: 'Invalid reference on Layer 2.', - longMessage: 'Layer 2 has an invalid reference in field "source".', + longMessage: 'Layer 2 has an invalid reference in "Foo".', }, ]); }); @@ -897,4 +988,76 @@ describe('IndexPattern Data Source', () => { expect(getErrorMessages).toHaveBeenCalledTimes(1); }); }); + + describe('#updateStateOnCloseDimension', () => { + it('should not update when there are no incomplete columns', () => { + expect( + indexPatternDatasource.updateStateOnCloseDimension!({ + state: { + indexPatternRefs: [], + existingFields: {}, + isFirstExistenceFetch: false, + indexPatterns: expectedIndexPatterns, + layers: { + first: { + indexPatternId: '1', + columnOrder: ['col1'], + columns: { + col1: { + dataType: 'number', + isBucketed: false, + label: 'Foo', + operationType: 'avg', + sourceField: 'bytes', + }, + }, + incompleteColumns: {}, + }, + }, + currentIndexPatternId: '1', + }, + layerId: 'first', + columnId: 'col1', + }) + ).toBeUndefined(); + }); + + it('should clear the incomplete column', () => { + const state = { + indexPatternRefs: [], + existingFields: {}, + isFirstExistenceFetch: false, + indexPatterns: expectedIndexPatterns, + layers: { + first: { + indexPatternId: '1', + columnOrder: [], + columns: {}, + incompleteColumns: { + col1: { operationType: 'avg' as const }, + col2: { operationType: 'sum' as const }, + }, + }, + }, + currentIndexPatternId: '1', + }; + expect( + indexPatternDatasource.updateStateOnCloseDimension!({ + state, + layerId: 'first', + columnId: 'col1', + }) + ).toEqual({ + ...state, + layers: { + first: { + indexPatternId: '1', + columnOrder: [], + columns: {}, + incompleteColumns: { col2: { operationType: 'sum' } }, + }, + }, + }); + }); + }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx index 2c64431867df0f..2937b1cf057603 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.tsx @@ -40,13 +40,13 @@ import { } from './indexpattern_suggestions'; import { - getInvalidFieldsForLayer, + getInvalidColumnsForLayer, getInvalidLayers, isDraggedField, normalizeOperationDataType, } from './utils'; import { LayerPanel } from './layerpanel'; -import { IndexPatternColumn, getErrorMessages } from './operations'; +import { IndexPatternColumn, getErrorMessages, IncompleteColumn } from './operations'; import { IndexPatternField, IndexPatternPrivateState, IndexPatternPersistedState } from './types'; import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; import { DataPublicPluginStart } from '../../../../../src/plugins/data/public'; @@ -78,6 +78,7 @@ export function columnToOperation(column: IndexPatternColumn, uniqueLabel?: stri export * from './rename_columns'; export * from './format_column'; export * from './time_scale'; +export * from './counter_rate'; export * from './suffix_formatter'; export function getIndexPatternDatasource({ @@ -318,6 +319,23 @@ export function getIndexPatternDatasource({ canHandleDrop, onDrop, + // Reset the temporary invalid state when closing the editor, but don't + // update the state if it's not needed + updateStateOnCloseDimension: ({ state, layerId, columnId }) => { + const layer = { ...state.layers[layerId] }; + const current = state.layers[layerId].incompleteColumns || {}; + if (!Object.values(current).length) { + return; + } + const newIncomplete: Record = { ...current }; + delete newIncomplete[columnId]; + return mergeLayer({ + state, + layerId, + newLayer: { ...layer, incompleteColumns: newIncomplete }, + }); + }, + getPublicAPI({ state, layerId }: PublicAPIProps) { const columnLabelMap = indexPatternDatasource.uniqueLabels(state); @@ -372,7 +390,7 @@ export function getIndexPatternDatasource({ } }) .filter(Boolean) as Array<[number, number]>; - const invalidFieldsPerLayer: string[][] = getInvalidFieldsForLayer( + const invalidColumnsForLayer: string[][] = getInvalidColumnsForLayer( invalidLayers, state.indexPatterns ); @@ -382,33 +400,34 @@ export function getIndexPatternDatasource({ return [ ...layerErrors, ...realIndex.map(([filteredIndex, layerIndex]) => { - const fieldsWithBrokenReferences: string[] = invalidFieldsPerLayer[filteredIndex].map( - (columnId) => { - const column = invalidLayers[filteredIndex].columns[ - columnId - ] as FieldBasedIndexPatternColumn; - return column.sourceField; - } - ); + const columnLabelsWithBrokenReferences: string[] = invalidColumnsForLayer[ + filteredIndex + ].map((columnId) => { + const column = invalidLayers[filteredIndex].columns[ + columnId + ] as FieldBasedIndexPatternColumn; + return column.label; + }); if (originalLayersList.length === 1) { return { shortMessage: i18n.translate( 'xpack.lens.indexPattern.dataReferenceFailureShortSingleLayer', { - defaultMessage: 'Invalid {fields, plural, one {reference} other {references}}.', + defaultMessage: + 'Invalid {columns, plural, one {reference} other {references}}.', values: { - fields: fieldsWithBrokenReferences.length, + columns: columnLabelsWithBrokenReferences.length, }, } ), longMessage: i18n.translate( 'xpack.lens.indexPattern.dataReferenceFailureLongSingleLayer', { - defaultMessage: `{fieldsLength, plural, one {Field} other {Fields}} "{fields}" {fieldsLength, plural, one {has an} other {have}} invalid reference.`, + defaultMessage: `"{columns}" {columnsLength, plural, one {has an} other {have}} invalid reference.`, values: { - fields: fieldsWithBrokenReferences.join('", "'), - fieldsLength: fieldsWithBrokenReferences.length, + columns: columnLabelsWithBrokenReferences.join('", "'), + columnsLength: columnLabelsWithBrokenReferences.length, }, } ), @@ -417,18 +436,18 @@ export function getIndexPatternDatasource({ return { shortMessage: i18n.translate('xpack.lens.indexPattern.dataReferenceFailureShort', { defaultMessage: - 'Invalid {fieldsLength, plural, one {reference} other {references}} on Layer {layer}.', + 'Invalid {columnsLength, plural, one {reference} other {references}} on Layer {layer}.', values: { layer: layerIndex, - fieldsLength: fieldsWithBrokenReferences.length, + columnsLength: columnLabelsWithBrokenReferences.length, }, }), longMessage: i18n.translate('xpack.lens.indexPattern.dataReferenceFailureLong', { - defaultMessage: `Layer {layer} has {fieldsLength, plural, one {an invalid} other {invalid}} {fieldsLength, plural, one {reference} other {references}} in {fieldsLength, plural, one {field} other {fields}} "{fields}".`, + defaultMessage: `Layer {layer} has {columnsLength, plural, one {an invalid} other {invalid}} {columnsLength, plural, one {reference} other {references}} in "{columns}".`, values: { layer: layerIndex, - fields: fieldsWithBrokenReferences.join('", "'), - fieldsLength: fieldsWithBrokenReferences.length, + columns: columnLabelsWithBrokenReferences.join('", "'), + columnsLength: columnLabelsWithBrokenReferences.length, }, }), }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts index 263b4646c9feb5..ebac396210a5cb 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern_suggestions.ts @@ -18,7 +18,7 @@ import { IndexPatternColumn, OperationType, } from './operations'; -import { hasField, hasInvalidFields } from './utils'; +import { hasField, hasInvalidColumns } from './utils'; import { IndexPattern, IndexPatternPrivateState, @@ -90,7 +90,7 @@ export function getDatasourceSuggestionsForField( indexPatternId: string, field: IndexPatternField ): IndexPatternSugestion[] { - if (hasInvalidFields(state)) return []; + if (hasInvalidColumns(state)) return []; const layers = Object.keys(state.layers); const layerIds = layers.filter((id) => state.layers[id].indexPatternId === indexPatternId); @@ -331,7 +331,7 @@ function createNewLayerWithMetricAggregation( export function getDatasourceSuggestionsFromCurrentState( state: IndexPatternPrivateState ): Array> { - if (hasInvalidFields(state)) return []; + if (hasInvalidColumns(state)) return []; const layers = Object.entries(state.layers || {}); if (layers.length > 1) { // Return suggestions that reduce the data to each layer individually diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/loader.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/loader.test.ts index adb86253ab28c3..29786d9bc68f36 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/loader.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/loader.test.ts @@ -25,8 +25,6 @@ import { import { createMockedRestrictedIndexPattern, createMockedIndexPattern } from './mocks'; import { documentField } from './document_field'; -jest.mock('./operations'); - const createMockStorage = (lastData?: Record) => { return { get: jest.fn().mockImplementation(() => lastData), diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts index f27fb8d4642f6b..ff900134df9a1a 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/__mocks__/index.ts @@ -6,6 +6,7 @@ const actualOperations = jest.requireActual('../operations'); const actualHelpers = jest.requireActual('../layer_helpers'); +const actualTimeScaleUtils = jest.requireActual('../time_scale_utils'); const actualMocks = jest.requireActual('../mocks'); jest.spyOn(actualOperations.operationDefinitionMap.date_histogram, 'paramEditor'); @@ -23,6 +24,7 @@ export const { getOperationResultType, operationDefinitionMap, operationDefinitions, + getInvalidFieldMessage, } = actualOperations; export const { @@ -39,6 +41,9 @@ export const { isColumnTransferable, getErrorMessages, isReferenced, + resetIncomplete, } = actualHelpers; +export const { adjustTimeScaleLabelSuffix, DEFAULT_TIME_SCALE } = actualTimeScaleUtils; + export const { createMockedReferenceOperation } = actualMocks; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions.test.ts new file mode 100644 index 00000000000000..18aa15badec4ff --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions.test.ts @@ -0,0 +1,215 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + sumOperation, + averageOperation, + countOperation, + counterRateOperation, + movingAverageOperation, + derivativeOperation, +} from './definitions'; +import { getFieldByNameFactory } from '../pure_helpers'; +import { documentField } from '../document_field'; +import { IndexPattern, IndexPatternLayer, IndexPatternField } from '../types'; +import { IndexPatternColumn } from '.'; + +const indexPatternFields = [ + { + name: 'timestamp', + displayName: 'timestampLabel', + type: 'date', + aggregatable: true, + searchable: true, + }, + { + name: 'start_date', + displayName: 'start_date', + type: 'date', + aggregatable: true, + searchable: true, + }, + { + name: 'bytes', + displayName: 'bytes', + type: 'number', + aggregatable: true, + searchable: true, + }, + { + name: 'memory', + displayName: 'memory', + type: 'number', + aggregatable: true, + searchable: true, + }, + { + name: 'source', + displayName: 'source', + type: 'string', + aggregatable: true, + searchable: true, + }, + { + name: 'dest', + displayName: 'dest', + type: 'string', + aggregatable: true, + searchable: true, + }, + documentField, +]; + +const indexPattern = { + id: '1', + title: 'my-fake-index-pattern', + timeFieldName: 'timestamp', + hasRestrictions: false, + fields: indexPatternFields, + getFieldByName: getFieldByNameFactory([...indexPatternFields]), +}; + +const baseColumnArgs: { + previousColumn: IndexPatternColumn; + indexPattern: IndexPattern; + layer: IndexPatternLayer; + field: IndexPatternField; +} = { + previousColumn: { + label: 'Count of records per hour', + timeScale: 'h', + dataType: 'number', + isBucketed: false, + + // Private + operationType: 'count', + sourceField: 'Records', + }, + indexPattern, + layer: { + columns: {}, + columnOrder: [], + indexPatternId: '1', + }, + field: indexPattern.fields[2], +}; + +describe('time scale transition', () => { + it('should carry over time scale and adjust label on operation from count to sum', () => { + expect( + sumOperation.buildColumn({ + ...baseColumnArgs, + }) + ).toEqual( + expect.objectContaining({ + timeScale: 'h', + label: 'Sum of bytes per hour', + }) + ); + }); + + it('should carry over time scale and adjust label on operation from count to calculation', () => { + [counterRateOperation, movingAverageOperation, derivativeOperation].forEach( + (calculationOperation) => { + const result = calculationOperation.buildColumn({ + ...baseColumnArgs, + referenceIds: [], + }); + expect(result.timeScale).toEqual('h'); + expect(result.label).toContain('per hour'); + } + ); + }); + + it('should carry over time scale and adjust label on operation from sum to count', () => { + expect( + countOperation.buildColumn({ + ...baseColumnArgs, + previousColumn: { + label: 'Sum of bytes per hour', + timeScale: 'h', + dataType: 'number', + isBucketed: false, + operationType: 'sum', + sourceField: 'bytes', + }, + }) + ).toEqual( + expect.objectContaining({ + timeScale: 'h', + label: 'Count of records per hour', + }) + ); + }); + + it('should not set time scale if it was not set previously', () => { + expect( + countOperation.buildColumn({ + ...baseColumnArgs, + previousColumn: { + label: 'Sum of bytes', + dataType: 'number', + isBucketed: false, + operationType: 'sum', + sourceField: 'bytes', + }, + }) + ).toEqual( + expect.objectContaining({ + timeScale: undefined, + label: 'Count of records', + }) + ); + }); + + it('should set time scale to default for counter rate', () => { + expect( + counterRateOperation.buildColumn({ + indexPattern, + layer: { + columns: {}, + columnOrder: [], + indexPatternId: '1', + }, + referenceIds: [], + }) + ).toEqual( + expect.objectContaining({ + timeScale: 's', + }) + ); + }); + + it('should adjust label on field change', () => { + expect( + sumOperation.onFieldChange( + { + label: 'Sum of bytes per hour', + timeScale: 'h', + dataType: 'number', + isBucketed: false, + + // Private + operationType: 'sum', + sourceField: 'bytes', + }, + indexPattern.fields[3] + ) + ).toEqual( + expect.objectContaining({ + timeScale: 'h', + label: 'Sum of memory per hour', + }) + ); + }); + + it('should not carry over time scale if target does not support time scaling', () => { + const result = averageOperation.buildColumn({ + ...baseColumnArgs, + }); + expect(result.timeScale).toBeUndefined(); + }); +}); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx new file mode 100644 index 00000000000000..0cfba4cfc739f5 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/counter_rate.tsx @@ -0,0 +1,100 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPatternLayer } from '../../../types'; +import { + buildLabelFunction, + checkForDateHistogram, + dateBasedOperationToExpression, + hasDateField, +} from './utils'; +import { DEFAULT_TIME_SCALE } from '../../time_scale_utils'; +import { OperationDefinition } from '..'; + +const ofName = buildLabelFunction((name?: string) => { + return i18n.translate('xpack.lens.indexPattern.CounterRateOf', { + defaultMessage: 'Counter rate of {name}', + values: { + name: + name ?? + i18n.translate('xpack.lens.indexPattern.incompleteOperation', { + defaultMessage: '(incomplete)', + }), + }, + }); +}); + +export type CounterRateIndexPatternColumn = FormattedIndexPatternColumn & + ReferenceBasedIndexPatternColumn & { + operationType: 'counter_rate'; + }; + +export const counterRateOperation: OperationDefinition< + CounterRateIndexPatternColumn, + 'fullReference' +> = { + type: 'counter_rate', + priority: 1, + displayName: i18n.translate('xpack.lens.indexPattern.counterRate', { + defaultMessage: 'Counter rate', + }), + input: 'fullReference', + selectionStyle: 'field', + requiredReferences: [ + { + input: ['field'], + specificOperations: ['max'], + validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, + }, + ], + getPossibleOperation: () => { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + getDefaultLabel: (column, indexPattern, columns) => { + return ofName(columns[column.references[0]]?.label, column.timeScale); + }, + toExpression: (layer, columnId) => { + return dateBasedOperationToExpression(layer, columnId, 'lens_counter_rate'); + }, + buildColumn: ({ referenceIds, previousColumn, layer }) => { + const metric = layer.columns[referenceIds[0]]; + const timeScale = previousColumn?.timeScale || DEFAULT_TIME_SCALE; + return { + label: ofName(metric?.label, timeScale), + dataType: 'number', + operationType: 'counter_rate', + isBucketed: false, + scale: 'ratio', + references: referenceIds, + timeScale, + params: + previousColumn?.dataType === 'number' && + previousColumn.params && + 'format' in previousColumn.params && + previousColumn.params.format + ? { format: previousColumn.params.format } + : undefined, + }; + }, + isTransferable: (column, newIndexPattern) => { + return hasDateField(newIndexPattern); + }, + getErrorMessage: (layer: IndexPatternLayer) => { + return checkForDateHistogram( + layer, + i18n.translate('xpack.lens.indexPattern.counterRate', { + defaultMessage: 'Counter rate', + }) + ); + }, + timeScalingMode: 'mandatory', +}; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx new file mode 100644 index 00000000000000..9244aaaf90ab76 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/cumulative_sum.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPatternLayer } from '../../../types'; +import { checkForDateHistogram, dateBasedOperationToExpression } from './utils'; +import { OperationDefinition } from '..'; + +const ofName = (name?: string) => { + return i18n.translate('xpack.lens.indexPattern.cumulativeSumOf', { + defaultMessage: 'Cumulative sum rate of {name}', + values: { + name: + name ?? + i18n.translate('xpack.lens.indexPattern.incompleteOperation', { + defaultMessage: '(incomplete)', + }), + }, + }); +}; + +export type CumulativeSumIndexPatternColumn = FormattedIndexPatternColumn & + ReferenceBasedIndexPatternColumn & { + operationType: 'cumulative_sum'; + }; + +export const cumulativeSumOperation: OperationDefinition< + CumulativeSumIndexPatternColumn, + 'fullReference' +> = { + type: 'cumulative_sum', + priority: 1, + displayName: i18n.translate('xpack.lens.indexPattern.cumulativeSum', { + defaultMessage: 'Cumulative sum', + }), + input: 'fullReference', + selectionStyle: 'field', + requiredReferences: [ + { + input: ['field'], + specificOperations: ['count', 'sum'], + validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, + }, + ], + getPossibleOperation: () => { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + getDefaultLabel: (column, indexPattern, columns) => { + return ofName(columns[column.references[0]]?.label); + }, + toExpression: (layer, columnId) => { + return dateBasedOperationToExpression(layer, columnId, 'cumulative_sum'); + }, + buildColumn: ({ referenceIds, previousColumn, layer }) => { + const metric = layer.columns[referenceIds[0]]; + return { + label: ofName(metric?.label), + dataType: 'number', + operationType: 'cumulative_sum', + isBucketed: false, + scale: 'ratio', + references: referenceIds, + params: + previousColumn?.dataType === 'number' && + previousColumn.params && + 'format' in previousColumn.params && + previousColumn.params.format + ? { format: previousColumn.params.format } + : undefined, + }; + }, + isTransferable: () => { + return true; + }, + getErrorMessage: (layer: IndexPatternLayer) => { + return checkForDateHistogram( + layer, + i18n.translate('xpack.lens.indexPattern.cumulativeSum', { + defaultMessage: 'Cumulative sum', + }) + ); + }, +}; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/derivative.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/derivative.tsx new file mode 100644 index 00000000000000..41fe361c7ba9cf --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/derivative.tsx @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPatternLayer } from '../../../types'; +import { + buildLabelFunction, + checkForDateHistogram, + dateBasedOperationToExpression, + hasDateField, +} from './utils'; +import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils'; +import { OperationDefinition } from '..'; + +const ofName = buildLabelFunction((name?: string) => { + return i18n.translate('xpack.lens.indexPattern.derivativeOf', { + defaultMessage: 'Differences of {name}', + values: { + name: + name ?? + i18n.translate('xpack.lens.indexPattern.incompleteOperation', { + defaultMessage: '(incomplete)', + }), + }, + }); +}); + +export type DerivativeIndexPatternColumn = FormattedIndexPatternColumn & + ReferenceBasedIndexPatternColumn & { + operationType: 'derivative'; + }; + +export const derivativeOperation: OperationDefinition< + DerivativeIndexPatternColumn, + 'fullReference' +> = { + type: 'derivative', + priority: 1, + displayName: i18n.translate('xpack.lens.indexPattern.derivative', { + defaultMessage: 'Differences', + }), + input: 'fullReference', + selectionStyle: 'full', + requiredReferences: [ + { + input: ['field'], + validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, + }, + ], + getPossibleOperation: () => { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + getDefaultLabel: (column, indexPattern, columns) => { + return ofName(columns[column.references[0]]?.label, column.timeScale); + }, + toExpression: (layer, columnId) => { + return dateBasedOperationToExpression(layer, columnId, 'derivative'); + }, + buildColumn: ({ referenceIds, previousColumn, layer }) => { + const metric = layer.columns[referenceIds[0]]; + return { + label: ofName(metric?.label, previousColumn?.timeScale), + dataType: 'number', + operationType: 'derivative', + isBucketed: false, + scale: 'ratio', + references: referenceIds, + timeScale: previousColumn?.timeScale, + params: + previousColumn?.dataType === 'number' && + previousColumn.params && + 'format' in previousColumn.params && + previousColumn.params.format + ? { format: previousColumn.params.format } + : undefined, + }; + }, + isTransferable: (column, newIndexPattern) => { + return hasDateField(newIndexPattern); + }, + onOtherColumnChanged: adjustTimeScaleOnOtherColumnChange, + getErrorMessage: (layer: IndexPatternLayer) => { + return checkForDateHistogram( + layer, + i18n.translate('xpack.lens.indexPattern.derivative', { + defaultMessage: 'Differences', + }) + ); + }, + timeScalingMode: 'optional', +}; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/index.ts new file mode 100644 index 00000000000000..30e87aef46a0db --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { counterRateOperation, CounterRateIndexPatternColumn } from './counter_rate'; +export { cumulativeSumOperation, CumulativeSumIndexPatternColumn } from './cumulative_sum'; +export { derivativeOperation, DerivativeIndexPatternColumn } from './derivative'; +export { movingAverageOperation, MovingAverageIndexPatternColumn } from './moving_average'; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx new file mode 100644 index 00000000000000..522899662fbd10 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/moving_average.tsx @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { useState } from 'react'; +import React from 'react'; +import { EuiFormRow } from '@elastic/eui'; +import { EuiFieldNumber } from '@elastic/eui'; +import { FormattedIndexPatternColumn, ReferenceBasedIndexPatternColumn } from '../column_types'; +import { IndexPatternLayer } from '../../../types'; +import { + buildLabelFunction, + checkForDateHistogram, + dateBasedOperationToExpression, + hasDateField, +} from './utils'; +import { updateColumnParam } from '../../layer_helpers'; +import { useDebounceWithOptions } from '../helpers'; +import { adjustTimeScaleOnOtherColumnChange } from '../../time_scale_utils'; +import type { OperationDefinition, ParamEditorProps } from '..'; + +const ofName = buildLabelFunction((name?: string) => { + return i18n.translate('xpack.lens.indexPattern.movingAverageOf', { + defaultMessage: 'Moving average of {name}', + values: { + name: + name ?? + i18n.translate('xpack.lens.indexPattern.incompleteOperation', { + defaultMessage: '(incomplete)', + }), + }, + }); +}); + +export type MovingAverageIndexPatternColumn = FormattedIndexPatternColumn & + ReferenceBasedIndexPatternColumn & { + operationType: 'moving_average'; + params: { + window: number; + }; + }; + +export const movingAverageOperation: OperationDefinition< + MovingAverageIndexPatternColumn, + 'fullReference' +> = { + type: 'moving_average', + priority: 1, + displayName: i18n.translate('xpack.lens.indexPattern.movingAverage', { + defaultMessage: 'Moving Average', + }), + input: 'fullReference', + selectionStyle: 'full', + requiredReferences: [ + { + input: ['field'], + validateMetadata: (meta) => meta.dataType === 'number' && !meta.isBucketed, + }, + ], + getPossibleOperation: () => { + return { + dataType: 'number', + isBucketed: false, + scale: 'ratio', + }; + }, + getDefaultLabel: (column, indexPattern, columns) => { + return ofName(columns[column.references[0]]?.label, column.timeScale); + }, + toExpression: (layer, columnId) => { + return dateBasedOperationToExpression(layer, columnId, 'moving_average', { + window: [(layer.columns[columnId] as MovingAverageIndexPatternColumn).params.window], + }); + }, + buildColumn: ({ referenceIds, previousColumn, layer }) => { + const metric = layer.columns[referenceIds[0]]; + return { + label: ofName(metric?.label, previousColumn?.timeScale), + dataType: 'number', + operationType: 'moving_average', + isBucketed: false, + scale: 'ratio', + references: referenceIds, + timeScale: previousColumn?.timeScale, + params: + previousColumn?.dataType === 'number' && + previousColumn.params && + 'format' in previousColumn.params && + previousColumn.params.format + ? { format: previousColumn.params.format, window: 5 } + : { window: 5 }, + }; + }, + paramEditor: MovingAverageParamEditor, + isTransferable: (column, newIndexPattern) => { + return hasDateField(newIndexPattern); + }, + onOtherColumnChanged: adjustTimeScaleOnOtherColumnChange, + getErrorMessage: (layer: IndexPatternLayer) => { + return checkForDateHistogram( + layer, + i18n.translate('xpack.lens.indexPattern.movingAverage', { + defaultMessage: 'Moving Average', + }) + ); + }, + timeScalingMode: 'optional', +}; + +function MovingAverageParamEditor({ + state, + setState, + currentColumn, + layerId, +}: ParamEditorProps) { + const [inputValue, setInputValue] = useState(String(currentColumn.params.window)); + + useDebounceWithOptions( + () => { + if (inputValue === '') { + return; + } + const inputNumber = Number(inputValue); + setState( + updateColumnParam({ + state, + layerId, + currentColumn, + paramName: 'window', + value: inputNumber, + }) + ); + }, + { skipFirstRender: true }, + 256, + [inputValue] + ); + return ( + + ) => setInputValue(e.target.value)} + /> + + ); +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.ts new file mode 100644 index 00000000000000..bac45f683e4449 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/calculations/utils.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { i18n } from '@kbn/i18n'; +import { ExpressionFunctionAST } from '@kbn/interpreter/common'; +import { TimeScaleUnit } from '../../../time_scale'; +import { IndexPattern, IndexPatternLayer } from '../../../types'; +import { adjustTimeScaleLabelSuffix } from '../../time_scale_utils'; +import { ReferenceBasedIndexPatternColumn } from '../column_types'; + +export const buildLabelFunction = (ofName: (name?: string) => string) => ( + name?: string, + timeScale?: TimeScaleUnit +) => { + const rawLabel = ofName(name); + return adjustTimeScaleLabelSuffix(rawLabel, undefined, timeScale); +}; + +/** + * Checks whether the current layer includes a date histogram and returns an error otherwise + */ +export function checkForDateHistogram(layer: IndexPatternLayer, name: string) { + const buckets = layer.columnOrder.filter((colId) => layer.columns[colId].isBucketed); + const hasDateHistogram = buckets.some( + (colId) => layer.columns[colId].operationType === 'date_histogram' + ); + if (hasDateHistogram) { + return undefined; + } + return [ + i18n.translate('xpack.lens.indexPattern.calculations.dateHistogramErrorMessage', { + defaultMessage: + '{name} requires a date histogram to work. Choose a different function or add a date histogram.', + values: { + name, + }, + }), + ]; +} + +export function hasDateField(indexPattern: IndexPattern) { + return indexPattern.fields.some((field) => field.type === 'date'); +} + +/** + * Creates an expression ast for a date based operation (cumulative sum, derivative, moving average, counter rate) + */ +export function dateBasedOperationToExpression( + layer: IndexPatternLayer, + columnId: string, + functionName: string, + additionalArgs: Record = {} +): ExpressionFunctionAST[] { + const currentColumn = (layer.columns[columnId] as unknown) as ReferenceBasedIndexPatternColumn; + const buckets = layer.columnOrder.filter((colId) => layer.columns[colId].isBucketed); + const dateColumnIndex = buckets.findIndex( + (colId) => layer.columns[colId].operationType === 'date_histogram' + )!; + buckets.splice(dateColumnIndex, 1); + + return [ + { + type: 'function', + function: functionName, + arguments: { + by: buckets, + inputColumnId: [currentColumn.references[0]], + outputColumnId: [columnId], + outputColumnName: [currentColumn.label], + ...additionalArgs, + }, + }, + ]; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx index fd3ca4319669ed..2dc3946c62a09c 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/cardinality.tsx @@ -8,6 +8,8 @@ import { i18n } from '@kbn/i18n'; import { OperationDefinition } from './index'; import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; +import { getInvalidFieldMessage } from './helpers'; + const supportedTypes = new Set(['string', 'boolean', 'number', 'ip', 'date']); const SCALE = 'ratio'; @@ -42,6 +44,8 @@ export const cardinalityOperation: OperationDefinition + getInvalidFieldMessage(layer.columns[columnId] as FieldBasedIndexPatternColumn, indexPattern), isTransferable: (column, newIndexPattern) => { const newField = newIndexPattern.getFieldByName(column.sourceField); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts index 13bddc0c2ec269..de3f158cca620d 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/column_types.ts @@ -5,18 +5,21 @@ */ import type { Operation } from '../../../types'; +import { TimeScaleUnit } from '../../time_scale'; +import type { OperationType } from '../definitions'; export interface BaseIndexPatternColumn extends Operation { // Private operationType: string; customLabel?: boolean; + timeScale?: TimeScaleUnit; } // Formatting can optionally be added to any column // export interface FormattedIndexPatternColumn extends BaseIndexPatternColumn { export type FormattedIndexPatternColumn = BaseIndexPatternColumn & { params?: { - format: { + format?: { id: string; params?: { decimals: number; @@ -37,6 +40,6 @@ export interface ReferenceBasedIndexPatternColumn // Used to store the temporary invalid state export interface IncompleteColumn { - operationType?: string; + operationType?: OperationType; sourceField?: string; } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx index 30f64929fc1afd..02a69ad8e550f8 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx @@ -8,6 +8,11 @@ import { i18n } from '@kbn/i18n'; import { OperationDefinition } from './index'; import { FormattedIndexPatternColumn, FieldBasedIndexPatternColumn } from './column_types'; import { IndexPatternField } from '../../types'; +import { getInvalidFieldMessage } from './helpers'; +import { + adjustTimeScaleLabelSuffix, + adjustTimeScaleOnOtherColumnChange, +} from '../time_scale_utils'; const countLabel = i18n.translate('xpack.lens.indexPattern.countOf', { defaultMessage: 'Count of records', @@ -25,10 +30,12 @@ export const countOperation: OperationDefinition + getInvalidFieldMessage(layer.columns[columnId] as FieldBasedIndexPatternColumn, indexPattern), onFieldChange: (oldColumn, field) => { return { ...oldColumn, - label: field.displayName, + label: adjustTimeScaleLabelSuffix(field.displayName, undefined, oldColumn.timeScale), sourceField: field.name, }; }, @@ -41,15 +48,16 @@ export const countOperation: OperationDefinition countLabel, + getDefaultLabel: (column) => adjustTimeScaleLabelSuffix(countLabel, undefined, column.timeScale), buildColumn({ field, previousColumn }) { return { - label: countLabel, + label: adjustTimeScaleLabelSuffix(countLabel, undefined, previousColumn?.timeScale), dataType: 'number', operationType: 'count', isBucketed: false, scale: 'ratio', sourceField: field.name, + timeScale: previousColumn?.timeScale, params: previousColumn?.dataType === 'number' && previousColumn.params && @@ -59,6 +67,7 @@ export const countOperation: OperationDefinition ({ id: columnId, enabled: true, @@ -69,4 +78,5 @@ export const countOperation: OperationDefinition { return true; }, + timeScalingMode: 'optional', }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx index efac9c151a4353..ca426fb53a3abf 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/date_histogram.tsx @@ -23,6 +23,7 @@ import { updateColumnParam } from '../layer_helpers'; import { OperationDefinition } from './index'; import { FieldBasedIndexPatternColumn } from './column_types'; import { IndexPatternAggRestrictions, search } from '../../../../../../../src/plugins/data/public'; +import { getInvalidFieldMessage } from './helpers'; const { isValidInterval } = search.aggs; const autoInterval = 'auto'; @@ -46,6 +47,8 @@ export const dateHistogramOperation: OperationDefinition< }), input: 'field', priority: 5, // Highest priority level used + getErrorMessage: (layer, columnId, indexPattern) => + getInvalidFieldMessage(layer.columns[columnId] as FieldBasedIndexPatternColumn, indexPattern), getPossibleOperationForField: ({ aggregationRestrictions, aggregatable, type }) => { if ( type === 'date' && diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.test.tsx index 2fb2bef7f97879..8bceac180f0eb4 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.test.tsx @@ -5,7 +5,7 @@ */ import React, { MouseEventHandler } from 'react'; -import { shallow } from 'enzyme'; +import { shallow, mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { EuiPopover, EuiLink } from '@elastic/eui'; import { createMockedIndexPattern } from '../../../mocks'; @@ -28,8 +28,7 @@ const defaultProps = { Button: ({ onClick }: { onClick: MouseEventHandler }) => ( trigger ), - isOpenByCreation: true, - setIsOpenByCreation: jest.fn(), + initiallyOpen: true, }; describe('filter popover', () => { @@ -39,16 +38,14 @@ describe('filter popover', () => { }, })); it('should be open if is open by creation', () => { - const setIsOpenByCreation = jest.fn(); - const instance = shallow( - - ); + const instance = mount(); + instance.update(); expect(instance.find(EuiPopover).prop('isOpen')).toEqual(true); act(() => { instance.find(EuiPopover).prop('closePopover')!(); }); instance.update(); - expect(setIsOpenByCreation).toHaveBeenCalledWith(false); + expect(instance.find(EuiPopover).prop('isOpen')).toEqual(false); }); it('should call setFilter when modifying QueryInput', () => { const setFilter = jest.fn(); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.tsx index b9d9d6306b9aef..df01b8e4b4afcd 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/filters/filter_popover.tsx @@ -5,7 +5,7 @@ */ import './filter_popover.scss'; -import React, { MouseEventHandler, useState } from 'react'; +import React, { MouseEventHandler, useEffect, useState } from 'react'; import useDebounce from 'react-use/lib/useDebounce'; import { EuiPopover, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -19,23 +19,24 @@ export const FilterPopover = ({ setFilter, indexPattern, Button, - isOpenByCreation, - setIsOpenByCreation, + initiallyOpen, }: { filter: FilterValue; setFilter: Function; indexPattern: IndexPattern; Button: React.FunctionComponent<{ onClick: MouseEventHandler }>; - isOpenByCreation: boolean; - setIsOpenByCreation: Function; + initiallyOpen: boolean; }) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const inputRef = React.useRef(); + // set popover open on start to work around EUI bug + useEffect(() => { + setIsPopoverOpen(initiallyOpen); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const closePopover = () => { - if (isOpenByCreation) { - setIsOpenByCreation(false); - } if (isPopoverOpen) { setIsPopoverOpen(false); } @@ -59,15 +60,12 @@ export const FilterPopover = ({ data-test-subj="indexPattern-filters-existingFilterContainer" anchorClassName="eui-fullWidth" panelClassName="lnsIndexPatternDimensionEditor__filtersEditor" - isOpen={isOpenByCreation || isPopoverOpen} + isOpen={isPopoverOpen} ownFocus closePopover={() => closePopover()} button={